提问者:小点点

库伯内特斯:当每个pod暴露一个端口时,节点中的多个pod


我跟随库伯内特斯入门指南中的你好,世界示例。

在该示例中,在Google Container Engine上创建了一个具有3个节点/实例的集群。

要部署的容器是一个基本的nodejs超文本传输协议服务器,它侦听8080端口。

现在当我运行
kubectl时运行hello-node--image

运行
kubectl规模部署hello-node--副本=4
命令会将pod数量增加到4。

但是由于每个pod都暴露了8080端口,它不会在部署两个节点的pod上创建端口冲突吗?当我做kubernetes获取pod时,我可以看到4个pod,但是在这种情况下会有什么行为?


共2个答案

匿名用户

在slack上的#kubernetes-user频道中获得了一些帮助:

  1. kubectl run…中指定的端口是pod的端口。每个pod都有其唯一的IP地址。因此,没有端口冲突。
  2. pod不会提供流量,除非您将它们公开为服务
  3. 通过运行kubectl公开…公开服务在每个节点上分配一个NodePort(范围在30000-32000之间)。这个端口对于每个服务都必须是唯一的。
  4. 如果一个节点有多个pod库贝-proxy平衡这些pod之间的流量。

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

匿名用户

pod公开的端口和节点上的物理端口是有区别的。这些端口需要通过例如kubernetes服务或loadBalancer进行链接,如hello-world留档http://kubernetes.io/docs/hellonode/#allow-external-traffic