将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 服务、函数、事件网格、逻辑应用API 管理。

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

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

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

开始之前

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

  • 具有至少一个已启动并正在运行的 Linux 工作器节点的 AKS 群集
  • 安装 AksHci PowerShell 模块
  • Azure 订阅上的以下访问级别:
    • 一个具有内置“所有者”角色的用户帐户。 可以通过导航到订阅,选择Azure 门户左侧的“访问控制 (IAM) ”,然后单击“查看我的访问权限”来检查访问级别。
    • 具有内置 所有者 角色的服务主体。
  • 在 PowerShell 管理窗口中运行本文中的命令。
  • 确保满足 AKS 的网络要求

步骤 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 群集资源。 在浏览器中打开门户后,根据 enable-akshciarcconnection PowerShell 命令中使用的资源名称和资源组名称输入导航到资源组和 AKS 资源。

注意

连接群集后,群集元数据 (群集版本、代理版本、节点数) 最多可能需要大约 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

后续步骤