Назад | Перейти на главную страницу

Не удается подключиться к сервису Kubernetes на гостевом узле

Я попытался запустить пример гостевой книги в репозитории Kubernetes Github, но не могу получить доступ к этой службе с моего локального хоста. Моя тестовая среда состоит из двух виртуальных машин (с CentOS7), предоставленных CloudStack, с установленным на них OpenShift Origin. Вот список услуг:

    [root@openshift-master amd64]# ./oc get svc
NAME              CLUSTER-IP       EXTERNAL-IP   PORT(S)                   AGE
docker-registry   172.30.39.251    <none>        5000/TCP                  1d
guestbook         172.30.55.125    nodes         3000/TCP                  56m
kubernetes        172.30.0.1       <none>        443/TCP,53/UDP,53/TCP     1d
redis-master      172.30.24.94     <none>        6379/TCP                  1h
redis-slave       172.30.132.250   <none>        6379/TCP                  1h
router            172.30.33.117    <none>        80/TCP,443/TCP,1936/TCP   1d

Предлагаемая услуга - это гостевая книга. Вот описание сервиса в гостевой книге:

[root@openshift-master amd64]# ./oc describe svc guestbook
Name:           guestbook
Namespace:      default
Labels:         app=guestbook
Selector:       app=guestbook
Type:           NodePort
IP:         172.30.55.125
Port:           <unset> 3000/TCP
NodePort:       <unset> 30642/TCP
Endpoints:      172.17.0.6:3000,172.17.0.7:3000,172.17.0.8:3000
Session Affinity:   None
No events.

Если я сделаю:

curl 172.30.55.125:3000

Он работает только с узла, на котором размещен модуль гостевой книги, с другого узла в кластере и на моем хост-компьютере (192.168.1.2). Это не работает.

Я открыл все порты в CloudStack, иначе я не могу использовать ssh для узлов, и в узле я установил это правило брандмауэра:

firewall-cmd --permanent --zone=public --add-port=30642/tcp

30642 - это NodePort, который необходим для доступа к нему вне кластера. У вас есть идеи, как решить? Заранее спасибо.

curl 172.17.0.6:3000 (т.е. каждый из Endpoints адреса) должны использоваться непосредственно с каждого узла кластера. Если не работает, значит сеть кластера настроена неправильно. Сюда может входить любой брандмауэр или SDN, которые фильтруют пакеты, отправляемые с одного узла на другой.

172.30.55.125:3000 должна иметь запись в iptables список на каждом узле кластера, поддерживаемый локальным kube-proxy демон на каждом узле кластера. Если скручивание удаленной конечной точки работает, но не удается использовать виртуальный IP-адрес службы и порт, возможно, что kube-proxy не работает. Проверьте записи iptables, статус процесса и файл журнала.

Наконец, возможно, что приложение гостевой книги действительно получает соединение, но затем оно прерывается или блокируется, пытаясь выполнить обреченный обратный поиск DNS.