Kubernetes Kube expose,对任何节点ip的请求似乎都命中了正确的pod

Kubernetes Kube expose,对任何节点ip的请求似乎都命中了正确的pod,kubernetes,Kubernetes,我一直在摆弄Kubernetes,有一个由centos主机(3个节点,1个主节点)组成的小型实验室集群正在运行 $ kubectl get nodes NAME STATUS AGE centos-kube-minion-1 Ready 2d centos-kube-minion-2 Ready 2d centos-kube-minion-3 Ready 2d 我已经设法在我的lab env()中学习

我一直在摆弄Kubernetes,有一个由centos主机(3个节点,1个主节点)组成的小型实验室集群正在运行

$ kubectl get nodes
NAME                           STATUS    AGE
centos-kube-minion-1   Ready     2d
centos-kube-minion-2   Ready     2d
centos-kube-minion-3   Ready     2d
我已经设法在我的lab env()中学习了交互式教程

我已经讲到了演示应用程序的外部公开部分(模块4第1步,共3步):

Kubectl将输出描述如下:

$ kubectl describe services/kubernetes-bootcamp
Name:                   kubernetes-bootcamp
Namespace:              default
Labels:                 run=kubernetes-bootcamp
Selector:               run=kubernetes-bootcamp
Type:                   NodePort
IP:                     10.254.224.254
Port:                   <unset> 8080/TCP
NodePort:               <unset> 31686/TCP
Endpoints:              172.30.3.2:8080
Session Affinity:       None
No events.
实际吊舱在minion-3上运行:

   $ kubectl describe pod kubernetes-bootcamp-428840972-ukl15
    Name:           kubernetes-bootcamp-428840972-ukl15
    Namespace:      default
    Node:           centos-kube-minion-3/10.10.0.237
然而,(这里是实际的问题),当我卷曲任何DNS条目和暴露的端口时,我点击了应用程序:

$ curl centos-kube-minion-1:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1

$ curl centos-kube-minion-2:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1

$ curl centos-kube-minion-3:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
我还对实际IP进行了调整,以确保DNS条目没有发生任何疯狂的事情

$ curl 10.10.0.236:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
$ curl 10.10.0.237:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
$ curl 10.10.0.232:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1

所以我的问题是:这是否如预期的那样有效(我怀疑是的)?(如果是,有人能解释/链接到魔法解释吗?

是的,它按预期工作:
nodePort
在同一端口上的所有节点上公开服务

基本上,服务是运行应用程序的Pod的代理。KubeProxy在每个节点上运行,因此当您指定nodePort时,每个节点都会收到通知,将来自定义端口的流量重定向到服务,服务通过API知道Pod的位置


是,它按预期工作:
nodePort
在同一端口上的所有节点上公开服务

基本上,服务是运行应用程序的Pod的代理。KubeProxy在每个节点上运行,因此当您指定nodePort时,每个节点都会收到通知,将来自定义端口的流量重定向到服务,服务通过API知道Pod的位置

$ curl centos-kube-minion-1:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1

$ curl centos-kube-minion-2:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1

$ curl centos-kube-minion-3:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
$ curl 10.10.0.236:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
$ curl 10.10.0.237:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1
$ curl 10.10.0.232:31686
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-428840972-ukl15 | v=1