Я пытаюсь настроить кластер Kubernetes с помощью HAProxy. Сейчас есть только два узла. Балансировщик нагрузки находится на главном узле. Но из журналов я вижу, что соединение проверяется на виртуальном IP-адресе, которого нет. Вот конечные точки для кластера кубернетов.
NAME ENDPOINTS AGE
activemq-svc 10.0.86.2:1883,10.0.86.2:8161,10.0.86.2:8161 + 1 more... 2h
admin-svc 10.0.86.7:8080,10.0.86.7:9840,10.0.86.7:9841 2h
kube-dns 10.0.54.2:53,10.0.54.2:4001,10.0.54.2:53 2h
kubernetes 172.31.16.18:6443 4h
mysql-admin-svc 10.0.86.6:3306 2h
mysql-edu-svc 10.0.86.4:10050,10.0.86.4:3306 2h
mysql-stat-svc 10.0.54.4:3306 2h
platform-riak-cs-service 10.0.54.3:8087,10.0.54.3:8080,10.0.54.3:8098 2h
redis-svc 10.0.86.3:6379 2h
server-svc 10.0.86.10:8080,10.0.86.10:9840,10.0.86.10:9841 + 1 more... 2h
statistics-svc 10.0.86.8:8080,10.0.86.8:9840,10.0.86.8:9841 2h
Но в журналах я вижу, что мой IP-адрес пытается подключиться к адресу, которого нет в списке конечных точек. В HAProxy.cfg нет правила также для ..86.5. Кто-нибудь может сказать мне, что происходит?
servicelb [INFO] Connect from 118.102.239.85:39812 to **10.0.86.5:443** (httpsfrontend/HTTP)
servicelb [INFO] Connect from 118.102.239.85:40418 to 10.0.86.5:443 (httpsfrontend/HTTP)
servicelb [INFO] Connect from 118.102.239.85:41057 to 10.0.86.5:443 (httpsfrontend/HTTP)
servicelb [INFO] Connect from 118.102.239.85:41100 to 10.0.86.5:443 (httpsfrontend/HTTP)
servicelb [INFO] Connect from 118.102.239.85:41143 to 10.0.86.5:443 (httpsfrontend/HTTP)
servicelb [INFO] Connect from 10.0.86.1:49589 to 10.0.86.5:80 (httpfrontend/HTTP)
servicelb [INFO] Connect from 10.0.86.1:49611 to 10.0.86.5:80 (httpfrontend/HTTP)
servicelb [INFO] Connect from 10.0.86.10:53882 to 10.0.86.5:80 (httpfrontend/HTTP)
servicelb [INFO] 10.0.86.10:55668 [21/Dec/2015:11:45:15.526] httpsfrontend/1: SSL handshake failure
Это нормально, когда вы создаете сервис, kube-proxy
создайте на каждом узле правило iptables для перенаправления трафика на конечные точки, поэтому при использовании облачного провайдера у вас будет следующая схема.
{external load balancer ip:port}->{NodePort(iptables PREROUTING RULE by kubeproxy)}->{pod internal ip address}
Таким образом, вам не нужно настраивать IP-адрес внутренней службы кластера.
Конечная точка kube-proxy по умолчанию выполняет сквозное проксирование TCP, поэтому IP-адреса теряются.
Если вместо этого вы активируете прокси на основе IP-таблиц:
https://github.com/kubernetes/contrib/tree/master/scale-demo#activate-iptables-proxying