快速入門:使用 ARM 範本部署 Azure Container Linux (ACL) Azure Kubernetes Service (AKS) 叢集

在這個快速入門中,你會使用 Azure Resource Manager(ARM)範本來建立一個 Azure Kubernetes Service (AKS) 叢集,該叢集以 Azure Container Linux (ACL) 作為節點作業系統(OS)執行。 安裝前置條件後,建立一對 SSH 金鑰,檢視範本,部署範本,然後連接到叢集。

Azure Container Linux (ACL) 考慮事項與限制

在開始之前,請先回顧以下關於ACL的考量與限制:

先決條件

Note

你可以使用 Azure Cloud Shell或本地安裝 Azure CLI 來執行這個快速啟動中的指令。

  • 如果你是本地運行Azure CLI,安裝 Azure CLI。 如果你是在 Windows 或 macOS 上運行,可以考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱 如何在 Docker 容器中執行 Azure CLI。
  • 如果你使用本地安裝,請使用 az login 指令登入 Azure CLI。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱使用 Azure CLI 登入。
  • 如果出現提示,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能詳細資訊,請參閱使用 Azure CLI 擴充功能。
  • Azure Container Linux 需要 Azure CLI 版本 2.86.0 或更高版本。 使用 az version 指令來查找已安裝的Azure CLI版本及相關函式庫。 若要升級至最新版本,請使用命令 az upgrade 。
  • 如果你還沒安裝 kubectl,可以透過 Azure CLI 用 az aks install-cli 指令安裝,或依照 upstream instructions 操作。
  • 要使用 ARM 範本建立 AKS 叢集,你需要提供 SSH 公開金鑰。 如果你需要這個資源,請先到 「建立 SSH 金鑰對 」的區塊產生一個,再部署範本。 如果你已經有 SSH 金鑰對,可以直接跳到 「檢視範本 」部分。
  • 你用來建立叢集的身份必須具備適當的最低權限。 如需 AKS 存取和身分識別的詳細資訊,請參閱 Azure Kubernetes Service (AKS) 的存取與身分識別選項。
  • 若要部署 ARM 範本,您需要具備要部署的資源寫入權限,以及 Microsoft.Resources/deployments 資源類型上所有作業的存取權限。 例如,若要部署虛擬機器(VM),您需要 Microsoft.Compute/virtualMachines/write 和 Microsoft.Resources/deployments/* 權限。 如需角色與權限的清單,請參閱 Azure 內建角色。

建立 SSH 金鑰組

若要存取 AKS 節點,您可以使用 SSH 金鑰組 (公用和私人) 進行連線,您可以使用 ssh-keygen 命令產生該金鑰組。 根據預設,這些檔案會建立在 ~/.ssh 目錄中。 執行 ssh-keygen 命令會覆寫任何指定位置中已經存在相同名稱的 SSH 金鑰組。

  1. 移至 https://shell.azure.com,並在瀏覽器中開啟 Cloud Shell。

  2. 執行 ssh-keygen 命令。 下列命令會使用 RSA 加密建立 SSH 金鑰組,位元長度為 4096:

    ssh-keygen -t rsa -b 4096
    

如需建立 SSH 金鑰的詳細資訊,請參閱在 Azure 中建立及管理驗證的 SSH 金鑰。

檢閱範本

以下部署使用來自 Azure Quickstart Templates 的 ARM 範本:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "clusterName": {
      "type": "string",
      "defaultValue": "aclakscluster",
      "metadata": {
        "description": "The name of the Managed Cluster resource."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the Managed Cluster resource."
      }
    },
    "dnsPrefix": {
      "type": "string",
      "metadata": {
        "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
      }
    },
    "osDiskSizeGB": {
      "type": "int",
      "defaultValue": 0,
      "minValue": 0,
      "maxValue": 1023,
      "metadata": {
        "description": "Disk size (in GB) to provision for each of the agent pool nodes. Specifying 0 applies the default disk size for that agentVMSize."
      }
    },
    "agentCount": {
      "type": "int",
      "defaultValue": 3,
      "minValue": 1,
      "maxValue": 50,
      "metadata": {
        "description": "The number of nodes for the cluster."
      }
    },
    "agentVMSize": {
      "type": "string",
      "defaultValue": "standard_d2s_v3",
      "metadata": {
        "description": "The size of the Virtual Machine."
      }
    },
    "linuxAdminUsername": {
      "type": "string",
      "metadata": {
        "description": "User name for the Linux Virtual Machines."
      }
    },
    "sshRSAPublicKey": {
      "type": "string",
      "metadata": {
        "description": "Configure all linux machines with the SSH RSA public key string."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.ContainerService/managedClusters",
      "apiVersion": "2026-03-01",
      "name": "[parameters('clusterName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "SystemAssigned"
      },
      "properties": {
        "dnsPrefix": "[parameters('dnsPrefix')]",
        "agentPoolProfiles": [
          {
            "name": "agentpool",
            "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
            "count": "[parameters('agentCount')]",
            "vmSize": "[parameters('agentVMSize')]",
            "osType": "Linux",
            "osSKU": "AzureContainerLinux",
            "mode": "System"
          }
        ],
        "linuxProfile": {
          "adminUsername": "[parameters('linuxAdminUsername')]",
          "ssh": {
            "publicKeys": [
              {
                "keyData": "[parameters('sshRSAPublicKey')]"
              }
            ]
          }
        }
      }
    }
  ],
  "outputs": {
    "controlPlaneFQDN": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.ContainerService/managedClusters', parameters('clusterName')), '2024-02-01').fqdn]"
    }
  }
}

ARM 樣本中定義的資源類型 Microsoft.ContainerService/managedClusters。

部署範本

  1. 選取 [ 部署至 Azure ] 以登入並開啟範本。

    將 Resource Manager 範本部署至 Azure 的按鈕。

  2. 在 [ 基本 ] 頁面上,保留 OS 磁碟大小 GB、 代理程式計數、 代理程式 VM 大小,以及 OS 類型的預設值,並設定下列範本參數:

    • 訂用帳戶:選取 Azure 訂用帳戶。
    • 資源群組:選取 [新建]。 輸入資源群組的唯一名稱,例如 myACLResourceGroup,然後選擇 OK。
    • OS SKU: Specify AzureContainerLinux.
    • 地點:選擇地點,例如 美國西部。
    • 叢集名稱:輸入 AKS 叢集的唯一名稱,例如 myACLCluster。
    • DNS 前綴:為您的叢集輸入獨特的 DNS 前綴,例如 myaclcluster。
    • Linux 管理員使用者名稱:輸入使用 SSH 連線的使用者名稱,例如 azureuser。
    • SSH 公開金鑰來源: 選取 [使用現有的公開金鑰]。
    • 金鑰組名稱: 複製並貼上 SSH 金鑰組的公開部分 (預設為 ~/.ssh/id_rsa.pub 的內容)。
  3. 選取 [檢閱 + 建立]> [建立]。

    建立 AKS 叢集需要幾分鐘的時間。 等部署完成後再 連接到叢集。

連線至叢集

若要管理 Kubernetes 叢集,請使用 Kubernetes 命令列用戶端 kubectl。 如果您使用 Azure Cloud Shell,則 kubectl 已安裝。 若要在本機安裝 kubectl,請使用 az aks install-cli 命令。

  1. 設定 kubectl 使用 az aks get-credentials 命令連線到 Kubernetes 叢集。 此命令會下載認證,並設定 Kubernetes CLI 來使用這些認證。

    az aks get-credentials --resource-group myACLResourceGroup --name myACLCluster
    
  2. 使用 kubectl get 命令確認叢集的連線。 此命令會傳回叢集節點的清單。

    kubectl get nodes
    

    下列輸出範例會顯示上一個步驟中建立的三個節點。 確定節點的狀態為就緒:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-agentpool-12345678-0   Ready    agent   6m44s   v1.34.0
    aks-agentpool-12345678-1   Ready    agent   6m46s   v1.34.0
    aks-agentpool-12345678-2   Ready    agent   6m45s   v1.34.0
    

刪除叢集

如果你不再需要在這個快速入門中建立的資源,可以清理它們以避免 Azure 費用。

使用 az group delete 指令刪除 Azure 資源群組及所有相關資源:

az group delete --name myACLResourceGroup --yes --no-wait

在這個快速入門中,你部署了一個使用 ARM 範本的 Azure Container Linux (ACL) AKS 叢集。 欲了解更多關於前十字韌帶(ACL)的資訊,請參閱以下資源: