Kubernetes:每个pod暴露端口时节点中的多个pod

Jat*_*tin 6 docker kubernetes google-kubernetes-engine

我跟随着Kubernetes入门指南中的Hello,World示例.

在该示例中,在Google容器引擎上创建了具有3个节点/实例的群集.

container要部署的是一个基本的HTTP的NodeJS服务器,侦听端口8080.

现在,当我运行
kubectl run hello-node --image <image-name> --port 8080
它时创建一个pod和一个deployment,pod在一个节点上部署.

运行该
kubectl scale deployment hello-node --replicas=4
命令会将pod的数量增加到4.

但由于每个pod都暴露了8080端口,它是否会在部署两个节点的pod上产生端口冲突?我可以看到4个豆荚kubernetes get pods,不过在这种情况下会有什么样的行为?

Jat*_*tin 8

在松弛的#kubernetes-users 渠道中得到一些帮助:

  1. 指定的端口kubectl run ...是a 的端口pod.每个pod都有其唯一的IP地址.所以,没有端口冲突.
  2. 除非您将它们暴露为一个,否则它们将不会提供流量service.
  3. 曝光service通过运行kubectl expose ...分配一个NodePort上(这是在范围30000-32000) node.每个服务的此端口必须是唯一的.
  4. 如果某个节点有多个pod,则会kube-proxy平衡这些pod之间的流量.

此外,当我从浏览器访问我的服务时,我能够看到所有4个pod中的日志,因此从所有4个pod中提供了流量.