Docker for Mac(Edge) Kubernetes LoadBalancer疑问:32455端口是什么?
Kubernetes LoadBalancer服务中32455端口的含义
这个问题我之前在Docker Desktop的Kubernetes环境里也碰到过,刚好给你解释清楚:
先回顾下你提供的配置和命令输出:
你的Service配置:
apiVersion: v1 kind: Service metadata: name: nginx labels: run: nginx spec: ports: - port: 9999 targetPort: 80 selector: run: nginx type: LoadBalancer
执行kubectl get service后的结果:
nginx LoadBalancer 10.96.128.253 localhost 9999:32455/TCP 2s
32455端口是什么?
这个32455是Kubernetes自动分配的NodePort端口,背后的原因是这样的:
- 在云厂商的Kubernetes集群里,
LoadBalancer类型的服务会请求云平台创建一个外部负载均衡器,自动分配外部IP来暴露服务;但在Docker Desktop(包括Edge版)这种本地开发环境里,没有真正的外部负载均衡器可以依赖,所以Kubernetes会自动降级为NodePort模式来暴露服务。 - 你看到的
9999:32455/TCP格式,拆解来看:9999是Service的ClusterIP端口(对应你配置里的port字段),集群内部的Pod可以通过这个端口访问服务;32455是NodePort,它是Kubernetes从默认的端口范围(默认是30000-32767)里自动分配的,你可以直接通过localhost:32455访问到你的Nginx服务,和用localhost:9999的效果完全一致——因为本地的LoadBalancer实现把这两个端口都映射到了后端Pod的80端口(也就是你配置里的targetPort)。
内容的提问来源于stack exchange,提问作者Chris G.
相关产品推荐
相关产品推荐

