ALB — это кастомный ресурс, представляющий балансировщик нагрузки. alb-operator, который по умолчанию встроен во все кластеры, отслеживает операции создания/обновления/удаления ресурсов ALB и в ответ создает соответствующие Deployment и Service.
Для каждого ALB создаётся соответствующий Deployment, который отслеживает все Frontend и Rule, прикрепленные к этому ALB, и маршрутизирует запросы к backend на основе этих конфигураций.
Высокая доступность Load Balancer требует VIP. Пожалуйста, обратитесь к разделу Настройка VIP.
Конфигурация ALB состоит из трёх частей.
Поля, связанные с ресурсами, описывают конфигурацию развертывания alb.
Поле | Тип | Описание |
---|---|---|
.spec.config.nodeSelector | map[string]string | селектор узлов для alb |
.spec.config.replicas | int, необязательно, по умолчанию 3 | количество реплик alb |
.spec.config.resources.limits | k8s container-resource, необязательно | лимиты контейнера nginx alb |
.spec.config.resources.requests | k8s container-resource, необязательно | запросы контейнера nginx alb |
.spec.config.resources.alb.limits | k8s container-resource, необязательно | лимиты контейнера alb |
.spec.config.resources.alb.requests | k8s container-resource, необязательно | запросы контейнера alb |
.spec.config.antiAffinityKey | string, необязательно, по умолчанию local | k8s antiAffinityKey |
Поля, связанные с сетью, описывают способ доступа к ALB. Например, в режиме host
alb использует hostnetwork, и доступ к ALB осуществляется по IP узла.
Поле | Тип | Описание |
---|---|---|
.spec.config.networkMode | string: host или container , необязательно, по умолчанию host | В режиме container оператор создаёт Service типа LoadBalancer и использует его адрес как адрес ALB. |
.spec.address | string, обязательно | можно вручную указать адрес alb |
.spec.config.vip.enableLbSvc | bool, необязательно | Автоматически true в режиме container . |
.spec.config.vip.lbSvcAnnotations | map[string]string, необязательно | Дополнительные аннотации для Service типа LoadBalancer. |
Поле | Тип |
---|---|
.spec.config.projects | []string, обязательно |
.spec.config.portProjects | string, необязательно |
.spec.config.enablePortProject | bool, необязательно |
Добавление ALB в проект означает:
Если вы включаете порт-проект и назначаете диапазон портов проекту, это означает:
В alb CR есть некоторые глобальные настройки, которые можно изменить.
Некоторые общие настройки доступны в веб-интерфейсе. Следуйте этим шагам для создания балансировщика нагрузки:
Каждое поле ввода в веб-интерфейсе соответствует полю CR:
Параметр | Описание |
---|---|
Assigned Address | .spec.address |
Allocated By | Instance означает режим проекта, где можно выбрать проект ниже, port — режим порт-проекта, где можно назначить диапазон портов после создания alb |
Обновление балансировщика нагрузки приведёт к прерыванию сервиса на 3–5 минут. Пожалуйста, выбирайте подходящее время для этой операции!
Войдите в Administrator.
В левой навигационной панели нажмите Network Management > Load Balancer.
Нажмите ⋮ > Update.
Обновите конфигурацию сети и ресурсов по необходимости.
Пожалуйста, устанавливайте спецификации разумно в соответствии с бизнес-требованиями. Также можно обратиться к соответствующему руководству Как правильно выделять CPU и память.
Внутренний роутинг поддерживает только обновление из состояния Disabled в Enabled.
Нажмите Update.
После удаления балансировщика нагрузки связанные порты и правила также будут удалены и не подлежат восстановлению.
Войдите в Administrator.
В левой навигационной панели нажмите Network Management > Load Balancer.
Нажмите ⋮ > Delete и подтвердите.
Frontend — это кастомный ресурс, который определяет порт слушателя и протокол для ALB. Поддерживаемые протоколы: L7 (http|https|grpc|grpcs) и L4 (tcp|udp). В L4 Proxy frontend используется для прямой настройки backend-сервиса. В L7 Proxy frontend настраивает порты слушателя, а backend-сервис настраивается через rule. Если необходимо добавить HTTPS-порт слушателя, следует также обратиться к администратору для назначения TLS-сертификата текущему проекту для шифрования.
Сначала создайте ALB.
alb label: Обязательно, указывает экземпляр ALB, к которому принадлежит этот Frontend
.
имя frontend: Формат $alb_name-$port
.
port: порт, на котором слушает.
protocol: протокол, используемый на этом порту.
certificate_name: для протоколов grpcs и https, указывает используемый сертификат по формату $secret_ns/$secret_name
.
backendProtocol: протокол, используемый backend-сервисом.
По умолчанию serviceGroup
:
Перейдите в Container Platform.
В левой навигационной панели нажмите Network > Load Balancing.
Нажмите на имя балансировщика нагрузки, чтобы перейти на страницу деталей.
Нажмите Add Port.
Каждое поле ввода в веб-интерфейсе соответствует полю CR
Параметр | Описание |
---|---|
Session Affinity | .spec.serviceGroup.session_affinity_policy |
Для трафика с портов HTTP, gRPC и HTTPS, помимо группы внутреннего роутинга по умолчанию, можно задать более разнообразные правила сопоставления backend-сервисов rules. Балансировщик нагрузки сначала сопоставит соответствующий backend-сервис согласно заданным правилам; если совпадений не будет, он сопоставит backend-сервисы, соответствующие упомянутой группе внутреннего роутинга.
Вы можете нажать на значок ⋮ справа на странице списка или нажать Actions в правом верхнем углу страницы деталей, чтобы при необходимости обновить маршрут по умолчанию или удалить порт слушателя.
Если метод выделения ресурсов балансировщика нагрузки — Port, только администраторы могут удалять связанные порты слушателя в представлении Administrator.
Сочетая логи и данные мониторинга, вы можете быстро выявлять и устранять проблемы с балансировщиком нагрузки.
Перейдите в Administrator.
В левой навигационной панели нажмите Network Management > Load Balancer.
Нажмите на Имя Load Balancer.
Во вкладке Logs просмотрите логи работы балансировщика нагрузки с точки зрения контейнера.
В кластере, где расположен балансировщик нагрузки, должны быть развернуты сервисы мониторинга.
Перейдите в Administrator.
В левой навигационной панели нажмите Network Management > Load Balancer.
Нажмите на Имя Load Balancer.
Во вкладке Monitoring просмотрите информацию о тенденциях метрик балансировщика нагрузки с точки зрения узла.
Usage Rate: текущая загрузка CPU и памяти балансировщика нагрузки на данном узле.
Throughput: общий входящий и исходящий трафик экземпляра балансировщика нагрузки.
Для более подробной информации о метриках мониторинга смотрите ALB Monitoring.