如果我运行
kubectl get services
以获得简单的演示服务,我会得到以下响应:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
demo-service LoadBalancer 10.104.48.115 <pending> 80:32264/TCP 18m
端口列表中的 : 是什么意思?
对演示服务的外部访问将通过端口 32264 进行,该端口连接到 docker 容器上的端口 80。
意思是
80:32264/TCP
这是,
您有演示服务,它将 80 端口指向您的 pod,32264/TCP 意味着您可以使用 NodeIP 从外部网络(集群外部)访问在 pod 中运行的应用程序。并且
:
会将这些端口分开,以便您了解哪些是用于访问 pod 的外部端口和内部端口。
这意味着您的服务
demo-service
可以从其他容器通过端口 80 访问,也可以从“外部”世界通过 NodePort 32264 访问。
在这种特殊情况下,它将由负载均衡器访问,负载均衡器由某种 Kubernetes 控制器配置/管理。
虽然这已经很旧了,但我想写一个不同的答案。
对于Loadbalancer类型的服务,:之前的端口是你的服务暴露的端口,通常由admin在服务yaml文件中指定。 ‘:’后面的端口是节点上的随机NodePort,通常由系统分配。
这意味着服务
demo-service
可以在每个工作节点外部 IP 上的端口 32425
上访问(如 kubectl get nodes
所列)。该端口称为 NodePort
中的
kubectl describe service demo-service
在集群内部,可以通过端口
80
访问相同的服务。该端口简称为 Port
中的
kubectl describe service demo-service
请注意,与 Blokje5 的答案相反,通常这两个端口与服务该服务的 Pod/容器正在侦听的端口不同(
TargetPort
中的 kubectl describe service demo-service
)