首页 文章

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

提问于
浏览
5

我跟随着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个 beans 荚,不过在这种情况下会有什么样的行为?

2 回答

  • 1

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

    • kubectl run ... 中指定的端口是 pod 的端口 . 每个pod都有其唯一的IP地址 . 所以,没有端口冲突 .

    • 除非您将其公开为 service ,否则广告将不会投放流量 .

    • 通过运行 kubectl expose ... 公开 service 会在每个 node 上分配 NodePort (范围在30000-32000之间) . 每个服务的此端口必须是唯一的 .

    • 如果节点有多个pod kube-proxy balancer 这些pod之间的流量 .

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

  • 5

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

相关问题