Kubernetes с Calico на AWS - не может пинговать стручки на разных узлах - PullRequest
0 голосов
/ 23 марта 2020

Просто начинаю с Kubernetes. Я не могу соединить модули, работающие на разных узлах, чтобы общаться друг с другом.

Я настроил кластер Kubernetes с сетью Calico на трех экземплярах AWS EC2 (один мастер, два рабочих все с отключенной проверкой src / dest, как описано на веб-сайте Calico ). Каждый экземпляр использует одну и ту же группу безопасности со всеми открытыми портами TCP / UDP / ICMP для 10.0.0.0/8 и 192.168.0.0/16, чтобы убедиться, что в моем кластере нет заблокированных портов.

с использованием установки репозитория Vanilla

~$ sudo apt-get install -y docker.io kubelet kubeadm kubectl
~$ sudo kubeadm init --pod-network-cidr=192.168.0.0/16  

и Basi c Установка Calico

~$ 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

~$ kubectl exec -ti pingtest-7689dd958f-9mfgl /bin/sh

Когда я ping pods на том же узле, все работает

/ # 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

Что мне не хватает? Что мешает связи между модулями на разных узлах?

1 Ответ

0 голосов
/ 10 апреля 2020

Я разобрался в проблеме. Это было с конфигурацией AWS и некоторой дополнительной работой, которую вы должны выполнить в этой среде.

  1. Для трех экземпляров AWS EC2 все они должны иметь проверку src / dest отключена , как описано на веб-сайте Calico ).
  2. Чтобы группа безопасности охватывала ваши AWS экземпляры, вы должны добавить Пользовательский протокол (не Пользовательский TCP или Пользовательский UDP), выберите 4 (IP in IP) в столбце протокола и выберите подсети. покрытие вашего экземпляра (например, 10.0.0.0/8, 192.168.0.0/16). Затем вы можете использовать команду curl для обращения к вам Pods / ServiceIP AWS Настройки группы безопасности
...