Я запускаю kube-proxy
на каждом из моих узлов кубернетов. Я вижу, что он устанавливает правила iptables для создания виртуальных хостов. Я использую flannel overlay networking, чтобы соединять докеревые сети моих узлов. Это прекрасно работает со встроенными контейнерами для докеров. Таким образом, я могу напрямую подключаться к контейнерам, а также к услугам изнутри контейнера докеров.Не удается подключиться к службам с узла-узла
Но из-за некоторых требований мне нужно получить доступ к службам с узла узла так же, как изнутри контейнера докеров. Проблема в том, что это возможно только для узла, работает служебный блок.
Смотрите следующий пример iptables-save
на узле, который не хостинг kubernetes-инструментальную панель стручка как осветления (стручок работает на Кубэ-узле-2):
[[email protected] ~]# iptables-save | grep dashboard
-A KUBE-SEP-CAT6SKLXJIMXS63T -s 172.16.99.5/32 -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-MARK-MASQ
-A KUBE-SEP-CAT6SKLXJIMXS63T -p tcp -m comment --comment "kube- system/kubernetes-dashboard:" -m tcp -j DNAT --to-destination 172.16.99.5:9090
-A KUBE-SERVICES -d 10.254.242.220/32 -p tcp -m comment --comment "kube-system/kubernetes-dashboard: cluster IP" -m tcp --dport 80 -j KUBE-SVC-XGLOHA7QRQ3V22RZ
-A KUBE-SVC-XGLOHA7QRQ3V22RZ -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-SEP-CAT6SKLXJIMXS63T
Я теперь в состоянии до curl http://172.16.99.5:9090
, но я не могу curl http://10.254.242.220
(на kube-node-2 эта команда успешно завершена). С другой стороны, с того же хоста docker run -it --rm centos /usr/bin/curl http://10.254.242.220
действительно работает.
У меня есть интуиция, что что-то с правилами iptables и NATing отсутствует, так что все пакеты прыгают в цепочку KUBE-SERVICES
. Возможно, кто-то может помочь мне понять, что происходит и обеспечить решение.
С какой помощью вы используете Flannel? Может быть, целевой хост блокирует трафик, исходящий из IP-адреса исходного хоста, используя брандмауэр? –
Я хочу использовать бэкэнд VXLAN. –