将 Azure Stack HCI 上的 Azure Kubernetes 服务群集连接到已启用 Azure Arc 的 Kubernetes

适用于:Azure Stack HCI 上的 AKS 和 Windows Server

当 Azure Stack HCI 群集上的 Azure Kubernetes 服务附加到 Azure Arc 时,它将获取 Azure 资源管理器表示形式。 群集附加到标准 Azure 订阅,位于资源组中,可以像任何其他 Azure 资源一样接收标记。 并且,通过已启用 Azure Arc 的 Kubernetes 表示形式,可以将以下功能扩展到 Kubernetes 群集:

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

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

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

以下步骤介绍如何将 Azure Stack HCI 上的 Azure Kubernetes 服务群集连接到 Azure Arc。如果你已通过 Windows Admin Center 将 Kubernetes 群集连接到 Azure Arc,则可以跳过这些步骤。

开始之前

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

步骤 1:登录到 Azure

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

Connect-AzAccount

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

Set-AzContext -Subscription "myAzureSubscription"

步骤 2:为已启用 Azure Arc 的 Kubernetes 注册两个提供程序

如果你已在订阅上为启用了 Azure Arc 的 Kubernetes 服务注册了两个提供程序,则可以跳过此步骤。 注册是一个异步过程,需要为每个订阅执行一次。 注册可能需要大约 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 命令将“Azure Stack HCI 上的 AKS”群集连接到启用了 Azure Arc 的 Kubernetes。 此步骤将适用于 Kubernetes 的 Azure Arc 代理部署到 azure-arc 命名空间中。

Enable-AksHciArcConnection -name mynewcluster 

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

如果你对你是“所有者”的订阅没有访问权限,则可以使用服务主体将 AKS 群集连接到 Azure Arc。

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

$Credential = Get-Credential
Enable-AksHciArcConnection -name "myCluster" -subscriptionId "3000e2af-000-46d9-0000-4bdb12000000" -resourceGroup "myAzureResourceGroup" -credential $Credential -tenantId "xxxx-xxxx-xxxx-xxxx" -location "eastus"

确保上面的命令中使用的服务主体分配有“所有者”、“参与者”或“Kubernetes 群集 - Azure Arc 加入”角色,并且其作用域涵盖该命令中使用的订阅 ID 和资源组。 有关服务主体的详细信息,请参阅使用 Azure PowerShell 创建服务主体

验证连接的群集

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

注意

连接到群集后,可能最多需要 5 到 10 分钟,群集元数据(群集版本、代理版本、节点数)才会出现在 Azure 门户中启用了 Azure Arc 的 Kubernetes 资源的概述页上。

适用于 Kubernetes 的 Azure Arc 代理

启用了 Azure Arc 的 Kubernetes 会将几个 operator 部署到 azure-arc 命名空间中。 可以通过下方的 kubectl 查看这些部署和 Pod。

kubectl -n azure-arc get deployments,pods

启用了 Azure Arc 的 Kubernetes 由群集中运行的已部署到 azure-arc 命名空间的几个代理 (operator) 组成。 可在此处找到有关这些代理的详细信息。

将“Azure Stack HCI 上的 AKS”群集从 Azure Arc 断开连接

如果要将你的群集从启用了 Azure Arc 的 Kubernetes 断开连接,请运行 Disable-AksHciArcConnection PowerShell 命令。 运行命令之前,请确保登录到 Azure。

Disable-AksHciArcConnection -Name mynewcluster

后续步骤