#kubernetes #kind
Вопрос:
Я узнал, что Kubernetes, работающий через мини-куб или вид (это то, что я использую), не имеет балансировщика нагрузки. Эта функциональность исходит от облачных поставщиков. Тем не менее, когда я создал простое развертывание с 3 репликами и службой:
kubectl create deployment kiada --image=luksa/kiada:0.1
kubectl scale deployment kiada --replicas=3
kubectl expose deployment kiada --type=LoadBalancer --port 8080
Я могу связаться с различными стручками по телефону :8080.
Мой локальный кластер имеет 2 рабочих узла. Когда я нажимаю :8080, я иногда получаю ответ от модуля, работающего на worker-1, а иногда я получаю ответ от другого модуля, работающего на узле worker-2. Разве это не балансировка нагрузки?
При этом я не понимаю, почему говорится, что Kubernetes не обеспечивает балансировку нагрузки сам по себе, поскольку я вижу, что это явно так.
Ответ №1:
Служба Kubernetes будет загружать запросы на балансировку в любой из модулей, соответствующих меткам, указанным в Службе.
Не смешивайте это с type: LoadBalancer
тем, что является способом предоставления доступа к вашей службе с помощью облачного балансировщика нагрузки, обычно с внешним IP-адресом.
Комментарии:
1. Я продолжил чтение («Кубернетес в действии») и узнал, что на самом деле существует два балансировщика нагрузки. Один из них предоставляется облачным провайдером (если данный K8s работает в облаке и управляется) — он балансирует нагрузку на трафик между рабочими узлами. Другой балансировщик нагрузки встроен в K8s, и он балансирует нагрузку между блоками.