ПР. Балансировка нагрузки
Кратко:
- Веб-приложения должны быть доступны из интернета.
- Сервис LoadBalancer используется для решения этой проблемы.
- Внутренний IP-адрес может меняться, поэтому нужен публичный IP-адрес балансировщика.
- Создается файл-манифест с описанием балансировщика.
- Выполняется манифест с помощью kubectl.
- В консоли управления можно увидеть созданный балансировщик.
- Копируется IP-адрес балансировщика в адресную строку браузера для доступа к приложению.
Практическая работа. Балансировка нагрузки
Большинство веб-приложений созданы, чтобы взаимодействовать через интернет. Вы развернули в кластере приложение, но у вас пока нет к нему доступа из интернета. Чтобы исправить эту проблему, воспользуемся сервисом LoadBalancer.
У созданного пода есть внутренний IP-адрес.
Помните, мы говорили о том, что в кластере есть собственный сервис DNS? Он работает с внутренними IP-адресами объектов кластера, чтобы те могли взаимодействовать.
Однако внутренний IP-адрес может меняться, когда ресурсы группы узлов обновляются. Чтобы обращаться к приложению извне, требуется неизменный публичный IP-адрес — это и будет IP-адрес балансировщика.
-
Создайте файл-манифест
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. -
Выполните манифест:
kubectl apply -f <путь_к_файлу_load-balancer.yaml>Вы увидите сообщение:service/my-loadbalancer created -
В консоли управления откройте раздел Load Balancer. Там должен появиться балансировщик нагрузки с префиксом k8s в имени и уникальным идентификатором кластера Kubernetes.
-
Скопируйте IP-адрес балансировщика в адресную строку браузера. Вы увидите приветственную страницу NGINX.
Если при создании ресурсов вы получаете ошибку
failed to ensure cloud loadbalancer: failed to start cloud lb creation: Permission denied, убедитесь, что вашему сервисному аккаунту хватает прав. Подробнее читайте в документации.