问题 1 - 我正在阅读文档,但对措辞有些困惑。它说:
NodePort 服务类型是否仍然使用 ClusterIP
但只是在对外部客户端开放的不同端口?那么在这种情况下 <NodeIP>:<NodePort>
与 <ClusterIP>:<NodePort>
相同吗?
或者 NodeIP
实际上是您运行 kubectl get nodes
时找到的 IP,而不是用于 ClusterIP 服务类型的虚拟 IP?
问题 2 - 同样在下面链接的图表中:
Client
在 Node
里面有什么特别的原因吗?我认为在 ClusterIP 服务类型的情况下它需要在 Cluster
内?
如果为 NodePort 绘制了相同的图表,将客户端完全绘制在 Node
和 Cluster
之外是否有效,还是我完全错过了这一点?
最佳答案
ClusterIP 公开以下内容:
spec.clusterIp:spec.ports[*].port
您只能在集群内部访问此服务。它可以从它的
spec.clusterIp
端口访问。如果设置了 spec.ports[*].targetPort
,它将从端口路由到目标端口。调用 kubectl get services
时得到的 CLUSTER-IP 是集群内部分配给该服务的 IP。NodePort 公开以下内容:
<NodeIP>:spec.ports[*].nodePort
spec.clusterIp:spec.ports[*].port
如果您从节点的外部 IP 在 nodePort 上访问此服务,它会将请求路由到
spec.clusterIp:spec.ports[*].port
,然后将其路由到您的 spec.ports[*].targetPort
(如果已设置)。此服务也可以通过与 ClusterIP 相同的方式访问。您的 NodeIP 是节点的外部 IP 地址。您无法从
spec.clusterIp:spec.ports[*].nodePort
访问您的服务。LoadBalancer 公开以下内容:
spec.loadBalancerIp:spec.ports[*].port
<NodeIP>:spec.ports[*].nodePort
spec.clusterIp:spec.ports[*].port
您可以从负载均衡器的 IP 地址访问此服务,它将您的请求路由到 nodePort,然后将请求路由到 clusterIP 端口。您也可以像访问 NodePort 或 ClusterIP 服务一样访问此服务。
关于kubernetes - Kubernetes 中的 ClusterIP、NodePort 和 LoadBalancer 服务类型有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41509439/