@kubernetes_ru

Страница 221 из 958
kvaps
28.07.2017
11:23:08
3. ВОт этого не понял
ingress - это как в docker swarm, правильно? экспозишь порт, и он доступен на любой ноде?

Maksim
28.07.2017
11:23:27
ммм. с Роем дело не имел) Но кажесь не так.

Ingress это правило для ingress-controller (которым в данный момент выступает либо GCE либо nginx-proxy)

Google
Maksim
28.07.2017
11:24:14
вроде как пилят HAproxy

kvaps
28.07.2017
11:24:44
а, точно, я что-то такое читал :)

Да. ТАм пишется DNAT правило по порту.
хм, а вот это интересно уже, спасибо. Теперь вопрос в следующем, как можно вешать IP на ноду и "переезжать" его на другую, это вообще возможно сделать средствами kubernetes?

что-то типа https://github.com/kubernetes/contrib/tree/master/keepalived-vip только проще

Maksim
28.07.2017
11:27:54
Вот пример NodePort

KUBE-MARK-MASQ tcp — 0.0.0.0/0 0.0.0.0/0 /* kube-system/grafana: */ tcp dpt:30300 KUBE-SVC-3QDDWNGGGXWDZXKH tcp — 0.0.0.0/0 0.0.0.0/0 /* kube-system/grafana: */ tcp dpt:30300

kvaps
28.07.2017
11:28:08
грубо говоря, я бы хотел просто создать такой сервис как ip-адрес (много сервисов) и если одна нода падает, kubernetes перезапустил бы его на другой ноде

Maksim
28.07.2017
11:28:34
[root@222720-2 ~]# iptables -t nat -L KUBE-SVC-3QDDWNGGGXWDZXKH -n Chain KUBE-SVC-3QDDWNGGGXWDZXKH (2 references) target prot opt source destination KUBE-SEP-BXYSBSOKGBRCZUIW all — 0.0.0.0/0 0.0.0.0/0 /* kube-system/grafana: */

[root@222720-2 ~]# iptables -t nat -L KUBE-SEP-BXYSBSOKGBRCZUIW -n Chain KUBE-SEP-BXYSBSOKGBRCZUIW (1 references) target prot opt source destination KUBE-MARK-MASQ all — 172.17.79.7 0.0.0.0/0 /* kube-system/grafana: */ DNAT tcp — 0.0.0.0/0 0.0.0.0/0 /* kube-system/grafana: */ tcp to:172.17.79.7:3000

ТО есть идёт DNAT с 30300 на 3000 на ip Пода

Не ip адресс принадлежит по сути ноде

и кубер не разрешает вопрсы переезда ip по нодам

С другой стороны NodePort существует на ВСЕХ нодах

Google
Maksim
28.07.2017
11:30:18
и ты можешь поставить балансер до них

либио через dns

kvaps
28.07.2017
11:31:00
то есть эти правила создаются на всех нодах?

Maksim
28.07.2017
11:31:18
NodePort да.

kvaps
28.07.2017
11:31:37
прикольно

В моем случае мне внешний балансер не нужен, т.к. все ноды смотрят в интернет просто, но я кажется придумал как это можно реализовать. Что если я создам контейнер с network=host и просто буду им ассигнить ip адрес ноде?

может уже есть подобный механизм в kubernetes? я просто максимально упростить схему, в моем случае один pod - имеет свой ip

еще вопрос: можно ли в NodePort указать чтобы перенапривление шло конкретно с этого ip адреса. Потому что, как я сказал, сервисы будут запущены на одинаковых портах

то есть правило dnat скажем не 0.0.0.0 а например с 11.22.33.44

Роман
28.07.2017
11:38:09
А как мне назначить другую ноду мастером?

Maksim
28.07.2017
11:38:20
ну в BetsPrartic нельзя

А как мне назначить другую ноду мастером?
Запустить нужные сервисы на новой ноде и переписать конфиги у кублетов)

А как мне назначить другую ноду мастером?
как сделать через kubeadm не знаю)

kvaps
28.07.2017
11:39:30
ну в BetsPrartic нельзя
тоесть, я обязан импользовать разные порты для своих сервисов?

externalIP тебе поможет
понял, попробую

Maksim
28.07.2017
11:40:20
https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/

Хотя не уверен что это работает без внешнего балансировщика

а вообще hostnetwork вроде не работает в кубере

kvaps
28.07.2017
11:42:06
через daemonset вроде работает, думаю и так должен, сча

Google
Maksim
28.07.2017
11:43:06
ds это способ запустить контейнеры на Всех Нодах сразу

то есть на каждой ноде будет экземляр пода

kvaps
28.07.2017
11:43:26
https://github.com/weaveworks/weave/blob/master/prog/weave-kube/weave-daemonset.yaml#L77

hostNetwork: true - мне кажется он и в обычном pod должен сработать

ладно, с этим я разберусь

скажи только, правильно ли я понял, что параметр externalIP определяет адрес, который будет переписываться для правила dnat?

