Включение Azure Arc в кластере Kubernetes на устройстве GPU Azure Stack Edge Pro
ОБЛАСТЬ ПРИМЕНЕНИЯ: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
В этой статье показано, как включить Azure Arc в существующем кластере Kubernetes на устройстве GPU Azure Stack Edge Pro.
В этой процедуре предполагается, что вы прочитали и поняли следующие статьи:
- Рабочие нагрузки Kubernetes на устройстве Azure Stack Edge Pro
- Что такое Kubernetes с поддержкой Azure Arc (предварительная версия)?
Необходимые компоненты
Убедитесь, что вы выполнили следующие предварительные требования на устройстве Azure Stack Edge Pro и клиенте, используемом для доступа к устройству:
Для устройств
У вас есть учетные данные для входа на устройство Azure Stack Edge Pro с 1 узлом.
- Устройство активировано. См. Активация устройства.
- Для устройства настроена роль вычислений на портале Azure, а также установлен кластер Kubernetes. См. Настройка вычислений.
У вас есть доступ владельца к подписке. Этот доступ потребуется на этапе назначения роли для субъекта-службы.
Для клиента, получающего доступ к устройству
У вас есть клиентская система Windows, используемая для доступа к устройству Azure Stack Edge Pro.
На клиенте работает Windows PowerShell 5.0 или более поздней версии. Чтобы узнать, как скачать последнюю версию Windows PowerShell, перейдите к статье Установка Windows PowerShell.
Также можно использовать любой другой клиент с поддерживаемой операционной системой. В этой статье описывается процедура с использованием клиента Windows.
Вы выполнили процедуру, описанную в разделе Access кластера Kubernetes на устройстве Azure Stack Edge Pro. Вы выполнили следующие задачи:
- Установили
kubectl
на клиенте. - Убедитесь, что версия клиента
kubectl
отличается не более чем на единицу от главной версии Kubernetes, работающей на устройстве Azure Stack Edge Pro.Используйте
kubectl version
для проверки версии kubectl, работающей на клиенте. Запишите полный номер версии.В локальном пользовательском интерфейсе устройства Azure Stack Edge Pro перейдите в раздел Обновление программного обеспечения и запишите номер версии сервера Kubernetes.
Убедитесь, что эти две версии совместимы.
- Установили
Регистрация поставщиков ресурсов Kubernetes
Прежде чем включить Azure Arc в кластере Kubernetes, необходимо включить и зарегистрировать подписку и Microsoft.KubernetesConfiguration
зарегистрировать Microsoft.Kubernetes
ее.
Чтобы включить поставщика ресурсов, в портал Azure перейдите в подписку, которую планируете использовать для развертывания. Выберите Поставщики ресурсов.
На правой панели найдите поставщики, которые нужно добавить. В данном примере —
Microsoft.Kubernetes
иMicrosoft.KubernetesConfiguration
.Выберите поставщик ресурсов, затем в верхней части панели команд выберите Зарегистрировать. Регистрация займет несколько минут.
Обновите пользовательский интерфейс, пока не увидите, что поставщик ресурсов зарегистрирован. Повторите процесс для обоих поставщиков ресурсов.
Поставщики ресурсов также можно зарегистрировать с помощью az cli
. Дополнительные сведения см. в разделе "Регистрация двух поставщиков для Kubernetes с поддержкой Azure Arc".
Создание субъекта-службы, назначение роли
Убедитесь, что у вас есть
Subscription ID
и имя группы ресурсов, использованной для развертывания ресурсов для службы Azure Stack Edge. Чтобы получить идентификатор подписки, перейдите к ресурсу Azure Stack Edge на портале Azure. Перейдите к обзору > Essentials.Чтобы получить имя группы ресурсов, перейдите в раздел Свойства.
Чтобы создать субъект-службу, воспользуйтесь указанной ниже командой посредством
az cli
.az ad sp create-for-rbac --name "<Informative name for service principal>"
Сведения о входе в
az cli
cloud Shell в портал Azure. При использованииaz cli
локального клиента для создания субъекта-службы убедитесь, что вы используете версию 2.25 или более позднюю.Рассмотрим пример.
PS /home/user> az ad sp create-for-rbac --name "https://azure-arc-for-ase-k8s" { "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "azure-arc-for-ase-k8s", "name": "https://azure-arc-for-ase-k8s", "password": "<password>", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } PS /home/user>
Запишите
appID
значение ,name
password
иtenantID
при использовании этих значений в качестве входных данных для следующей команды.После создания нового субъекта-службы назначьте роль
Kubernetes Cluster - Azure Arc Onboarding
только что созданному субъекту. Это встроенная роль Azure (используйте идентификатор роли в команде) с ограниченными разрешениями. Используйте следующую команду:az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee <appId-from-service-principal> --scope /subscriptions/<SubscriptionID>/resourceGroups/<Resource-group-name>
Рассмотрим пример.
PS /home/user> az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1 { "canDelegate": null, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000", "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "principalType": "ServicePrincipal", "resourceGroup": "myaserg1", "roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41", "scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1", "type": "Microsoft.Authorization/roleAssignments" } PS /home/user>
Включение Arc в кластере Kubernetes
Выполните следующие действия, чтобы настроить кластер Kubernetes для управления Azure Arc.
Тип:
Set-HcsKubernetesAzureArcAgent -SubscriptionId "<Your Azure Subscription Id>" -ResourceGroupName "<Resource Group Name>" -ResourceName "<Azure Arc resource name (shouldn't exist already)>" -Location "<Region associated with resource group>" -TenantId "<Tenant Id of service principal>" -ClientId "<App id of service principal>"
При выполнении этой команды введите
ClientSecret
следующую строку. Укажите пароль субъекта-службы.CloudEnvironment
Добавьте параметр, если вы используете облако, отличное от общедоступного azure. Этому параметру можно присвоить значениеAZUREPUBLICCLOUD
,AZURECHINACLOUD
,AZUREGERMANCLOUD
иAZUREUSGOVERNMENTCLOUD
.Примечание.
- Чтобы развернуть Azure Arc на устройстве, убедитесь, что используется поддерживаемый регион для Azure Arc.
- Используйте команду
az account list-locations
, чтобы выяснить точное имя расположения для передачи в командлетSet-HcsKubernetesAzureArcAgent
. Имена расположений обычно форматируются без пробелов. ClientId
иClientSecret
являются обязательными.
Приведем пример:
[10.100.10.10]: PS>Set-HcsKubernetesAzureArcAgent -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "myaserg1" -ResourceName "myasetestresarc" -Location "westeurope" -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ClientId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" WARNING: A script or application on the remote computer 10.126.76.0 is sending a prompt request. When you are prompted, enter sensitive information, such as credentials or passwords, only if you trust the remote computer and the application or script that is requesting the data. cmdlet Set-HcsKubernetesAzureArcAgent at command pipeline position 1 Supply values for the following parameters: ClientSecret: ********************************** [10.100.10.10]: PS>
На портале Azure следует создать ресурс с именем, указанным в предыдущей команде.
Чтобы убедиться в успешном включении Azure Arc, выполните следующую команду в интерфейсе PowerShell:
kubectl get deployments,pods -n azure-arc
Ниже приведен пример выходных данных, показывающих агенты Azure Arc, развернутые в кластере
azure-arc
Kubernetes в пространстве имен.[10.128.44.240]: PS>kubectl get deployments,pods -n azure-arc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-metadata-operator 1/1 1 1 13d deployment.apps/clusterconnect-agent 1/1 1 1 13d deployment.apps/clusteridentityoperator 1/1 1 1 13d deployment.apps/config-agent 1/1 1 1 13d deployment.apps/controller-manager 1/1 1 1 13d deployment.apps/extension-manager 1/1 1 1 13d deployment.apps/flux-logs-agent 1/1 1 1 13d deployment.apps/kube-aad-proxy 1/1 1 1 13d deployment.apps/metrics-agent 1/1 1 1 13d deployment.apps/resource-sync-agent 1/1 1 1 13d NAME READY STATUS RESTARTS AGE pod/cluster-metadata-operator-9568b899c-2stjn 2/2 Running 0 13d pod/clusterconnect-agent-576758886d-vggmv 3/3 Running 0 13d pod/clusteridentityoperator-6f59466c87-mm96j 2/2 Running 0 13d pod/config-agent-7cbd6cb89f-9fdnt 2/2 Running 0 13d pod/controller-manager-df6d56db5-kxmfj 2/2 Running 0 13d pod/extension-manager-58c94c5b89-c6q72 2/2 Running 0 13d pod/flux-logs-agent-6db9687fcb-rmxww 1/1 Running 0 13d pod/kube-aad-proxy-67b87b9f55-bthqv 2/2 Running 0 13d pod/metrics-agent-575c565fd9-k5j2t 2/2 Running 0 13d pod/resource-sync-agent-6bbd8bcd86-x5bk5 2/2 Running 0 13d [10.128.44.240]: PS>
Общие сведения об этих агентах доступны здесь.
Удаление Arc из кластера Kubernetes
Чтобы удалить управление Azure Arc, выполните следующие действия.
Тип:
Remove-HcsKubernetesAzureArcAgent
Примечание.
По умолчанию, когда ресурс yamls
удаляется из репозитория Git, соответствующие ресурсы не удаляются из кластера Kubernetes. Необходимо задать --sync-garbage-collection
в Arc OperatorParams, чтобы разрешить удаление ресурсов при удалении из репозитория Git. Дополнительные сведения см. в статье Удаление конфигурации.
Следующие шаги
Сведения о том, как запустить развертывание Azure Arc, см. в статье Развертывание приложения PHP без отслеживания состояния Guestbook
с помощью Redis через GitOps на устройстве Azure Stack Edge Pro.