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

时间:2016-07-12 09:07:01

标签: docker kubernetes google-kubernetes-engine

我正在跟随Kubernetes入门指南中的Hello, World example

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

要部署的container是一个基本的nodejs http服务器,它侦听端口8080。

现在我跑了 kubectl run hello-node --image <image-name> --port 8080
它会创建poddeployment,在其中一个节点上部署pod

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

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

2 个答案:

答案 0 :(得分:7)

#kubernetes-users channel获得一些关于松弛的帮助:

  1. kubectl run ...中指定的端口是pod的端口。每个pod都有其唯一的IP地址。所以,没有端口冲突。
  2. 除非您将其公开为service
  3. ,否则广告将不会投放流量
  4. 通过运行service公开kubectl expose ...会在每个 NodePort上分配node(范围在30000-32000之间)。每个服务的端口必须是唯一的。
  5. 如果某个节点有多个广告连播kube-proxy,则会平衡这些广告连播之间的流量。
  6. 此外,当我从浏览器访问我的服务时,我能够看到所有4个pod中的日志,因此所有4个pod都提供了流量。

答案 1 :(得分:1)

您的pod暴露的端口与节点上的物理端口之间存在差异。这些需要通过例如kubernetes service或loadBalancer进行链接,如hello-world文档中进一步讨论http://kubernetes.io/docs/hellonode/#allow-external-traffic