共用方式為


準備已啟用 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 資源群組。 每個資源群組僅支援一個 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 叢集:

  1. 建立單一節點或多節點 K3s 叢集。 如需範例,請參閱 K3s 快速入門指南K3s 相關專案

  2. 請檢查 kubectl 是否已安裝為 K3s 的一部分。 如果沒有,請遵循指示在 Linux上安裝 kubectl。

    kubectl version --client
    
  3. 請依照指示安裝 Helm

  4. .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
    
  5. 執行下列命令來增加使用者監看式/執行個體限制

    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
    
  6. 為了提升效能,請增加檔案描述元限制:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

啟用 Arc 的叢集

將您的叢集連線到 Azure Arc,以便能從遠端進行管理。

  1. 在您部署 Kubernetes 叢集的計算機上,使用具有 Azure 訂用帳戶所需角色的 Microsoft Entra 使用者帳戶登入 Azure CLI:

    az login
    

    如果您隨時收到錯誤,指出 您的裝置必須受到管理才能存取您的資源,請再次執行 az login ,並確定您使用瀏覽器以互動方式登入。

  2. 登入之後,Azure CLI 會顯示您的所有訂用帳戶,並以星號 *指出您的預設訂用帳戶。 若要繼續進行預設訂用帳戶,請選擇取 Enter。 否則,請輸入您想要使用的 Azure 訂用帳戶數目。

  3. 在您的訂用帳戶中註冊必要的資源提供者。

    注意

    每個訂用帳戶只需要執行此步驟一次。 若要註冊資源提供者,您需要 /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"
    
  4. 使用 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 延伸模組,此命令會停用自動升級。 相反地, 請視需要手動升級代理程式

    重要

    如果您的環境使用 Proxy 伺服器或 Azure Arc 閘道,請使用 Proxy 資訊修改 az connectedk8s connect 命令:

    1. 請遵循使用輸出 Proxy 伺服器連線,或使用 Azure Arc 閘道將 Kubernetes 叢集上線至 Azure Arc 中的指示。
    2. 將 新增 169.254.169.254--proxy-skip-range 命令的參數 az connectedk8s connectAzure Device Registry 會使用此本機端點來取得授權的存取令牌。

    Azure IoT 作業不支援需要受信任憑證的 Proxy 伺服器。

  5. 取得叢集的簽發者 URL。

    az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    儲存此命令的輸出,以在後續步驟中使用。

  6. 建立 k3s 組態檔。

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. 將下列內容新增至 config.yaml 檔案,並將 <SERVICE_ACCOUNT_ISSUER> 佔位元取代為叢集的簽發者 URL。

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. 儲存盤案並結束 nano 編輯器。

  9. 取得自定義位置物件標識符,並將其儲存為環境變數,以準備在您的Arc叢集上啟用 Azure Arc 服務、自定義位置OBJECT_ID。 您必須使用 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。 繼續而不啟用該功能。 許可權不足,無法完成作業」,因此您可以使用缺少擷取自定義位置對象標識碼所需許可權的服務主體。 使用符合必要條件的 Microsoft Entra 使用者帳戶登入 Azure CLI。

  1. 使用 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
    
  2. 重新啟動 K3s。

    systemctl restart k3s
    

設定 Azure Container Storage 的多節點叢集

在具有至少三個節點的多節點叢集上,您可以選擇在部署 Azure IoT 作業時,使用 Azure Arc 所啟用的 Azure 容器記憶體來啟用記憶體容錯。

如果您想要在部署期間啟用容錯功能,請遵循使用多節點 Ubuntu 叢集準備 Linux for Edge 磁碟區中的 步驟來設定叢集

進階設定

此時,當您擁有已啟用 Azure Arc 的 Kubernetes 叢集,但在將 Azure IoT 作業部署至該叢集之前,您可能會想要針對進階案例設定叢集。

  • 如果您想要在叢集上啟用可檢視性功能,請遵循部署可檢視性資源並設定記錄中的步驟。
  • 如果您想要在叢集上設定自己的憑證簽發者,請遵循憑證管理>攜帶您自己的簽發者中的步驟。

下一步

現在您已經有了已啟用 Azure Arc 的 Kubernetes 叢集,接著可以部署 Azure IoT 操作