将Azure Kubernetes 服务群集连接到 Azure Arc

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

将 Azure Kubernetes 服务 (AKS) 群集附加到 Azure Arc 时,它将获取 Azure 资源管理器表示形式。 群集附加到标准 Azure 订阅,位于资源组中,可以像任何其他 Azure 资源一样接收标记。 此外,Kubernetes 表示形式还允许将以下功能扩展到 Kubernetes 群集:

  • 管理服务:配置(GitOps)、用于容器的 Azure Monitor、Azure Policy(Gatekeeper)。
  • 数据服务:SQL 托管实例超大规模 PostgreSQL。
  • 应用程序服务:App 服务、Functions、事件网格、逻辑应用、API 管理。

若要将 Kubernetes 群集连接到 Azure,群集管理员必须部署代理。 这些代理在名为 azure-arc 的 Kubernetes 命名空间中运行,并且是标准的 Kubernetes 部署。 代理负责连接到 Azure、收集 Azure Arc 日志和指标,并在群集上启用上述方案。

AKS 支持行业标准 SSL 来保护传输中的数据。 此外,数据以静态加密方式存储在 Azure Cosmos DB 数据库中,确保数据保密性。

以下步骤介绍如何将 AKS 群集连接到已启用 Arc 的 AKS 中的 Azure Arc。如果已使用 Windows Admin Center 将 Kubernetes 群集连接到 Azure Arc,则可以跳过这些步骤。

开始之前

验证是否已满足以下要求:

步骤 1 - 登录 Azure

若要登录到 Azure,请运行 Connect-AzAccount PowerShell 命令:

Connect-AzAccount $tenantId

若要切换到其他订阅,请运行 Set-AzContext PowerShell 命令:

Set-AzContext -Subscription $subscriptionId

步骤 2:注册 AKS 的两个提供程序

如果已在订阅中为 AKS 注册了两个提供程序,则可以跳过此步骤。 注册是一个异步过程,需要为每个订阅执行一次。 注册可能需要大约 10 分钟:

Register-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Register-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration
Register-AzResourceProvider -ProviderNamespace Microsoft.ExtendedLocation

可以检查是否已使用以下命令注册:

Get-AzResourceProvider -ProviderNamespace Microsoft.Kubernetes
Get-AzResourceProvider -ProviderNamespace Microsoft.KubernetesConfiguration
Get-AzResourceProvider -ProviderNamespace Microsoft.ExtendedLocation

步骤 3:使用 Aks-Hci PowerShell 模块连接到 Azure Arc

使用 Enable-AksHciArcConnection PowerShell 命令将 AKS 群集连接到 Kubernetes。 此步骤将用于 Kubernetes 的 Azure Arc 代理部署到 azure-arc 命名空间中:

Enable-AksHciArcConnection -name $clusterName 

使用服务主体将 AKS 群集连接到 Azure Arc

如果你无权访问作为所有者的订阅,则可以使用 服务主体将 AKS 群集连接到 Azure Arc。

第一个命令提示符提供服务主体凭据,并将其存储在变量中 $Credential 。 出现提示时,输入用户名的应用程序 ID,然后使用服务主体机密作为密码。 请确保从订阅管理员那里获取这些值。第二个命令使用存储在变量中的 $Credential 服务主体凭据将群集连接到 Azure Arc:

$Credential = Get-Credential
Enable-AksHciArcConnection -name $clusterName -subscriptionId $subscriptionId -resourceGroup $resourceGroup -credential $Credential -tenantId $tenantId -location $location

确保此命令中使用的服务主体具有分配给它的“所有者”角色,并且该角色的范围超出了命令中使用的订阅 ID。 有关服务主体的详细信息,请参阅 使用 Azure PowerShell 创建服务主体。

将 AKS 群集连接到 Azure Arc 并启用自定义位置

如果要与 Azure Arc 一起在群集上启用自定义位置,请运行以下命令以获取自定义位置应用程序的对象 ID,然后使用服务主体连接到 Azure Arc:

$objectID = (Get-AzADServicePrincipal -ApplicationId "bc313c14-388c-4e7d-a58e-70017303ee3b").Id
Enable-AksHciArcConnection -name $clusterName -subscriptionId $subscriptionId -resourceGroup $resourceGroup -credential $Credential -tenantId $tenantId -location -customLocationsOid $objectID

验证连接的群集

可以在Azure 门户查看 Kubernetes 群集资源。 在浏览器中打开门户后,导航到资源组和 AKS 资源,该资源基于 enable-akshciarcconnection PowerShell 命令中使用的资源名称和资源组名称输入。

注意

连接群集后,群集元数据(群集版本、代理版本、节点数)最多可能需要 5 到 10 分钟才能显示在 Azure 门户 AKS 资源的概述页上。

适用于 Kubernetes 的 Azure Arc 代理

AKS 将几个运算符部署到 azure-arc 命名空间中。 可以使用以下示例所示查看这些部署和 Pod kubectl

kubectl -n azure-arc get deployments,pods

AKS 由几个代理(运算符)组成,这些代理在部署到命名空间的 azure-arc 群集中运行。 有关这些代理的详细信息, 请参阅此概述

断开 AKS 群集与 Azure Arc 的连接

如果要断开群集与 AKS 的连接,请运行 Disable-AksHciArcConnection PowerShell 命令。 在运行以下命令之前,请确保登录到 Azure:

Disable-AksHciArcConnection -Name $clusterName

后续步骤