创建和配置可以运行 Azure IoT 操作的 AKS Edge Essentials 群集

Azure Kubernetes 服务 (AKS) Edge Essentials 是受支持的群集平台之一Azure IoT 操作。 可以使用 AKS Edge Essentials 创建Microsoft托管的 Kubernetes 群集,并将 Azure IoT 操作部署为工作负荷。 本文介绍运行脚本的步骤,该脚本使用 Azure IoT 操作所需的配置创建 AKS Edge Essentials Kubernetes 群集,然后将该群集连接到 Azure Arc。

注意

Azure IoT 操作仅在 k3s 单机器群集上部署时支持 AKS 边缘软件包。 AIO 不支持 K8s 群集,在多台计算机上部署群集是一项实验性功能。

运行脚本的先决条件

若要运行脚本,需要满足以下先决条件:

  • 具有“所有者”角色或参与者用户访问管理员角色的组合的 Azure 订阅。 可以通过导航到订阅、选择Azure 门户左侧的访问控制(IAM),然后选择“查看我的访问权限”来检查访问级别。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

  • 在开发计算机上安装的 Azure CLI 2.64.0 或更高版本。 如有必要,请使用az --version检查版本,使用az upgrade进行更新。 有关详细信息,请参阅 如何安装 Azure CLI

  • 安装适用于 Azure CLI 的 connectedk8s 扩展的最新版本:

    az extension add --upgrade --name connectedk8s 
    
  • 硬件要求:确保计算机至少有 16 GB 可用 RAM、4 个可用 vCPU 和 52 GB 可用磁盘空间,为 Azure IoT 操作保留。

创建已启用 Arc 的群集

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

  • 从该存储库下载最新的 k3s AKS 边缘软件包 MSI
  • 安装 AKS Edge Essentials,并在 Windows 计算机上部署和创建单个计算机 k3s 群集。
  • 连接到 Azure 订阅,创建资源组(如果尚不存在),并将群集连接到 Arc 以创建已启用 Arc 的 Kubernetes 群集。
  • 在已启用 Arc 的 Kubernetes 群集上启用自定义位置功能。
  • 在已启用 Arc 的 Kubernetes 群集上启用工作负荷标识联合功能。
  • 部署本地路径预配。
  • 为 MQTT 代理在主机 Windows 计算机上配置防火墙规则。
  • 在 Linux VM 上,充当 Kubernetes 控制平面节点:
    • 为 Kubernetes 服务的默认 IP 范围 10.96.0.0/28 配置端口代理。
    • 配置 IP 表规则:
      • sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9110 -j ACCEPT
      • sudo iptables -A INPUT -p tcp --dport (10124, 8420, 2379, 50051) -j ACCEPT

若要运行快速入门脚本,请执行以下步骤:

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

  2. 获取 Azure Arc 服务在租户中使用的 Microsoft Entra ID 应用程序的 objectId。 完全按照如下所示运行以下命令,且不要更改 GUID 值。

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  3. 运行以下命令:

    $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
    
  4. [可选] Azure Arc 网关(预览版)可用于仅使用 7 个终结点就将基础结构加入到 Azure Arc。 要在 AKS 边缘软件包上将 Azure Arc 网关与 Azure IoT 操作结合使用,请执行以下操作:

  5. 运行以下命令,并将占位符值替换为你的信息:

    .\AksEdgeQuickStartForAio.ps1 -SubscriptionId "<SUBSCRIPTION_ID>" -TenantId "<TENANT_ID>" -ResourceGroupName "<RESOURCE_GROUP_NAME>"  -Location "<LOCATION>"  -ClusterName "<CLUSTER_NAME>" -CustomLocationOid "<ARC_APP_OBJECT_ID>"
    
    占位符
    SUBSCRIPTION_ID Azure 订阅的 ID。 如果不知道订阅 ID,请参阅“查找 Azure 订阅”。
    TENANT_ID Microsoft Entra 租户的 ID。 如果不知道租户 ID,请参阅“查找 Microsoft Entra 租户”。
    RESOURCE_GROUP_NAME 现有资源组的名称或要创建的新资源组的名称。 每个资源组仅支持一个 Azure IoT 操作实例。
    LOCATION 离你较近的 Azure 区域。 有关 Azure IoT 操作支持的 Azure 区域的列表,请参阅 支持的区域
    CLUSTER_NAME 要创建的新群集的名称。
    ARC_APP_OBJECT_ID 在步骤 2 中检索到的对象 ID 值。

    运行 AksEdgeQuickStartForAio.ps1 时,可以包含其他可选标志。 可选的标志如下所示:

    可选标志
    enableWorkloadIdentity(预览版) 默认情况下启用。 可以在部署群集之前选择退出,创建群集后则无法启用。 使用工作负荷标识联合,可将 Microsoft Entra ID 中用户分配的托管标识或应用注册配置为信任来自外部标识提供者 (IdP)(例如 Kubernetes)的令牌。 要配置工作负荷标识联合,请参阅本文
    proxy-https 提供代理值:https://<proxy-server-ip-address>:<port>
    proxy-http 提供代理值:http://<proxy-server-ip-address>:<port>
    proxy-skip-range 提供代理跳过范围:<excludedIP>,<excludedCIDR>。 如果提供了 http(s)_proxy,则还应将 no_proxy 更新为 localhost,127.0.0.0/8,192.168.0.0/16,172.17.0.0/16,10.42.0.0/16,10.43.0.0/16,10.96.0.0/12,10.244.0.0/16,.svc,169.254.169.254

    可以添加到这些标志,如下面的示例所示:

    .\AksEdgeQuickStartForAio.ps1 -SubscriptionId "<SUBSCRIPTION_ID>" -TenantId "<TENANT_ID>" -ResourceGroupName "<RESOURCE_GROUP_NAME>"  -Location "<LOCATION>"  -ClusterName "<CLUSTER_NAME>" -CustomLocationOid "<ARC_APP_OBJECT_ID>" --enableWorkloadIdentity:false
    

    重要

    预览功能是可选择启用的自助功能。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 边缘软件包预览功能是由客户支持尽最大努力部分覆盖。

    如果在部署过程中出现问题,例如,您的计算机在此过程中重新启动,请再次运行命令集。

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

    Import-Module AksEdge
    Get-AksEdgeDeploymentInfo
    

    在命令的 Get-AksEdgeDeploymentInfo 输出中,应会看到群集的 Arc 状态为 “已连接”。

验证群集

若要验证 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

后续步骤