Как работает сеть Kubernetes NodePort на многоузловом кластере? - PullRequest
2 голосов
/ 11 января 2020

Я новичок в kubernetes и пытаюсь понять, как работает сеть kubernetes, когда у нас есть NodePort, предоставляющий порт для внешнего мира.

Давайте представим, что у нас есть два узла в нашем кластере kubernetes, назовем его Node1 и Node2. У нас есть один модуль, развернутый на Node2.

Затем мы создаем сервис NodePort для этого модуля. Для простоты предположим, что все порты (targetPort, nodePort, port) равны 3000. Теперь пакет поступает на порт Node1 3000 (где не развернут модуль). Насколько я понимаю, правила iptables диктуют, что этот пакет отправляется в модуль на Node2. Мой вопрос заключается в том, что ip видит модуль, когда получает пакет, и как его ответный пакет возвращается к нашему первоначальному клиенту из внешнего мира.

1 Ответ

3 голосов
/ 11 января 2020

Пакет является исходным NAT'ом на Node1. Узел 1 заменяет исходный IP-адрес своим IP-адресом и IP-адресом назначения в качестве IP-адреса. Ответ Pod отправляется на Node1, а Node1 отправляет его обратно клиенту.

Из документов:

(В модуле документов выполняется на узле 1, а узел 2 - это тот, который получает пакет от клиента.)

  • Клиент отправляет пакет на узел2: узел_порта
  • узел2 заменяет исходный IP-адрес (SNAT) в пакете своим собственным IP-адресом
  • узел2 заменяет IP-адрес назначения в пакете с пакетом IP
  • направляется в узел 1, а затем в конечную точку
  • ответ модуля направляется обратно в узел2
  • модуля ответ отправляется обратно клиенту
           client
             \ ^
              \ \
               v \
   node 1 <--- node 2
    | ^   SNAT
    | |   --->
    v |
 endpoint
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...