K8s 端口

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 节点的宿主机开启一个端口,用于应用集群外部访问
    • nodePortclusterIP 的映射,是 kube-proxy 实现的。

参考 #


本文访问量

本站总访问量

本站总访客数 人次