Настройка подсистемы балансировки нагрузки службы в службе Nexus Kubernetes оператора Azure
В этой статье описано, как настроить подсистему балансировки нагрузки службы в кластере Nexus Kubernetes. Подсистема балансировки нагрузки позволяет внешним службам получать доступ к службам, работающим в кластере. Основное внимание в этом руководстве уделяется аспектам конфигурации, предоставляя примеры, которые помогут вам понять процесс. Следуя этому руководству, вы можете эффективно настроить подсистемы балансировки нагрузки служб в кластере Nexus Kubernetes.
Необходимые компоненты
Прежде чем продолжить работу с этим руководством, рекомендуется:
- Ознакомьтесь с кратким руководством по кластеру Nexus Kubernetes, чтобы получить полный обзор и действия.
- Убедитесь, что выполнены указанные предварительные требования, чтобы обеспечить плавную реализацию руководства.
- Знание концепций Kubernetes, включая развертывания и службы.
- Обратитесь к администратору сети, чтобы получить диапазон IP-адресов, который можно использовать для пула IP-адресов подсистемы балансировки нагрузки.
Ограничения
- Конфигурация пула IP неизменяема: после установки ее нельзя изменить в кластере Nexus Kubernetes.
- Имена пулов IP-адресов должны начинаться с строчной буквы или цифры и заканчиваться строчным буквой или цифрой.
- Имена ip-пулов не должны превышать 63 символов, чтобы избежать потенциальных проблем или ограничений.
- Пулы IP-адресов не должны перекрываться с существующим префиксом POD CIDR, Service CIDR или CNI, чтобы предотвратить конфликты и сетевые проблемы в кластере.
Важно!
Эти инструкции предназначены для создания нового кластера Nexus Kubernetes. Избегайте применения шаблона Bicep к существующему кластеру, так как конфигурация пула IP неизменяема. После создания кластера с конфигурацией пула IP-адресов его нельзя изменить.
Варианты конфигурации
Перед настройкой пула IP-адресов для подсистемы балансировки нагрузки службы важно понимать доступные параметры конфигурации. Эти параметры позволяют определить поведение и параметры пула IP-адресов в соответствии с конкретными требованиями.
Давайте рассмотрим параметры конфигурации пула IP-адресов.
Обязательные параметры
Для конфигурации пула IP-адресов требуется наличие двух полей: addresses
и name
. Эти поля важны для определения диапазона IP-адресов и идентификации пула.
- Поле
addresses
указывает список диапазонов IP-адресов, которые можно использовать для выделения в пуле. Каждый диапазон можно определить как подсеть в формате CIDR. Избегайте использования одного IP-адреса, например /32 для IPv4 и /128 для IPv6. - Поле
name
служит уникальным идентификатором пула IP-адресов. Он помогает связать пул с объявлением BGP (протокол пограничного шлюза), обеспечивая эффективное взаимодействие в кластере.
Примечание.
Чтобы разрешить службе Kubernetes LoadBalancer
иметь двойной адрес стека, убедитесь, что конфигурация пула IP-адресов включает как IPv4, так и IPv6 CIDR.
Необязательные параметры
Помимо обязательных полей, существуют также необязательные поля для дальнейшей настройки конфигурации пула IP-адресов.
- Поле
autoAssign
определяет, назначаются ли IP-адреса из пула автоматически. Это поле является типомstring
со значениемTrue
по умолчанию. Его можно задать либоTrue
False
на основе ваших предпочтений. - Поле
onlyUseHostIps
управляет использованием IP-адресов,.0
заканчивающимися и.255
в пуле. Включение этого параметра ограничивает использование IP-адресов между.1
и.254
(включительно), за исключением зарезервированных сетевых и широковещательных адресов.
Параметры шаблона Bicep для конфигурации пула IP-адресов
В следующем фрагменте JSON показаны параметры, необходимые для настройки пула IP-адресов в шаблоне Bicep.
"ipAddressPools": {
"value": [
{
"addresses": ["<IP>/<CIDR>"],
"name": "<pool-name>",
"autoAssign": "True", /* "True"/"False" */
"onlyUseHostIps": "True" /* "True"/"False" */
}
]
}
Чтобы добавить конфигурацию пула IP-адресов в кластер, необходимо обновить kubernetes-deploy-parameters.json
файл, созданный во время быстрого запуска. Включите конфигурацию пула IP-адресов в этот файл в соответствии с нужными параметрами.
После добавления конфигурации пула IP-адресов в файл параметров можно продолжить развертывание шаблона Bicep. Это действие настраивает новый кластер с указанной конфигурацией пула IP-адресов, что позволяет использовать пул IP-адресов в соответствии с указанными параметрами.
Следуя этим инструкциям, вы можете создать кластер Nexus Kubernetes с требуемой конфигурацией пула IP-адресов и воспользоваться преимуществами пула IP-адресов для служб кластера.
Примеры параметров
Этот файл параметров предназначен для использования с шаблоном Bicep краткого руководства Bicep для создания кластера с включенной подсистемой балансировки нагрузки BGP. Он содержит необходимые параметры конфигурации для настройки кластера с функциональностью подсистемы балансировки нагрузки BGP. Используя этот файл параметров с шаблоном Bicep, можно создать кластер с необходимыми возможностями подсистемы балансировки нагрузки BGP.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"kubernetesClusterName":{
"value": "lb-test-cluster"
},
"adminGroupObjectIds": {
"value": [
"00000000-0000-0000-0000-000000000000"
]
},
"cniNetworkId": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
},
"cloudServicesNetworkId": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
},
"extendedLocation": {
"value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
},
"location": {
"value": "eastus"
},
"sshPublicKeys": {
"value": [
{
"keyData": "ssh-rsa AAAAB..."
},
{
"keyData": "ssh-rsa AAAAC..."
}
]
},
"ipAddressPools": {
"value": [
{
"addresses": ["<IP>/<CIDR>"],
"name": "<pool-name>",
"autoAssign": "True",
"onlyUseHostIps": "True"
}
]
}
}
}
Примечание.
Если вы планируете создать службу DualStack, убедитесь, что пул адресов содержит как CIDR IPv4, так и IPv6 CIDR. Это позволяет одновременно поддерживать адреса IPv4 и IPv6 в конфигурации подсистемы балансировки нагрузки.
Пример. Выделение статических IP-адресов для службы
Чтобы выделить статический IP-адрес для службы, можно использовать следующие команды.
Создание развертывания
kubectl create deployment nginx --image=nginx --port 80
Выделение статических IP-адресов (LoadBalancerIP)
kubectl expose deployment nginx \
--name nginx-loadbalancer-pool1-static \
--type LoadBalancer \
--load-balancer-ip <IP from pool-1>
Замените <IP from pool-1>
нужным IP-адресом из пула IP-адресов.
Выделение статических IP-адресов (ExternalIP)
kubectl expose deployment nginx \
--name nginx-clusterip-pool1-static \
--type ClusterIP \
--external-ip <IP from pool-1>
Замените <IP from pool-1>
нужным IP-адресом из пула IP-адресов.
Пример: выделение IP-адресов для службы из определенного пула IP-адресов
Чтобы выделить IP-адрес для службы из определенного пула IP-адресов, можно использовать следующую команду.
kubectl expose deployment nginx \
--name nginx-loadbalancer-pool2-auto \
--type LoadBalancer \
--overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'
Эта команда назначает IP-адрес службе из пула pool-2
IP- адресов. При необходимости измените имя пула. Прежде чем попробовать эти примеры, убедитесь, что вы уже создали кластер Nexus Kubernetes с двумя различными пулами IP-адресов. Если этого не сделано, выполните необходимые действия, чтобы создать кластер и настроить пулы IP-адресов соответствующим образом.
Примечание.
Имя пула IP-адресов учитывает регистр. Не забудьте использовать правильный случай при указании имени пула.
Следующие шаги
Вы можете попробовать развернуть сетевую функцию (NF) в кластере Nexus Kubernetes, используя только что настроенную подсистему балансировки нагрузки. Эта конфигурация позволяет протестировать возможности балансировки нагрузки и наблюдать за распределением трафика между экземплярами NF.