Maksim
28.07.2017
11:46:42
и нода на который это работает

так было в 1.5 но там он уже объявлен как устаревший

в 1.7 его может и не быть , я 1.7 пока не юзаю

kvaps
28.07.2017
11:47:41
у меня сейчас 1.7.2, о чем конкретно ты говоришь?

Maksim
28.07.2017
11:50:39
у меня сейчас кубер версии 1.5.2

1.7.2 я пока не ставил )

kvaps
28.07.2017
11:52:13
Не, я про что ты имеешь ввиду "объявлен устаревшим"?

Maksim
28.07.2017
11:52:41
ну у метода приписка depricated

kvaps
28.07.2017
11:53:02
У ds?

Maksim
28.07.2017
11:53:18
у external-ip

kvaps
28.07.2017
11:59:15
а, сорри

если это то что я думаю, то надеюсь, это решит мою проблему

Maksim
28.07.2017
12:06:42
Ну да. тут ты прав.

Google
kvaps
28.07.2017
12:07:48
отлично, спасибо!

осталось только понять в чем разница от ClusterIP, похоже что он делает ровно тоже самое

Maksim
28.07.2017
12:09:31
ммм

ClusterIP это внутренняя сущность

ПО сути это виртуальный IP который есть только в правилах IPtables

его присваивают сервису, который балансирует трафик в поды

если подов больше одного то поравну.

Sergey
28.07.2017
12:10:37
ClusterIP это внутренняя сущность
внезапно его кстати можно вывесить на интерфейсы и это начнет работать

Sergey
28.07.2017
12:11:08
Почему внезапно?)
внезапно я всегда использую слово внезапно в любой непонятной ситуации

Admin
ERROR: S client not available

Sergey
28.07.2017
12:11:11
внезапно, правда?

Sergey
28.07.2017
12:11:51
Ну он балансируется в IP tables
точно. просто таким путем можно без ExternalIP иметь одинаковые IP-адреса для сервисов как изнутри k8s, так и снаружи.

Maksim
28.07.2017
12:12:14
нужно ставить кластер ip в реальную адрессацию...

Sergey
28.07.2017
12:12:38
imho не лучшая идея)
зависит от вашей сети.

Maksim
28.07.2017
12:12:55
по умолчанию кластерные адреса в NAT адрессации 10.0.0.0/4)

Sergey
28.07.2017
12:13:24
например я сторонник того, чтобы контейнеры имели first-class-адреса и с физическими серверами (например) снаружи k8s маршрутизировались без NAT.

Google
Maksim
28.07.2017
12:14:00
first-class ,

?

Sergey
28.07.2017
12:14:13
ну у вас в инфраструктуре не только k8s есть.

но и еще снаружи от нее какие-то другие сервисы/хосты/виртуалки/контейнеры

Maksim
28.07.2017
12:14:27
ты как с Интереном общаешься? если используешь реальную адрессацию?

Maksim
28.07.2017
12:14:35
все твои сервисы видны...

потому что ClusterIP назначается автоматически при создании сервиса

Sergey
28.07.2017
12:15:02
ты как с Интереном общаешься? если используешь реальную адрессацию?
конкретно я использую NAT в публичные адреса, реализованный на каждом хосте k8s, соответственно контейнер уходит в интернет сразу с того хоста, на котором запущен.

kvaps
28.07.2017
12:15:13
в моем случае как раз это и требуется :)

Maksim
28.07.2017
12:15:34
У тебя контейнеры имеют публичные адресса?

Sergey
28.07.2017
12:15:38
но вся внутренняя инфраструктура при этом плоская и не содержит натов или точек входа/выхода в k8s

У тебя контейнеры имеют публичные адресса?
технически мне ничто не помешает так сделать, кроме нехватки ipv4-адресов.

Maksim
28.07.2017
12:15:56
То есть кривые разрабы накодили всякой фигни и ты это голым простите задом в интернет?

китайцев не боишься?

у меня вон сервера по 10-20к трайев по ssh ежедневно отлавливают

Sergey
28.07.2017
12:16:32
То есть кривые разрабы накодили всякой фигни и ты это голым простите задом в интернет?
а кто сказал про голый зад? вы мои слова не перевирайте, я этого не говорил. public-routable-адрес не означает отсутствие фаервола.

Maksim
28.07.2017
12:16:36
в особы удачные дни мы насчитывали миллон запросов в ssh

Sergey
28.07.2017
12:16:52
и нат - это не безопасность :)

https://habrahabr.ru/post/134638/

Maksim
28.07.2017
12:18:47
Ну когда все сети тебе подкотрольны вполне себе

kvaps
28.07.2017
12:19:00
потому что ClusterIP назначается автоматически при создании сервиса
стоп-стоп-стоп, ClusterIP я могу назначить самостоятельно при создании сервиса, если он будет ассигниться на реальный интерфейс - это вообще сказка.

Страница 221 из 958