Maxim
поэтому фронты пока отдельно
Maxim
когда весь сервис упакуем в кластер, можно будет и фронты туда же
Maxim
а пока приходится извращаться немношк
M
А как тогда доступен куб-днс снаружи?
Maxim
всмысле?
Maxim
откуда "снаружи?"
M
Видимо я не так прочитал первое сообщение, нгинкс не видит днс кубернетиса?
Maxim
видит
Maxim
я не понимаю, где проблема? ;)
Maxim
kube-proxy на хосте надежно решает эту проблему посредством iptables
Maxim
# iptables-save | grep -i dns -A KUBE-SEP-AGF24HBSCHVRB2IM -s 192.168.0.4/32 -m comment --comment "kube-system/kube-dns:dns" -j KUBE-MARK-MASQ -A KUBE-SEP-AGF24HBSCHVRB2IM -p udp -m comment --comment "kube-system/kube-dns:dns" -m udp -j DNAT --to-destination 192.168.0.4:53 -A KUBE-SEP-CF3CVUYBRRNMUR2I -s 192.168.0.4/32 -m comment --comment "kube-system/kube-dns:dns-tcp" -j KUBE-MARK-MASQ -A KUBE-SEP-CF3CVUYBRRNMUR2I -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp" -m tcp -j DNAT --to-destination 192.168.0.4:53 -A KUBE-SERVICES -d 10.222.222.222/32 -p udp -m comment --comment "kube-system/kube-dns:dns cluster IP" -m udp --dport 53 -j KUBE-SVC-TCOU7JCQXEZGVUNU -A KUBE-SERVICES -d 10.222.222.222/32 -p tcp -m comment --comment "kube-system/kube-dns:dns-tcp cluster IP" -m tcp --dport 53 -j KUBE-SVC-ERIFXISQEP7F7OF4 -A KUBE-SVC-ERIFXISQEP7F7OF4 -m comment --comment "kube-system/kube-dns:dns-tcp" -j KUBE-SEP-CF3CVUYBRRNMUR2I -A KUBE-SVC-TCOU7JCQXEZGVUNU -m comment --comment "kube-system/kube-dns:dns" -j KUBE-SEP-AGF24HBSCHVRB2IM
Maxim
и так на каждом хосте
Maxim
не руками, естественно
Maxim
все эти правила динамически формирует kube-proxy
Maxim
который запущен на всех хостах
Maxim
таким образом я могу прямо на bare-metal машине использовать кластерный днс (ну и любые другие endpoint'ы)
M
Я через nodeport обычно прокидывал сервисы
Maxim
а зачем?
Maxim
приходится прокси перенастраивать
Maxim
чтобы он другой рейнж портов мог юзать
M
Ну это меня и смущало
M
А как у тебя описание сервиса выглядит?
Maxim
https://gist.github.com/Bregor/5d27a6d0cb722d743bb7f17da132edfd
Maxim
это тыптыщеконфиг
Maxim
а сервисы как обычно
Maxim
ща
M
Я что то не понял про то как указать cluster ip на bare
Maxim
а зачем?
Maxim
ты же имя в сервисе пишешь
Maxim
и по имени к нему и обращаешься
Maxim
разрешение имени в адрес делает kube-dns
M
А доступен он также на всех нодах?
M
Как нодпорт?
Maxim
ну на всех, где kube-proxy есть
Maxim
или руками iptables настроен ;)
Maxim
добавил сервис в гист: https://gist.github.com/Bregor/5d27a6d0cb722d743bb7f17da132edfd
M
Ясно, видимо меня смутила фраза в доке, что cluster ip предоставляется сервис провайдером
M
Спасибо за экскурс)
Maxim
это когда у тебя type: LoadBalancer
Maxim
и над тобой GCE или LBE
Maxim
тогда айпи тебе выдает провайдер
Maxim
а на bare metal тебе сам черт не брат :D
M
:)
Maxim
собственно адреса для сервисов выдаются аписервером
Maxim
ориентируется он при этом на --service-cluster-ip-range=10.222.0.0/16
Maxim
ну в смысле это у меня там 10.222.0.0/16
Maxim
не помню, что там по-умолчанию
M
Хм, так это дополнительный адрес? Или что это за range?
Maxim
хехе
Maxim
об это я бился головой дня три
Maxim
(ну я там выше говорил уже, что я не очень умный)
Maxim
короче
Maxim
адреса для сервисов и адреса для подов - это два никак не пересекающихся множества
Maxim
адреса для сервисов абсолютно не имеют никакого "физического" представления
Maxim
они нигде не терминируются
Maxim
и нужны только для роутинга до нижележащих ресурсов (подов)
Maxim
а вот адреса подов имеют под собой некоторое "физическое" отображение
Maxim
и должны кем-то выдаваться
Maxim
это может быть CNI, docker-networking, etc
M
А мы про адреса сервисов
M
Да , про них я знаю)
M
Я думал мы продолжаем тему внешних
Maxim
нене
M
Думаю какой там еще ренж вроде все только прояснилось)
Maxim
мы про то, что внутри кластера, да
M
Когда я открыл для себя флажок iptables у куб прокси все стало гораздо понятнее с кластерными и прочими айпишниками)
Maxim
ммм?
Maxim
оно ж по-дефолту iptables
Maxim
или ты о чем?
Denis
Да вроде нет как раз :)
Maxim
--proxy-mode=: Which proxy mode to use: 'userspace' (older) or 'iptables' (faster). If blank, look at the Node object on the Kubernetes API and respect the 'net.experimental.kubernetes.io/proxy-mode' annotation if provided. Otherwise use the best-available proxy (currently iptables). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy.
Maxim
а, хотя у меня явно указано, да
Maxim
может по-дефолту и не оно
Maxim
command: - /hyperkube - proxy - --proxy-mode=iptables - --kubeconfig=/etc/kubernetes/kubeconfig.yaml
Maxim
вот так запускаю
Denis
Вот вот :)
Maxim
ок-ок, был неправ
M
Сейчас уже по дефолту иптаблес, я когда ставил был по дефолту юзерспейс
Denis
Приём) Есть кто бодрствующий?
Denis
Есть вопрос) Допустим, имеем такой расклад: kubectl get svc --namespace kube-system NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch-logging 10.100.0.80 <none> 9200/TCP 1d heapster 10.100.0.10 <none> 80/TCP 4d kibana-logging 10.100.0.146 <none> 5601/TCP 1d kube-dns 10.100.0.100 <none> 53/UDP,53/TCP 13d kubernetes-dashboard 10.100.0.107 <none> 80/TCP 6d monitoring-grafana 10.100.0.77 <none> 80/TCP 4d monitoring-influxdb 10.100.0.188 <none> 8083/TCP,8086/TCP 4d Интересует такой момент - если у нас во время нагрузки одной ноды какой-то из этих подов будет перенесён на другую ноду - IP адрес сохранится или тоже поменяется?