我已经使用下面的命令创建了 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
我不清楚需要什么,因为 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