我有一个在所有节点上运行的守护进程配置。每个 pod 都在端口 34567 上侦听。我想从不同节点上的其他 pod 与这个 pod 通信。我怎样才能做到这一点?
问问题
57 次
3 回答
2
找到目标Pod的IP地址如下图
controlplane $ k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-fb8b8dccf-42pq8 1/1 Running 1 5m43s 10.88.0.4 node01 <none> <none>
coredns-fb8b8dccf-f9n5x 1/1 Running 1 5m43s 10.88.0.3 node01 <none> <none>
etcd-controlplane 1/1 Running 0 4m38s 172.17.0.23 controlplane <none> <none>
katacoda-cloud-provider-74dc75cf99-2jrpt 1/1 Running 3 5m42s 10.88.0.2 node01 <none> <none>
kube-apiserver-controlplane 1/1 Running 0 4m33s 172.17.0.23 controlplane <none> <none>
kube-controller-manager-controlplane 1/1 Running 0 4m45s 172.17.0.23 controlplane <none> <none>
kube-keepalived-vip-smkdc 1/1 Running 0 5m27s 172.17.0.26 node01 <none> <none>
kube-proxy-8sxkt 1/1 Running 0 5m27s 172.17.0.26 node01 <none> <none>
kube-proxy-jdcqc 1/1 Running 0 5m43s 172.17.0.23 controlplane <none> <none>
kube-scheduler-controlplane 1/1 Running 0 4m47s 172.17.0.23 controlplane <none> <none>
weave-net-8cxqg 2/2 Running 1 5m27s 172.17.0.26 node01 <none> <none>
weave-net-s4tcj 2/2 Running 1 5m43s 172.17.0.23 controlplane <none> <none>
下一个“exec”进入原始 pod - 在我的示例中为 kube-proxy-8sxkt
kubectl -n kube-system exec -it kube-proxy-8sxkt sh
接下来,您将使用目标 pod 的 IP 和端口(10256 - 我的示例)号进行连接。请注意,如果您的原始容器的映像不包含应用程序,您可能必须安装 curl/telnet
# curl telnet://172.17.0.23:10256
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Connection: close
于 2021-12-26T17:46:59.097 回答
0
POD 地址 (IP) 是一个不错的选择,您可以使用它,除非您知道 POD IP 由于部署和扩展更改可能会不时更改。
如果您有固定数量的节点并且那里没有太多的自动缩放,我建议通过使用服务类型节点端口公开它来尝试守护程序 集。
如果您想将您的 POD 与特定 POD连接,您可以使用调度POD的节点 IP并使用节点端口服务。
Node IP:Node port
阅读更多:https ://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
如果您不想连接到特定的 POD,并且任何守护程序集 副本都可以与之连接,则可以使用服务名称将 POD 相互连接。
my-svc.my-namespace.svc.cluster-domain.example
阅读有关服务和 POD DNS 的更多信息
https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
于 2021-12-26T17:58:21.127 回答