已启用 Azure Arc 的 Kubernetes 群集是部署 Azure IoT 操作的先决条件。 本文介绍如何准备群集,以便之后部署 Azure IoT 操作。 本文提供 Ubuntu 和 Windows 相关的指导。
本文中的步骤为群集做好安全设置部署的准备,该部署是一个较长但可用于生产的过程。 若要快速部署 Azure IoT 操作并运行只有测试设置的示例工作负载,请改为参阅快速入门:使用 K3s 在 GitHub Codespaces 中运行 Azure IoT 操作。 有关测试设置和安全设置的详细信息,请参阅“部署详细信息”>“选择功能”。
先决条件
Microsoft 支持 Azure Kubernetes 服务 (AKS) Edge Essentials 在 Windows 上部署,支持 K3s 在 Ubuntu 上部署。 若要将 Azure IoT 操作部署到多节点解决方案,请使用 Ubuntu 上的 K3s。
若要准备已启用 Azure Arc 的 Kubernetes 群集,需要满足以下条件:
具有“所有者”角色或“参与者”和“用户访问管理员”角色组合的 Azure 订阅。 可通过以下方式检查你的访问级别:导航到你的订阅,选择 Azure 门户左侧的“访问控制(IAM)”,然后选择“查看我的访问权限”。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
Azure 资源组。 每个资源组仅支持一个 Azure IoT 操作实例。 若要创建新的资源组,请使用 az group create 命令。 有关当前支持的 Azure 区域的列表,请参阅支持的区域。
az group create --___location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
在群集计算机上安装的 Azure CLI 2.53.0 或更高版本。 如有必要,请使用
az --version
检查版本,使用az upgrade
进行更新。 有关详细信息,请参阅 如何安装 Azure CLI。适用于 Azure CLI 的 connectedk8s 扩展最新版本:
az extension add --upgrade --name connectedk8s
满足系统要求的硬件:
如果要将 Azure IoT 操作部署到启用了容错功能的多节点群集,请查看为 Edge 卷准备 Linux 中的硬件和存储要求。
创建群集并为其启用 Arc
本部分提供在 Linux 和 Windows 上经验证的环境中创建群集的步骤。
若要准备 Ubuntu 上的 K3s Kubernetes 群集,请执行以下操作:
创建单节点或多节点 K3s 群集。 有关示例,请参阅 K3s 快速入门指南或 K3s 相关项目。
查看 kubectl 是否已作为 K3s 的一部分安装。 如果答案为否,请按照在 Linux 上安装 kubectl 的说明进行操作。
kubectl version --client
按照说明安装 Helm。
在
.kube/config
中创建 K3s 配置 yaml 文件:mkdir ~/.kube sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged mv ~/.kube/merged ~/.kube/config chmod 0600 ~/.kube/config export KUBECONFIG=~/.kube/config #switch to k3s context kubectl config use-context default sudo chmod 644 /etc/rancher/k3s/k3s.yaml
运行以下命令以增加用户监视/实例限制。
echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
为了获得更好的性能,请调高文件描述符限制:
echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
通过 Arc 启用群集
将群集连接到 Azure Arc,以便远程管理它。
在部署了 Kubernetes 群集的计算机上,使用具有所需 Azure 订阅角色的 Microsoft Entra 用户帐户登录到 Azure CLI:
az login
如果在任何时间点收到错误,指出“设备必须受管才能访问你的资源”,请再次运行
az login
,并确保使用浏览器以交互方式登录。登录后,Azure CLI 会显示你的所有订阅,并用星号
*
指示默认订阅。 若要继续使用默认订阅,请选择Enter
。 否则,请键入要使用的 Azure 订阅数。在订阅中注册所需的资源提供程序。
注意
对于每个订阅,只需运行此步骤一次。 若要注册资源提供程序,你需要有执行
/register/action
操作的权限,该权限包含在订阅“参与者”和“所有者”角色中。 有关详细信息,请参阅 Azure 资源提供程序和类型。az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperations" az provider register -n "Microsoft.DeviceRegistry" az provider register -n "Microsoft.SecretSyncController"
使用 az connectedk8s connect 命令连接到已启用 Arc 的 Kubernetes 群集,并将其作为 Azure 资源组的一部分进行管理。
az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
为防止对 Azure IoT 操作用作依赖项的 Azure Arc 和系统 Arc 扩展进行计划外更新,此命令将禁用自动升级。 改为根据需要手动升级代理。
重要说明
如果环境使用代理服务器或 Azure Arc 网关,请使用代理信息修改
az connectedk8s connect
命令:- 按照使用出站代理服务器进行连接或使用 Azure Arc 网关将 Kubernetes 群集加入 Azure Arc 中的说明进行操作。
- 将
169.254.169.254
添加到--proxy-skip-range
命令的az connectedk8s connect
参数。 Azure 设备注册表使用此本地终结点获取访问令牌以进行授权。
Azure IoT 操作不支持需要受信任证书的代理服务器。
获取群集的颁发者 URL。
az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
保存此命令的输出,以便在后续步骤中使用。
创建 k3s 配置文件。
sudo nano /etc/rancher/k3s/config.yaml
将以下内容添加到
config.yaml
文件,并将<SERVICE_ACCOUNT_ISSUER>
占位符替换为群集的颁发者 URL。kube-apiserver-arg: - service-account-issuer=<SERVICE_ACCOUNT_ISSUER> - service-account-max-token-expiration=24h
保存文件,并退出 nano 编辑器。
获取自定义位置对象 ID 并将其保存为环境变量 OBJECT_ID,准备在 Arc 群集上启用 Azure Arc 服务自定义位置。 必须使用 Microsoft Entra 用户帐户(而不是服务主体)登录到 Azure CLI 才能成功运行该命令。 完全按照如下所示运行以下命令,且不要更改 GUID 值。
export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
注意
如果收到错误:“无法提取‘custom-locations’应用的 oid。 请在不启用该功能的情况下继续操作。 权限不足,无法完成该操作”,则表示你用来检索自定义位置对象 ID 的服务主体可能缺少必要的权限。 使用满足先决条件的 Microsoft Entra 用户帐户登录到 Azure CLI。 有关详细信息,请参阅创建和管理自定义位置。
使用 az connectedk8s enable-features 命令在 Arc 群集上启用自定义位置功能。 此命令使用上一步骤中保存的 OBJECT_ID 环境变量来设置 custom-locations-oid 参数的值。 在部署 Kubernetes 群集的计算机上运行此命令:
az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
重启 K3s。
systemctl restart k3s
为 Azure 容器存储配置多节点群集
在至少具有三个节点的多节点 Ubuntu 群集上,可以选择在部署 Azure IoT 操作时使用 Azure Arc 启用的 Azure 容器存储来启用存储容错功能。
若要在部署期间启用容错功能,请按照使用多节点 Ubuntu 群集为 Edge 卷准备 Linux 中的步骤配置群集。
如果要在 k3s 之外的其他 Kubernetes 发行版上运行群集,请查看有关在其他平台中准备 Linux 的指南。
高级配置
此时,如果你拥有一个已启用 Azure Arc 的 Kubernetes 群集但尚未将 Azure IoT 操作部署到该群集,你可能需要针对高级方案配置群集。
- 如果要在群集上启用可观测性功能,请按照部署可观测性资源并设置日志中的步骤操作。
- 如果要在群集上配置自己的证书颁发者,请按照证书管理 > 自带颁发者中的步骤进行操作。
后续步骤
现在你已经具有已启用 Azure Arc 的 Kubernetes 群集,接下来可以部署 Azure IoT 操作。