你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Stack Edge Pro GPU 设备的 Kubernetes 群集上启用 Azure Arc
适用于:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
本文介绍如何在 Azure Stack Edge Pro 设备的现有 Kubernetes 群集上启用 Azure Arc。
此过程假定你已阅读并理解以下文章:
先决条件
确保已在 Azure Stack Edge Pro 设备和用于访问该设备的客户端上满足了以下先决条件:
对于设备
你有单节点 Azure Stack Edge Pro 设备的登录凭据。
你对订阅具有所有者访问权限。 你在服务主体的角色分配步骤中需要此访问权限。
对于访问设备的客户端
你有一个用于访问 Azure Stack Edge Pro 设备的 Windows 客户端系统。
客户端运行 Windows PowerShell 5.0 或更高版本。 若要下载最新版 Windows PowerShell,请转到安装 Windows PowerShell。
也可使用任何其他客户端,只要安装了受支持的操作系统即可。 本文介绍使用 Windows 客户端时的过程。
你已完成在 Azure Stack Edge Pro 设备上访问 Kubernetes 群集中所述的过程。 你已:
- 在客户端上安装
kubectl
。 - 确保
kubectl
客户端版本与 Azure Stack Edge Pro 设备上运行的 Kubernetes 主版本相差不超过一个版本。使用
kubectl version
检查在客户端上运行的 kubectl 的版本。 记下完整版本。在 Azure Stack Edge Pro 设备的本地 UI 中,转到“软件更新”,并记下 Kubernetes 服务器版本号。
验证这两个版本是否兼容。
- 在客户端上安装
注册 Kubernetes 资源提供程序
在 Kubernetes 群集上启用 Azure Arc 之前,需要针对你的订阅启用并注册 Microsoft.Kubernetes
和 Microsoft.KubernetesConfiguration
。
若要启用资源提供程序,请在 Azure 门户中转到计划用于部署的订阅。 转到“资源提供程序”。
在右窗格中,搜索要添加的提供程序, 在此示例中为
Microsoft.Kubernetes
和Microsoft.KubernetesConfiguration
。选择资源提供程序,然后在命令栏顶部选择“注册”。 注册需要几分钟。
刷新 UI,直到看到资源提供程序已注册。 对两个资源提供程序重复此过程。
还可以通过 az cli
注册资源提供程序。 有关详细信息,请参阅为已启用 Azure Arc 的 Kubernetes 注册两个提供程序。
创建服务主体并分配角色
确保你有
Subscription ID
和用于 Azure Stack Edge 服务资源部署的资源组的名称。 若要获取订阅 ID,请转到 Azure 门户中的 Azure Stack Edge 资源。 导航到“概述”>“基本信息”。若要获取资源组名称,请转到“属性”。
若要创建服务主体,请通过
az cli
使用以下命令。az ad sp create-for-rbac --name "<Informative name for service principal>"
若要了解如何登录到
az cli
,请在 Azure 门户中启动 Cloud Shell。 如果在本地客户端上使用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 角色(在命令中使用角色 ID)。 使用以下命令: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>
在 Kubernetes 群集上启用 Arc
按照以下步骤配置用于 Azure Arc 管理的 Kubernetes 群集:
类型:
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
。 提供服务主体密码。如果使用的云不是 Azure 公有云,请添加
CloudEnvironment
参数。 可以将此参数设置为AZUREPUBLICCLOUD
、AZURECHINACLOUD
、AZUREGERMANCLOUD
和AZUREUSGOVERNMENTCLOUD
。注意
- 若要在设备上部署 Azure Arc,请确保使用受支持的 Azure Arc 区域。
- 使用
az account list-locations
命令找出要传入到Set-HcsKubernetesAzureArcAgent
cmdlet 的确切位置名称。 位置名称的格式通常不含任何空格。 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
下面是一个示例输出,显示了已在 Kubernetes 群集上的
azure-arc
命名空间中部署的 Azure Arc 代理。[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>
此处提供了这些代理的概念性概述。
从 Kubernetes 群集中删除 Arc
若要删除 Azure Arc 管理,请执行以下步骤:
类型:
Remove-HcsKubernetesAzureArcAgent
注意
默认情况下,从 Git 存储库中删除资源 yamls
时,不会从 Kubernetes 群集中删除相应的资源。 需要在 Arc OperatorParams 中设置 --sync-garbage-collection
,这样,当你从 git 存储库中删除资源时,就能够删除资源。 有关详细信息,请参阅删除配置
后续步骤
若要了解如何运行 Azure Arc 部署,请参阅在 Azure Stack Edge Pro 设备上通过 GitOps 使用 Redis 部署无状态 PHP Guestbook
应用程序