ПР. Балансировка нагрузки

Кратко:

  • Веб-приложения должны быть доступны из интернета.
  • Сервис LoadBalancer используется для решения этой проблемы.
  • Внутренний IP-адрес может меняться, поэтому нужен публичный IP-адрес балансировщика.
  • Создается файл-манифест с описанием балансировщика.
  • Выполняется манифест с помощью kubectl.
  • В консоли управления можно увидеть созданный балансировщик.
  • Копируется IP-адрес балансировщика в адресную строку браузера для доступа к приложению.

Практическая работа. Балансировка нагрузки

Большинство веб-приложений созданы, чтобы взаимодействовать через интернет. Вы развернули в кластере приложение, но у вас пока нет к нему доступа из интернета. Чтобы исправить эту проблему, воспользуемся сервисом LoadBalancer.
У созданного пода есть внутренний IP-адрес.
Помните, мы говорили о том, что в кластере есть собственный сервис DNS? Он работает с внутренними IP-адресами объектов кластера, чтобы те могли взаимодействовать.
Однако внутренний IP-адрес может меняться, когда ресурсы группы узлов обновляются. Чтобы обращаться к приложению извне, требуется неизменный публичный IP-адрес — это и будет IP-адрес балансировщика.
  1. Создайте файл-манифест load-balancer.yaml:
     apiVersion: v1
     kind: Service
     metadata:
       name: my-loadbalancer
     spec:
       selector:
          app: nginx
       ports:
       - port: 80
         targetPort: 80
       type: LoadBalancer 
     
    Где:
    port — порт сетевого балансировщика, на котором будут обслуживаться пользовательские запросы;
    targetPort — порт контейнера, на котором доступно приложение;
    selector — метка селектора из шаблона подов в манифесте объекта Deployment.
  2. Выполните манифест:
    kubectl apply -f <путь_к_файлу_load-balancer.yaml>
     
    Вы увидите сообщение:
    service/my-loadbalancer created
     
     
  3. В консоли управления откройте раздел Load Balancer. Там должен появиться балансировщик нагрузки с префиксом k8s в имени и уникальным идентификатором кластера Kubernetes.
  4. Скопируйте IP-адрес балансировщика в адресную строку браузера. Вы увидите приветственную страницу NGINX.
Если при создании ресурсов вы получаете ошибку failed to ensure cloud loadbalancer: failed to start cloud lb creation: Permission denied, убедитесь, что вашему сервисному аккаунту хватает прав. Подробнее читайте в документации