K8s 端口 #
- service 的端口
port
:负责处理对内的通信,- 访问方式:
clusterIP:port
或者externalIP:port
- externalIP 不归 kubernetes 管,cluster administrator 自己负责
- 访问方式:
nodePort
:在 node 上,负责对外通信- 访问方式:
NodeIP:NodePort
- 访问方式:
pod
的端口targetPort
:在 pod 上- 从 port 和 nodePort 上来的流量,经过 kube-proxy 流入到后端 pod 的 targetPort 上,最后进入容器
- 容器的端口
containerPort
:在容器上,用于被 pod 绑定- targetPort 和 containerPort 是一致的
- 是可选的,仅仅是提示信息
- 容器中任何监听
0.0.0.0
的端口,都会暴露出来 - 无法被更新
- 主机的端口
hostPort
:容器暴露的端口映射到的主机端口- 尽量不要为 Pod 指定 hostPort
- 将 Pod 绑定到 hostPort 时,它会限制 Pod 可以调度的位置数,因为每个
<hostIP, hostPort, protocol>
组合必须是唯一的 - 如果您没有明确指定 hostIP 和 protocol,Kubernetes 将使用
0.0.0.0
作为默认 hostIP 和 TCP 作为默认 protocol
pod 模板
指定端口
#
作用类似于 docker -p 选项
containerPort
: 容器需要暴露的端口hostPort
: 容器暴露的端口映射到的主机端口
service
指定端口
#
service (ClusterIP) #
port
: service 中clusterIP
对应的端口targetPort
:clusterIP
作为负载均衡,后端目标实例 (容器) 的端口
service (NodePort) #
nodePort
: cluster ip 只能集群内部访问- 范围是
30000-32767
,这个值在 API server 的配置文件中,用--service-node-port-range
定义 - 源与目标需要满足两个条件:
kube-proxy
正常运行- 跨主机容器网络通信正常
nodePort
会在每个 kubelet 节点的宿主机开启一个端口,用于应用集群外部访问nodePort
到clusterIP
的映射,是kube-proxy
实现的。
- 范围是
参考 #
- 配置最佳实践
- 从外部访问 Kubernetes 中的 Pod
- 关于在 kubenretes 中暴露 Pod 及服务的 5 种方式
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。