Кажется, что-то ловит TCP-трафик на стручки

Я пытаюсь развернуть Kubernetes с помощью Calico (IPIP) с Kubeadm. После завершения развертывания я развертываю Calico, используя эти манифесты

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

Прежде чем применить его, я редактирую CALICO_IPV4POOL_CIDR и устанавливаю его на 10.250.0.0/17, а также использую команду kubeadm init --pod-cidr 10.250.0.0/17,

Через несколько секунд модули CoreDNS (например, получение addr 10.250.2.2) начинают перезапускаться с ошибкой 10.250.2.2:8080, соединение отказано.

Теперь немного покопаться:

из любого узла в кластере ping 10.250.2.2 работает и достигает pod (это показывает tcpdump в пространстве имен pod net).

из другого модуля (в другом узле) curl 10.250.2.2:8080 работает хорошо

из любого узла в curl 10.250.2.2:8080 не удается с соединением отказано

Так как это cornns pod, он слушает 53 и udp, и tcp, поэтому я попробовал netcat с узлов

nc 10.250.2.2 53 - В соединении отказаноnc -u 10.250.2.2 55 - работает

Теперь у меня есть tcpdump для каждого интерфейса на исходном узле для порта 8080 и прокрутка к модулю CoreDNS, кажется, даже не покидает узел... ооочень iptables?

Я также пробовал плести, канал и фланель, похоже, у всех одна и та же проблема.

У меня уже закончились идеи... какие-нибудь указатели, пожалуйста?

1 ответ

Кажется, проблема с реализацией Calico, модули CoreDNS чувствительны к успешному функционированию модулей сети CNI. Для правильной реализации сетевого плагина CNI вы должны включить --pod-network-cidr флаг для kubeadm init команда, а затем применить то же значение к CALICO_IPV4POOL_CIDR параметр внутри calico.yml,

Более того, для успешной установки Pod-сети вы должны применить некоторые правила RBAC, чтобы получить достаточные разрешения в соответствии с общими ограничениями безопасности кластера, как описано в официальной документации Kubernetes:

Чтобы Calico работал правильно, вам нужно передать --pod-network-cidr=192.168.0.0/16 в kubeadm init или обновить файл calico.yml, чтобы он соответствовал вашей сети Pod. Обратите внимание, что Calico работает только на amd64.

kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml

В вашем случае я бы перешел на последние версии Calico хотя бы с v3.3 как указано в примере.

Если вы заметили, что вы правильно установили сетевой модуль Pod, воспользуйтесь возможностью и обновите вопрос, указав текущую настройку среды и версии компонентов Kubernetes со статусами работоспособности.

Другие вопросы по тегам