刚刚开始使用 Kubernetes。我似乎无法连接在不同节点上运行的 pod 以相互通信。
我在三个 AWS EC2 实例上使用 Calico 网络建立了一个 Kubernetes 集群(一个 master,两个 worker,都禁用了 src/dest 检查,如 Calico 网站所述)。每个实例都使用相同的安全组,所有 TCP/UDP/ICMP 端口都为 10.0.0.0/8 和 192.168.0.0/16 打开,以确保我的集群内没有被阻止的端口。
使用香草回购安装
~$ sudo apt-get install -y docker.io kubelet kubeadm kubectl
~$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16
和基本的印花布安装
~$ kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
将两个工作节点加入集群
sudo kubeadm join <Master IP>:6443 --token <Token> --discovery-token-ca-cert-hash sha256:<cert hash>
启动并运行后,我创建了三个副本进行测试:
~$ kubectl run pingtest --image=busybox --replicas=3 -- sleep infinity
两个在第一个节点上,一个在第二个节点上
~$ kubectl get pod -l run=pingtest -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pingtest-7689dd958f-9mfgl 1/1 Running 0 15m 192.168.218.65 ip-10-78-31-198 <none> <none>
pingtest-7689dd958f-l288v 1/1 Running 0 15m 192.168.218.66 ip-10-78-31-198 <none> <none>
pingtest-7689dd958f-z2l97 1/1 Running 0 15m 192.168.237.65 ip-10-78-11-83 <none> <none>
在第一个 pod 上登录 shell
~$ kubectl exec -ti pingtest-7689dd958f-9mfgl /bin/sh
当我在同一个节点上 ping pod 时,一切正常
/ # ping 192.168.218.66 -c 2
PING 192.168.218.66 (192.168.218.66): 56 data bytes
64 bytes from 192.168.218.66: seq=0 ttl=63 time=0.105 ms
64 bytes from 192.168.218.66: seq=1 ttl=63 time=0.078 ms
但是当我在另一个节点上 ping 一个 pod 时,没有响应
/ # ping 192.168.237.65 -c 2
PING 192.168.237.65 (192.168.237.65): 56 data bytes
--- 192.168.237.65 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
我错过了什么?是什么阻止了不同节点上的 Pod 之间的通信?