У меня проблема с сетью в моем кластере, и сначала я подумал, что это проблема маршрутизации, но обнаружил, что, возможно, исходящий пакет из кластера не будет упакован с ip узла при выходе из узла.
Фон в том, что у меня есть два кластера. Я установил первый (месяцы go) вручную, используя это руководство , и оно отлично работало. Затем второй, который я создавал несколько раз, когда создавал / отлаживал скрипты Anisble для автоматизации создания первого кластера.
В кластере 2 у меня проблема с сетью ... Я могу добраться до модулей на других узлах, но могу ни к чему в моей обычной сети. У меня есть tcpdump'd физический интерфейс на узле 0 в cluster2 при проверке связи с модулем busybox, и внутренний IP-модуль 172.16.0.x виден на этом интерфейсе как исходный IP-адрес - и моя сеть вне узла не имеет понятия, что делать с этим. Но на cluster1 этот же тест показывает ip узла вместо pod ip - как я предполагаю, что он должен работать.
Мой вопрос: как я могу устранить эту проблему? Любые идеи были бы великолепны, поскольку я занимался этим уже несколько дней. Даже если это кажется очевидным, так как я больше не вижу леса сквозь деревья ... ie. оба кластера выглядят одинаково везде, я знаю, как проверить:)
предостережение "мои кластеры одинаковы": Cluster1 работает kubectl 1.16 cluster2 работает 1.18
---- редактировать после @Matt бросил на меня некоторые знания о kube-proxy ----
Не знал, что правила kube-proxy можно просто прочитать командой iptables! Круто!
Я думаю, что моя проблема в этих адресах 10. net в сломанном кластере. Я даже не знаю, откуда они пришли, поскольку их нет ни в одном из моих ansible конфигурационных скриптов или файлов инициализации kube ... Я использую все 172 в своих конфигах.
Я действительно вытягиваю некоторые конфиги напрямую из источника (фланелевые и CSI / CPI) я опущу их и проверим, нет ли там десятых ... Надеюсь, это во фланелевых настройках по умолчанию или что-то еще, и я могу просто изменить этот файл yml!
кластер1 работает:
[root@k8s-master ~]# iptables -t nat -vnL| grep POSTROUTING -A5
Chain POSTROUTING (policy ACCEPT 22 packets, 1346 bytes)
pkts bytes target prot opt in out source destination
6743K 550M KUBE-POSTROUTING all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
3383K 212M RETURN all -- * * 172.16.0.0/16 172.16.0.0/16
117K 9002K MASQUERADE all -- * * 172.16.0.0/16 !224.0.0.0/4
0 0 RETURN all -- * * !172.16.0.0/16 172.16.0.0/24
0 0 MASQUERADE all -- * * !172.16.0.0/16 172.16.0.0/16
кластер2 - не работает:
[root@testvm-master ~]# iptables -t nat -vnL | grep POSTROUTING -A5
Chain POSTROUTING (policy ACCEPT 1152 packets, 58573 bytes)
pkts bytes target prot opt in out source destination
719K 37M KUBE-POSTROUTING all -- * * 0.0.0.0/0 0.0.0.0/0 /* kubernetes postrouting rules */
0 0 RETURN all -- * * 10.244.0.0/16 10.244.0.0/16
0 0 MASQUERADE all -- * * 10.244.0.0/16 !224.0.0.0/4
131K 7849K RETURN all -- * * !10.244.0.0/16 172.16.0.0/24
0 0 MASQUERADE all -- * * !10.244.0.0/16 10.244.0.0/16