Развертывание расширения для кластеров Kubernetes с поддержкой MetalLB для Azure Arc с помощью Azure CLI
Область применения: Локальная версия Azure, версия 23H2
Основной целью подсистемы балансировки нагрузки является распределение трафика между несколькими узлами в кластере Kubernetes. Это может помочь предотвратить простои и повысить общую производительность приложений. AKS, включенный Azure Arc, поддерживает создание экземпляра подсистемы балансировки нагрузки MetalLB в кластере Kubernetes с помощью расширения Arc.
Необходимые компоненты
- Кластер Kubernetes с поддержкой Azure Arc с хотя бы одним узлом Linux. Кластер Kubernetes можно создать в локальной версии Azure, версии 23H2 с помощью Azure CLI или портал Azure. AKS в локальной среде Azure, версии 23H2 кластеры Arc включены по умолчанию.
- Убедитесь, что у вас достаточно IP-адресов для подсистемы балансировки нагрузки. Для AKS в Локальной среде Azure версии 23H2 убедитесь, что IP-адреса, зарезервированные для подсистемы балансировки нагрузки, не конфликтуют с IP-адресами в логических сетях виртуальной машины Arc и IP-адресами плоскости управления. Дополнительные сведения о планировании IP-адресов и сети в Kubernetes см. в разделе "Требования к сети" для Kubernetes и планирования IP-адресов для Kubernetes.
- В этом руководстве предполагается, что вы понимаете, как работает металлическая подсистема балансировки нагрузки. Дополнительные сведения см. в обзоре MetalLB для Kubernetes.
Установка расширения Azure CLI
Выполните следующую команду, чтобы установить необходимое расширение Azure CLI:
az extension add -n k8s-runtime --upgrade
Включение расширения Arc для MetalLB
Настройте следующие переменные перед продолжением.
Параметр | Описание |
---|---|
$subId |
Идентификатор подписки Azure кластера Kubernetes. |
$rgName |
Группа ресурсов Azure кластера Kubernetes. |
$clusterName |
Имя кластера Kubernetes. |
Вариант 1. Включение расширения Arc для MetalLB с помощью az k8s-runtime load-balancer enable
команды
Чтобы включить расширение Arc для MetalLB с помощью следующей команды, необходимо иметь разрешение Graph Application.Read.All. Вы можете проверить, есть ли у вас это разрешение, войдите в подписку Azure и выполните следующую команду:
`az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --output json`
Если команда завершается ошибкой, обратитесь к администратору клиента Azure, чтобы получить Application.Read.All
роль.
Если у вас есть разрешение, можно использовать az k8s-runtime load-balancer enable
команду для установки расширения Arc и регистрации поставщика ресурсов для кластера Kubernetes. Параметр --resource-uri
ссылается на идентификатор диспетчера ресурсов кластера Kubernetes.
az k8s-runtime load-balancer enable --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName
Вариант 2. Включение расширения Arc для MetalLB с помощью az k8s-extension add
команды
Если у вас нет разрешения Graph Application.Read.All, выполните следующие действия:
- Зарегистрируйте,
Microsoft.KubernetesRuntime RP
если вы еще этого не сделали. Обратите внимание, что необходимо зарегистрировать только один раз на подписку Azure. Вы также можете зарегистрировать поставщиков ресурсов с помощью портал Azure. Дополнительные сведения о регистрации поставщиков ресурсов и необходимых разрешений см. в статье о регистрации поставщика ресурсов.
az provider register -n Microsoft.KubernetesRuntime
Вы можете проверить, успешно ли зарегистрирован поставщик ресурсов, выполнив следующую команду.
az provider show -n Microsoft.KubernetesRuntime -o table
Ожидаемые выходные данные:
Namespace RegistrationPolicy RegistrationState
--------------------------- -------------------- -------------------
Microsoft.KubernetesRuntime RegistrationRequired Registered
- Чтобы установить расширение Arc для MetalLB, получите идентификатор AppID поставщика ресурсов расширения MetalLB, а затем выполните команду создания расширения. Для каждого кластера Arc Kubernetes необходимо выполнить следующие команды.
Получите идентификатор приложения расширения Arc, выполнив команду az ad sp list. Чтобы выполнить следующую команду, необходимо быть user
членом клиента Azure. Дополнительные сведения о членстве пользователей и гостей см. в разделе "Разрешения пользователей по умолчанию" в идентификаторе Microsoft Entra.
$objID = az ad sp list --filter "appId eq '00001111-aaaa-2222-bbbb-3333cccc4444'" --query "[].id" --output tsv
После $objID можно установить расширение MetalLB Arc в кластере Kubernetes. Чтобы выполнить приведенную ниже команду, необходимо иметь роль участника расширения Kubernetes.
az k8s-extension create --cluster-name $clusterName -g $rgName --cluster-type connectedClusters --extension-type microsoft.arcnetworking --config k8sRuntimeFpaObjectId=$objID -n arcnetworking
Развертывание подсистемы балансировки нагрузки MetalLB в кластере Kubernetes
Теперь вы можете создать подсистему балансировки нагрузки для кластера Kubernetes удаленно, выполнив az k8s-runtime load-balancer create
команду. Эта команда создает настраиваемый ресурс типа IPAddressPool
в пространстве kube-system
имен.
Настройте следующие переменные перед продолжением.
Параметр | Описание |
---|---|
$lbName |
Имя экземпляра подсистемы балансировки нагрузки MetalLB. |
$advertiseMode |
Режим балансировки нагрузки MetalLB. Поддерживаемые значения: ARP , BGP или Both . |
$ipRange |
Диапазон IP-адресов для подсистемы балансировки нагрузки MetalLB в ARP режиме или Both в режиме. |
Если режим объявления или BGP
Both
, он также создает пользовательский ресурс типа BGPAdvertisement
. Если режим объявления имеет ARP
или Both
, он также создает настраиваемый ресурс типа L2Advertisement
:
az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --addresses $ipRange --advertise-mode $advertiseMode
Создание однорангового узла BGP для кластера Kubernetes
Создайте одноранговый узел BGP для кластера Kubernetes удаленно, выполнив az k8s-runtime bgp-peer create
команду. Обратите внимание, что одноранговый узел BGP действует для всех подсистем балансировки нагрузки, имеющих BGP
или Both
объявляющих режим. При использовании подсистемы балансировки нагрузки MetalLB в режиме Both
или в BGP
режиме создание одноранговых узлов BGP является обязательным.
Настройте следующие переменные перед продолжением.
Параметр | Описание |
---|---|
$peerName |
Имя однорангового узла BGP. |
$myASN |
Номер AS, используемый для локального окончания сеанса. |
$peerASN |
Число AS, ожидаемое от удаленного окончания сеанса. |
$peerIP |
Адрес для набора при установке сеанса. |
az k8s-runtime bgp-peer create --bgp-peer-name $peerName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --my-asn $myASN --peer-asn $peerASN --peer-address $peerIP