2016-07-14 4 views
2

Я создал kubernetes v1.2 работает в Azure облаке с одним мастером (Master) и двумя узлами (Node1 и NODE2). Я развернул приложение Nginx и Tomcat. Оба контейнера размещены в отдельных контейнерах с RC и у них есть СЕРВИС для каждого.Service IP не доступен через узлы в kubernetes

Nginx стручок развертывается в Node1 и Tomcat стручка развернут в Node2. Теперь Nginx из Node1 пытается получить доступ к Tomcat через ServiceIP TOMCAT в (clusterIP), который находится в Node2. Но его недостижимо.

Nginx serviceIP: 10.16.0.2 Node1

Tomcat serviceIP: 10.16.0.4 Node2

Я попытался завиток 10.16.0.4:8080 от Node2, это работает. Но это же из Node1 терпит неудачу с завитка: (52) Пустой ответ от сервера

Так связь с serviceIP через узлы не удается. Это проблема с kube v1.2?

Примечание: ClusterIP для Сервиса будет указан во время создания службы.

+0

Можете ли вы напрямую подключиться к IP-адресу Tomcat? Это поможет определить, является ли это проблемой маршрутизации службы или более общей сетевой проблемой. –

+0

Какой плагин сетевой наложения вы используете? , Вы используете режим iptables или режим пользовательского пространства? Пожалуйста, обратитесь к этой ссылке http://stackoverflow.com/questions/36088224/what-does-userspace-mode-means-in-kube-proxys-proxy-mode – atv

+0

@CJCullen Я могу добраться до контейнеров через свой IP-адрес с одного и того же узла а не от другого узла. Curl 10.32.0.2:8080 от Node2 достигает Tomcat, то же самое от Node1 не удается –

ответ

0

Поскольку вы можете достичь IP-адреса кластера из Node2, похоже, что селектор услуг правильно определен.

Kube-proxy - это компонент, который следит за службами и создает правила iptable для конечных точек. Я бы проверял, правильно ли работает kube-proxy на узле Node1. Затем проверьте правильность правил iptable для используемого вами кластера ip. Вы можете увидеть их с iptables -L -t nat | grep namespace/servicename

Вот пример:

bash-4.3# iptables -L -t nat | grep kube-system/heapster KUBE-MARK-MASQ all -- 172.168.16.182 anywhere /* kube-system/heapster: */ DNAT tcp -- anywhere anywhere /* kube-system/heapster: */ tcp to:172.168.16.182:8082 KUBE-SVC-BJM46V3U5RZHCFRZ tcp -- anywhere 192.168.172.66 /* kube-system/heapster: cluster IP */ tcp dpt:http KUBE-SEP-KNJP5BBKUOCH7NDB all -- anywhere anywhere /* kube-system/heapster: */

В этом примере я посмотрел heapster работает в Кубэ-системы имен. Это показывает, что кластер IP является 192.168.172.66 DNATs к конечной точке 172.168.16.182, что стручки ф (Вы должны перепроверить это с концами, перечисленных в kubectl describe service.

Если это не там, перезапуск Кубэ-прокси может помочь