準備已啟用 Azure Arc 的 Kubernetes 叢集
已啟用 Azure Arc 的 Kubernetes 叢集是部署 Azure IoT 作業的必要條件。 本文說明如何在部署 Azure IoT 作業之前準備叢集。 本文包含Ubuntu和 Windows 的指引。
本文中的步驟會準備叢集以進行安全設定部署,這是較長但已準備好生產環境的程式。 如果您想要快速部署 Azure IoT 作業,並只執行測試設定的範例工作負載,請參閱 快速入門:改為在 GitHub Codespaces 中使用 K3 執行 Azure IoT 作業。 如需測試設定和安全設定的詳細資訊,請參閱 部署詳細數據 > 選擇您的功能。
必要條件
Microsoft支援 Azure Kubernetes Service (AKS) Edge Essentials,以用於在 Windows 上部署,而適用於 Ubuntu 上的部署 K3。 如果您想要將 Azure IoT 作業部署到多節點解決方案,請在 Ubuntu 上使用 K3。
若要準備已啟用 Azure Arc 的 Kubernetes 叢集,您需要:
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前建立免費帳戶。
Azure 資源群組。 每個資源群組僅支援一個 Azure IoT 作業實例。 若要建立新的資源群組,請使用 az group create 命令。 如需目前支援的 Azure 區域清單,請參閱支援的區域。
az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
安裝在叢集電腦上的 Azure CLI 2.64.0 版或更新版本。 使用
az --version
檢查您的版本,並視需要更新az upgrade
。 如需詳細資訊,請參閱如何安裝 Azure CLI。適用於 Azure CLI 的 connectedk8s 擴充功能最新版本:
az extension add --upgrade --name connectedk8s
符合系統需求的硬體:
如果您要將 Azure IoT 作業部署到已啟用容錯的多節點叢集,請檢閱準備 Linux for Edge 磁碟區中的硬體和記憶體需求。
建立和啟用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
設定 Azure Container Storage 的多節點叢集
在具有至少三個節點的多節點叢集上,您可以選擇在部署 Azure IoT 作業時,使用 Azure Arc 所啟用的 Azure 容器記憶體來啟用記憶體容錯。
如果您想要在部署期間啟用容錯功能,請遵循使用多節點 Ubuntu 叢集準備 Linux for Edge 磁碟區中的 步驟來設定叢集。
啟用 Arc 的叢集
將您的叢集連線到 Azure Arc,以便能從遠端進行管理。
在您部署 Kubernetes 叢集的電腦上,使用 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-enable 您的 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 Arc 的非計劃性更新,以及 Azure IoT 作業用來作為相依性的系統 Arc 延伸模組,此命令會停用自動升級。 相反地, 請視需要手動升級代理程式 。
取得叢集的簽發者 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 編輯器。
objectId
取得 Azure Arc 服務在您的租使用者中使用的 Microsoft Entra ID 應用程式,並將其儲存為環境變數。 執行下列命令,完全如寫入一樣,而不需要變更 GUID 值。export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
使用 az connectedk8s enable-features 命令,在您的叢集上啟用自訂位置支援。 此命令會使用 Azure Arc 服務所使用的 Microsoft Entra ID 應用程式
objectId
。 在部署 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 Arc 的 Kubernetes 叢集,但在將 Azure IoT 作業部署至該叢集之前,您可能會想要針對進階案例設定叢集。
下一步
現在您已經有了已啟用 Azure Arc 的 Kubernetes 叢集,接著可以部署 Azure IoT 操作。