0

我有一个在所有节点上运行的守护进程配置。每个 pod 都在端口 34567 上侦听。我想从不同节点上的其他 pod 与这个 pod 通信。我怎样才能做到这一点?

4

3 回答 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 调用。

在此处输入图像描述

注意:这个IP只能在k8s集群中使用。

于 2021-12-26T17:48:13.177 回答
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 回答