Развертывание расширения для кластеров Kubernetes с поддержкой MetalLB для Azure Arc с помощью Azure CLI

Применяется для: AKS на Azure Local

Основной целью подсистемы балансировки нагрузки является распределение трафика между несколькими узлами в кластере Kubernetes. Это может помочь предотвратить простои и повысить общую производительность приложений. Гибридная среда AKS и Edge поддерживает создание экземпляра подсистемы балансировки нагрузки MetalLB в кластере Kubernetes с помощью расширения Arc.

Необходимые компоненты

  • Кластер Kubernetes с поддержкой Azure Arc с по крайней мере одним узлом Linux. Вы можете создать кластер Kubernetes в локальной среде Azure с помощью Azure CLI или портала Azure. AKS в локальных кластерах Azure по умолчанию включен Arc.
  • Убедитесь, что у вас достаточно IP-адресов для подсистемы балансировки нагрузки. Для AKS в Azure Local убедитесь, что IP-адреса, зарезервированные для подсистемы балансировки нагрузки, не конфликтуют с IP-адресами логических сетей виртуальной машины Arc и IP-адресами плоскости управления. Дополнительные сведения о планировании IP-адресов и сети в Kubernetes см. в разделе "Требования к сети" для Kubernetes и планирования IP-адресов для Kubernetes.
  • В этом руководстве предполагается, что вы понимаете, как работает MetalLB. Дополнительные сведения см. в обзоре 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, выполните следующие действия:

  1. Зарегистрируйте 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
    
  2. Чтобы установить расширение 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 в режиме BGP или в Both режиме создание одноранговых узлов 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

Следующие шаги

Использование расширения GitOps Flux версии 2 Arc для развертывания приложений в кластере Kubernetes