【问题标题】:how to communicate with daemonset pod from another pod in another node?如何与另一个节点中另一个 pod 的 daemonset pod 通信?
【发布时间】:2022-01-25 22:06:03
【问题描述】:

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

【问题讨论】:

  • 你试过使用pod地址吗?
  • 嗨@AndyDrewObruchkov,以下任何答案都回答了您的问题吗?如果是,请consider accepting one of them

标签: kubernetes service daemonset


【解决方案1】:

如下图找到目标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

【讨论】:

    【解决方案2】:

    你可以通过 pod 的 IP 调用。

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

    【讨论】:

      【解决方案3】:

      POD 地址 (IP) 是一个不错的选择,您可以使用它,除非您知道 POD IP 由于部署扩展可能会不时更改变化。

      如果您使用 service 类型 Node port 公开它,我建议尝试 Daemon set有固定数量的 Node 并且没有太多的自动缩放。

      如果您想将您的 POD 与一个特定的 POD 连接,您可以使用 Node IP POD 调度 并使用 节点端口 服务。

      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/

      【讨论】:

        猜你喜欢
        • 2019-10-27
        • 2019-12-17
        • 2021-06-19
        • 2019-02-08
        • 2021-09-13
        • 2020-09-04
        • 2018-10-16
        • 2021-12-30
        • 1970-01-01
        相关资源
        最近更新 更多