Я новичок в Kubernetes и застрял в сетевой части.
Кубернетес документация:
Есть несколько способов опубликовать сервис:
- NodePort предоставляет Службу на IP-адресе каждого узла на статическом порту (NodePort)
- Балансировщик нагрузки предоставляет доступ к Службе извне с помощью балансировщика нагрузки облачного провайдера. Сервисы NodePort и ClusterIP, к которым маршрутизирует внешний балансировщик нагрузки, создаются автоматически.
Насколько я понимаю, сервисный объект Kubernetes — это абстракция логического уровня, которая реализуется через Kube Proxy, IP-таблицы, IPVS и т. д.
Сервис отличается от экземпляра EC2 и балансировщика нагрузки, которые физически существуют и могут быть доступны.
Последующий диаграмма показывает, как работает служба балансировки нагрузки, но не объясняет, как эластичная балансировка нагрузки взаимодействует со службой Kubernetes.
Вопрос 1. Как Cloud-Native Elastic Load Balancer (ELB) передает трафик в Службу?
Я беру на себя Службу Балансировщик нагрузки
тип похож на Службу NodePort
типа под капотом, они оба используют преимущества NodePort. Разница лишь в том, что для службы Балансировщик нагрузки
Типа, облако поможет нам позаботиться о NodePort и Target group, нам не придется вручную управлять ими самостоятельно.
Трафик
✓
Балансировщик нагрузки
✓
Целевая группа
✓
Порт узла виртуальной машины (IP + порт)
✓
кластерный IP службы
✓
Кубический прокси (IPVS)
✓
Пакеты услуг
Верно ли мое предположение?
Вопрос 2: Если мы отключим NodePort виртуальной машины, как ELB направится к службе?
В Кубернете V1.20.0, Kubernetes предоставляет новый параметр выделитьLoadBalancerNodePort
и позволяет пользователю отключить NodePort виртуальной машины.
KEP-1864: при необходимости отключите порты узла для типа службы = LoadBalancer
Если мы отключим Порт узла ВМ
, как ELB связывается с логической службой?
Не могли бы вы объяснить подробнее? Лучше покрыть маршруты пакетов TCP/IP, IP-таблицы, IPVS и т. д.