Kubernetes 创建服务以通过 NodePort 在计划的节点上公开单个 Pod

问题描述 投票:0回答:1

我已经使用下面的命令创建了 Deployment

kubectl create deployment nginx --image=nginx --port=80 --replicas=3

我正在寻找有关如何创建服务以通过计划节点上的 NodePort 公开单个 Pod 的答案。

此命令将不起作用:因为这会将请求发送到其中一个 pod

kubectl expose deploy nginx --name nginx-service --target-port=80 --type=NodePort

有什么东西可以自动为每个 pod 创建 3 个独立的服务吗?

我试过了,但这不是预期的结果

kubectl expose deploy nginx --name nginx-service --target-port=80 --type=NodePort
kubernetes kubernetes-service
1个回答
0
投票

我不清楚需要什么,因为 NodePort 打开您在集群的所有节点上定义的端口,所以如果您有 3 个副本(3 个 Pod),您可以通过NODE-IP:NODE-PORT(显然是Pod所在节点的NODE-IP)。

如果将类型字段设置为 NodePort,Kubernetes 控制平面会从 --service-node-port-range 标志指定的范围内分配一个端口(默认值:30000-32767)。每个节点将该端口(每个节点上的相同端口号)代理到您的服务中。

https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/

如果你想访问 NodePort 服务,如果你使用 minikube,稍微改变一下: https://minikube.sigs.k8s.io/docs/handbook/accessing/#getting-the-nodeport-using-the-service-command

© www.soinside.com 2019 - 2024. All rights reserved.