Кубернетес: разница между NodePort и LoadBalancer

Я только что начал с Kubernetes, и я смущен различием между типами NodePort и LoadBalancer.

Разница, которую я понимаю, заключается в том, что LoadBalancer не поддерживает UDP, но помимо этого, когда мы создаем службу либо nodeport, либо loadbalancer, мы получаем IP-адрес и порт службы, NodePort и конечные точки.

От Kubernetes docs:

NodePort: поверх внутреннего IP-кластера, выставляют службу на порт на каждом node кластера (один и тот же порт на каждом node). Вы сможете связаться с сервисом на любом NodeIP: NodePortадрес.

LoadBalancer: поверх внутреннего IP-адреса кластера и выставляя службу в NodePort, спросите у облачного провайдера о нагрузке балансировщик, который пересылает на службу, представленную как NodeIP: NodePortдля каждого Node.

Итак, я всегда получаю доступ к сервису на nodeip: nodeport. Мое понимание заключается в том, что всякий раз, когда мы обращаемся к узлу node: nodeport, kubeproxy перехватывает запрос и пересылает его соответствующему модулю.

Другое упоминание о LoadBalancer заключается в том, что мы можем иметь внешний LB, который будет LB между узлами. Что мешает нам помещать LB для сервисов, созданных как nodeport?

Я действительно смущен. Большинство документов или руководств говорят только о сервисе LoadBalancer, поэтому я не мог найти много в Интернете.

Цените, если кто-то может устранить мои сомнения.

Спасибо

Ответ 1

Ничто не мешает вам размещать внешний балансировщик нагрузки перед вашими узлами и использовать опцию NodePort.

Параметр LoadBalancer используется только для дополнительного запроса провайдера облака для нового экземпляра LB программного обеспечения, автоматически в фоновом режиме.

Я не знаю, какие облачные провайдеры поддерживаются, но я видел, что он уже работает для Compute Engine и OpenStack.