我已经使用预配置脚本在 Azure 云上的 VM(Ubuntu 18.04.1 LTS)中设置了 Kubernates 集群。
MongoDB docker 容器与 K8s 集群一起运行。我的目标是将 MongoDB 连接到在 K8s 内运行的 CMS 容器。
码头集装箱:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3883f7b397cf mongo "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:27017->27017/tcp mongodb
299239d90cbb mirantis/kubeadm-dind-cluster:v1.12 "/sbin/dind_init sys…" 27 hours ago Up 27 hours 8080/tcp kube-node-2
34c8bd5fad2e mirantis/kubeadm-dind-cluster:v1.12 "/sbin/dind_init sys…" 27 hours ago Up 27 hours 8080/tcp kube-node-1
15a2d6521e6e mirantis/kubeadm-dind-cluster:v1.12 "/sbin/dind_init sys…" 27 hours ago Up 27 hours 127.0.0.1:32768->8080/tcp kube-master
Kubernetes 节点:
$ kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26h <none>
mycms LoadBalancer 10.97.53.114 <pending> 80:31664/TCP 18s app=mycms,tier=frontend
Kubernetes 服务:
$ kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 26h <none>
mycms LoadBalancer 10.97.53.114 <pending> 80:31664/TCP 112s app=mycms,tier=frontend
Kubernetes pod:
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE
mycms-dc4978ffc-khvj2 1/1 Running 0 4m8s 10.244.2.13 kube-node-1 <none>
MongoDB 容器的 IP 地址是 172.17.0.2
Kubernetes 主容器 IP 地址为 10.192.0.2
Kubernetes 节点 1 容器 IP 地址为 10.192.0.3
Kubernetes 节点 2 容器 IP 地址为 10.192.0.4
由于 CMS pod 在 k8s 容器内的 10.244.2.13 上运行。
为了测试,我在主机上安装了 mongo-client 并测试了运行良好的连接。
但是 CMS 没有到达 MongoDB 容器(我将 Mongo String 传递给环境变量中的 pod)。
CMS pod 的日志
MongoError: failed to connect to server [172.17.0.2:27017] on first connect [MongoError: connect EHOSTUNREACH 172.17.0.2:27017]
如何路由 MongoDB 容器和 CMS 容器?我的方法有什么问题/遗漏吗?
如果您需要更多信息,请告诉我。谢谢!