你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

准备已启用 Azure Arc 的 Kubernetes 群集

重要

Azure Arc 启用的 Azure IoT 操作预览版目前处于预览状态。 不应在生产环境中使用此预览版软件。

在正式版推出后,你需要部署新的 Azure IoT 操作安装。 无法升级预览版安装。

有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款

已启用 Azure Arc 的 Kubernetes 群集是部署 Azure IoT 操作预览版的先决条件。 本文介绍如何准备群集,以便之后将 Azure IoT 操作预览版部署到已启用 Arc 的 Kubernetes 群集。 本文提供 Ubuntu 和 Windows 相关指南。

提示

本文中的步骤为群集做好安全设置部署的准备,该部署是一个较长但可用于生产的过程。 若要快速部署 Azure IoT 操作并运行只有测试设置的示例工作负载,请改为参阅快速入门:使用 K3s 在 Github Codespaces 中运行 Azure IoT 操作预览版

有关测试设置和安全设置的详细信息,请参阅“部署详细信息”>“选择功能”

先决条件

在任何满足已启用 Azure Arc 的 Kubernetes 系统要求的已启用 Arc 的 Kubernetes 群集上,Azure IoT 操作都应能够运行。 目前,Azure IoT 操作不支持 Arm64 体系结构。

Microsoft 支持 Azure Kubernetes 服务 (AKS) Edge Essentials 在 Windows 上部署,支持 K3s 在 Ubuntu 上部署。 有关经过测试和验证的特定硬件和软件组合的列表,请参阅经过验证的环境

若要将 Azure IoT 操作部署到多节点解决方案,请使用 Ubuntu 上的 K3s。

若要准备已启用 Azure Arc 的 Kubernetes 群集,需要满足以下条件:

创建群集

本部分提供在 Linux 和 Windows 上经验证的环境中创建群集的步骤。

Azure Kubernetes 服务边缘软件包是大规模自动运行容器化应用程序的 Azure Kubernetes 服务 (AKS) 的本地 Kubernetes 实现。 AKS 边缘软件包中有一个 Microsoft 支持的 Kubernetes 平台,该平台包括一个轻量级 Kubernetes 发行版,其占用空间小且安装体验简单,支持电脑类或“轻型”边缘硬件。

AksEdgeQuickStartForAio.ps1 脚本可自动执行创建和连接群集的过程,并推荐用于在 AKS Edge Essentials 上部署 Azure IoT 操作。

  1. 打开提升的 PowerShell 窗口并将目录更改为工作文件夹。

  2. 获取 Azure Arc 服务在租户中使用的 Microsoft Entra ID 应用程序的 objectId

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  3. 运行以下命令,将占位符值替换为信息:

    占位符
    SUBSCRIPTION_ID Azure 订阅的 ID。 如果不知道订阅 ID,请参阅“查找 Azure 订阅”。
    TENANT_ID Microsoft Entra 租户的 ID。 如果不知道租户 ID,请参阅“查找 Microsoft Entra 租户”。
    RESOURCE_GROUP_NAME 现有资源组的名称或要创建的新资源组的名称。
    LOCATION 离你较近的 Azure 区域。 有关当前支持的 Azure 区域的列表,请参阅支持的区域
    CLUSTER_NAME 要创建的新群集的名称。
    ARC_APP_OBJECT_ID 在上一步中检索到的对象 ID 值。
    $url = "https://raw.githubusercontent.com/Azure/AKS-Edge/main/tools/scripts/AksEdgeQuickStart/AksEdgeQuickStartForAio.ps1"
    Invoke-WebRequest -Uri $url -OutFile .\AksEdgeQuickStartForAio.ps1
    Unblock-File .\AksEdgeQuickStartForAio.ps1
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
    .\AksEdgeQuickStartForAio.ps1 -SubscriptionId "<SUBSCRIPTION_ID>" -TenantId "<TENANT_ID>" -ResourceGroupName "<RESOURCE_GROUP_NAME>"  -Location "<LOCATION>"  -ClusterName "<CLUSTER_NAME>" -CustomLocationOid "<ARC_APP_OBJECT_ID>"
    

    如果部署期间出现任何问(如计算机在此过程中重新启动),请再次运行整套命令。

  4. 运行以下命令以检查部署是否成功:

    Import-Module AksEdge
    Get-AksEdgeDeploymentInfo
    

    Get-AksEdgeDeploymentInfo 命令的输出中,应会看到群集的 Arc 状态为 Connected

通过 Arc 启用群集

将群集连接到 Azure Arc,以便远程管理它。

在上一节中运行的 AksEdgeQuickStartForAio.ps1 脚本处理了连接群集的步骤。 无需执行任何额外的步骤即可启用 Arc。

验证群集

若要验证群集是否已准备好进行 Azure IoT 操作部署,可以在 Azure CLI 的 Azure IoT 操作扩展中使用 verify-host 帮助程序命令。 在群集主机上运行时,会此帮助程序命令检查与 Azure 资源管理器和 Microsoft 容器注册表终结点的连接。

az iot ops verify-host

若要验证 Kubernetes 群集是否已启用 Azure Arc,请运行以下命令:

kubectl get deployments,pods -n azure-arc

输出如下所示:

NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/clusterconnect-agent         1/1     1            1           10m
deployment.apps/extension-manager            1/1     1            1           10m
deployment.apps/clusteridentityoperator      1/1     1            1           10m
deployment.apps/controller-manager           1/1     1            1           10m
deployment.apps/flux-logs-agent              1/1     1            1           10m
deployment.apps/cluster-metadata-operator    1/1     1            1           10m
deployment.apps/extension-events-collector   1/1     1            1           10m
deployment.apps/config-agent                 1/1     1            1           10m
deployment.apps/kube-aad-proxy               1/1     1            1           10m
deployment.apps/resource-sync-agent          1/1     1            1           10m
deployment.apps/metrics-agent                1/1     1            1           10m

NAME                                              READY   STATUS    RESTARTS        AGE
pod/clusterconnect-agent-5948cdfb4c-vzfst         3/3     Running   0               10m
pod/extension-manager-65b8f7f4cb-tp7pp            3/3     Running   0               10m
pod/clusteridentityoperator-6d64fdb886-p5m25      2/2     Running   0               10m
pod/controller-manager-567c9647db-qkprs           2/2     Running   0               10m
pod/flux-logs-agent-7bf6f4bf8c-mr5df              1/1     Running   0               10m
pod/cluster-metadata-operator-7cc4c554d4-nck9z    2/2     Running   0               10m
pod/extension-events-collector-58dfb78cb5-vxbzq   2/2     Running   0               10m
pod/config-agent-7579f558d9-5jnwq                 2/2     Running   0               10m
pod/kube-aad-proxy-56d9f754d8-9gthm               2/2     Running   0               10m
pod/resource-sync-agent-769bb66b79-z9n46          2/2     Running   0               10m
pod/metrics-agent-6588f97dc-455j8                 2/2     Running   0               10m

后续步骤

现在你已经具有已启用 Azure Arc 的 Kubernetes 群集,接下来可以部署 Azure IoT 操作