Невозможно связаться с машиной в сети (за пределами кластера k8s) с cidr 10.0.x.0/24 из модуля.

У меня есть две машины в моей сети, с которыми я хочу общаться из модуля.

Ипсы следующие:

10.0.1.23 - Lets call it X

13.0.1.12  - Lets call it Y

Когда я подключаюсь по ssh к главному узлу или узлу агента, а затем выполняю эхо-запрос на X или Y, эхо-запрос проходит успешно. Поэтому машины доступны.

Теперь я создаю развертывание, я захожу в оболочку пода, используя (kubectl exec -it POD_NAME — /bin/sh).

Пинг на Y проходит успешно. Но пинг до X не проходит.

Детали CIDR:

Master Node : 14.1.255.0/24
Agent Node: 14.2.0.0/16
Pod CIDR: 
   Agent : 10.244.1.0/24
   Master: 10.244.0.0/24

Мое понимание, в чем может быть проблема:

В acs-engine есть kube-proxy, настроивший сервисную сеть с 10.0.0.0/16. Если это проблема, как мне изменить cidr kube-proxy?

Дополнительная информация:

Я использую acs-engine для развертывания кластера.

Выход для ip route

default via 10.244.1.1 dev eth0 10.244.1.0/24 dev eth0 src 10.244.1.13

Другой подозреваемый: при запуске iptables-save я вижу

-A POSTROUTING ! -d 10.0.0.0/8 -m comment --comment "kubenet: SNAT for outbound traffic from cluster" -m addrtype ! --dst-type LOCAL -j MASQUERADE


person Karthik    schedule 18.04.2017    source источник
comment
Вы имеете в виду, что вы используете SSH для подключения к Kubernetes master и можете выполнить ping 10.0.1.22? этот IP является кластерным IP?   -  person Jason Ye    schedule 19.04.2017
comment
По умолчанию мы не можем пропинговать IP-адрес кластера от мастера, запустите эту команду, чтобы проверить iptables iptables-save.   -  person Jason Ye    schedule 19.04.2017
comment
Вы имеете в виду, что модуль не может пинговать IP-адрес из k8s?   -  person Jason Ye    schedule 20.04.2017
comment
Да. Pod не может этого сделать, но тогда это может сделать главный или агентный узел.   -  person Karthik    schedule 20.04.2017
comment
k8s использует iptables для перенаправления сетевого трафика в контейнеры, я проверяю запрос и скоро свяжусь с вами по этому поводу.   -  person Jason Ye    schedule 21.04.2017
comment
@JasonYe-MSFT Я перефразировал вопрос, отвечая на все ваши вопросы.   -  person Karthik    schedule 21.04.2017
comment
У меня сейчас именно эта проблема... не удается подключиться к кэшу Azure Redis.   -  person Hafiz    schedule 05.07.2018


Ответы (3)


Исходя из вашего вопроса, похоже, вы добавили еще одну подсеть в виртуальную сеть k8, которая развертывается с кластером ACS Kubernetes.

Как оказалось, я столкнулся с точно такой же проблемой в нашем проекте. Службы контейнеров Azure используют очень специфические правила маршрутизации для узлов агентов. Когда кластер k8 развернут, они создают ресурс таблицы маршрутов в той же группе ресурсов, что и все объекты вашего кластера. Итак, если вы...

  1. Откройте таблицу маршрутов k8 на портале Azure.
  2. Перейдите в раздел Подсети
  3. + Свяжите с подсетью, в которой находятся другие ваши виртуальные машины/службы PaaS.

... это создаст маршруты, которые агенты k8 ищут при маршрутизации исходящего трафика контейнера Pod.

person DrEsteban    schedule 15.07.2017

У меня точно такая же проблема, погуглив так много, я нашел возможное решение:

Используйте ip-masq-agent, чтобы замаскировать целевой CIDR, чтобы замаскировать этот пункт назначения.

https://kubernetes.io/docs/tasks/administer-cluster/ip-masq-agent/

Некоторый аналогичный пример:

http://madorn.com/kubernetes-non-masquerade-cidr.html#.XMDGI-H0nb0

person dbustamante    schedule 24.04.2019

Вы не можете пропинговать службу kubernetes. Дополнительная информация здесь: https://github.com/kubernetes/kubernetes/issues/7996#issuecomment-100413276. Чтобы проверить подключение, вы можете открыть простой веб-сервер на порту и подтвердить его с помощью curl внутри или снаружи контейнера.

person A Howe    schedule 19.04.2017
comment
Я говорю о внешней машине (вне кластера K8s). И пинг к машинам во внешнем мире будет работать. Но только не из POd - person Karthik; 20.04.2017