1

刚刚开始使用 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 之间的通信?

4

1 回答 1

2

我弄清楚了这个问题。它与 AWS 配置以及您在该环境中必须做的一些额外工作有关。

  1. 对于三个 AWS EC2 实例,它们都必须禁用src/dest 检查 ,如 Calico 网站所述)。
  2. 对于涵盖您的 AWS 实例的安全组,您必须添加自定义协议(不是自定义 TCP 或自定义 UDP),在协议列中选择 4(IP 中的 IP)并选择覆盖您的实例的子网(例如 10.0.0.0/ 8, 192.168.0.0/16)。然后您可以使用该curl命令来处理您的 Pods/ServiceIP AWS 安全组设置
于 2020-04-10T16:08:08.737 回答