【发布时间】:2020-12-04 17:06:18
【问题描述】:
我有一个包含 2 个主节点和 3 个工作节点的 Kubernetes 集群。我已经使用 HELM 安装了运行 3 个 consul-servers 和 5 个 consul-clients 的 consul setup。
以下是 consul 服务器 pod 和 consul 客户端 pod 在 Kubernetes 节点上的放置方式:
[root@k8masterg2m1 autoinstall]# kubectl get po -o wide | grep consul
consul-consul-4lxtr 1/1 Running 0 103m 192.168.139.139 k8masterg2m1
consul-consul-6wv9w 1/1 Running 0 103m 192.168.118.215 k8workerg2w3
consul-consul-pc562 1/1 Running 0 103m 192.168.108.162 k8workerg2w2
consul-consul-server-0 1/1 Running 0 107m 192.168.118.214 k8workerg2w3
consul-consul-server-1 1/1 Running 0 9m15s 192.168.227.91 k8workerg2w1
consul-consul-server-2 1/1 Running 0 107m 192.168.108.161 k8workerg2w2
consul-consul-tg4kz 1/1 Running 0 103m 192.168.139.72 k8masterg2m2
consul-consul-tj7h5 1/1 Running 0 103m 192.168.227.90 k8workerg2w1
另一方面,我在本地 VM 上安装了 consul 客户端,该 VM 与 Kubernetes 节点位于同一网络上。
从运行在 Kubernetes 中的 consul 服务器 pod,我使用以下命令加入本地 VM(10.0.20.102)。
/ # consul join 10.0.20.102
Successfully joined cluster by contacting 1 nodes.
我可以在 Kubernetes 的 VM 和 consul pod 中看到以下输出:
/ # consul members
Node Address Status Type Build Protocol DC Segment
consul-consul-server-0 192.168.118.214:8301 alive server 1.8.1 2 dc1
consul-consul-server-1 192.168.227.91:8301 alive server 1.8.1 2 dc1
consul-consul-server-2 192.168.108.161:8301 alive server 1.8.1 2 dc1
k8masterg1m2 10.0.20.102:8301 alive client 1.8.1 2 dc1
k8masterg2m1 192.168.139.139:8301 alive client 1.8.1 2 dc1
k8masterg2m2 192.168.139.72:8301 alive client 1.8.1 2 dc1
k8workerg2w1 192.168.227.90:8301 alive client 1.8.1 2 dc1
k8workerg2w2 192.168.108.162:8301 alive client 1.8.1 2 dc1
k8workerg2w3 192.168.118.215:8301 alive client 1.8.1 2 dc1
现在,当我尝试在 Kubernetes consul pod 中列出服务时,它可以正常工作,如下所示:
/ # consul catalog services
consul
consul-consul-dns-default
consul-consul-server-default
consul-consul-ui-default
ha-rabbitmq-rabbitmq-ha-default
ha-rabbitmq-rabbitmq-ha-discovery-default
kubernetes-default
vault-agent-injector-svc-default
vault-internal-default
但是,当我尝试在本地 VM 中运行相同的命令时,会出现以下错误:
[root@k8masterg1m2 autoinstall]# consul catalog services
Error listing services: Unexpected response code: 500 (rpc error getting client: failed to get conn: rpc error: lead thread didn’t get connection)
由于在本地 VM 中运行的 consul 代理,它能够列出成员,但不能列出服务/节点。 这是预期的行为,还是需要进行任何其他配置才能完成这项工作。
另外,我想知道在 Kubernetes 集群之外的 consul 服务器和 consul agent 之间的通信是如何发生的。
感谢任何帮助。
提前致谢!!
【问题讨论】:
标签: kubernetes consul