快速入门:使用 ARM 模板部署 Azure 容器 Linux (ACL) Azure Kubernetes 服务 (AKS)群集

在本快速入门中,你将使用 Azure 资源管理器 (ARM) 模板创建Azure Kubernetes 服务 (AKS)群集,该群集作为节点操作系统(OS)运行Azure容器 Linux(ACL)。 安装必备组件后,创建 SSH 密钥对、查看模板、部署模板并连接到群集。

Azure容器 Linux (ACL) 注意事项和限制

在开始之前,请了解以下有关 ACL 的注意事项和限制:

先决条件

Note

可以使用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容器 Linux 需要Azure CLI 2.86.0 或更高版本。 使用 az version 命令查找已安装的Azure CLI版本和依赖库。 若要升级到最新版本,请使用 az upgrade 命令。
  • 如果尚未安装 kubectl,请使用 az aks install-cli 命令通过 Azure CLI 安装它,或按照 upstream 说明安装。
  • 若要使用 ARM 模板创建 AKS 群集,需要提供 SSH 公钥。 如果需要此资源,请转到“ 创建 SSH 密钥对 ”部分,在部署模板之前生成一个。 如果已有 SSH 密钥对,可以跳到“ 查看模板 ”部分。
  • 用于创建群集的标识需要具有适当的最低权限。 有关 AKS 的访问和标识的详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的访问和标识选项
  • 若要部署 ARM 模板,需要对要部署的资源具有写入权限,并有权执行 Microsoft.Resources/deployments 资源类型上的所有操作。 例如,若要部署虚拟机(VM),需要 Microsoft.Compute/virtualMachines/write 和 Microsoft.Resources/deployments/* 权限。 有关角色和权限的列表,请参阅 Azure 内置角色

创建 SSH 密钥对

若要访问 AKS 节点,请使用通过 ssh-keygen 命令生成的 SSH 密钥对(公钥和私钥)进行连接。 默认情况下,这些文件在 ~/.ssh 目录中创建。 运行 ssh-keygen 命令会覆盖给定位置中同名的任何 SSH 密钥对。

  1. 运行 ssh-keygen 命令。 以下示例使用 RSA 加密和 4096 位长度创建 SSH 密钥对:

    ssh-keygen -t rsa -b 4096
    

有关创建 SSH 密钥的详细信息,请参阅在 Azure 中创建和管理用于身份验证的 SSH 密钥

查看模板

以下部署使用来自 Azure 快速入门模板的 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”,登录并打开模板。

    按钮用于将资源管理器模板部署到 Azure。

  2. 在“基本信息”页上,保留“OS 磁盘大小(GB)”、“代理计数”、“代理 VM 大小”和“OS 类型”的默认值,并配置以下模板参数:

    • Subscription:选择Azure订阅。
    • 资源组:选择“新建”。 输入资源组的唯一名称,例如 myACLResourceGroup,然后选择“ 确定”。
    • OS SKU:指定 AzureContainerLinux
    • 位置:选择一个位置,例如 美国西部
    • 群集名称:输入 AKS 群集的唯一名称,例如 myACLCluster
    • DNS 前缀:输入群集的唯一 DNS 前缀,例如 myaclcluster
    • Linux 管理员用户名:输入一个用户名用于通过 SSH 进行连接,例如 azureuser
    • SSH 公钥源”:选择“使用现有公钥”。
    • 密钥对名称:复制并粘贴 SSH 密钥对的 public 部分(默认为 ~/.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
    

    以下示例输出显示在上一步骤中创建的三个节点。 确保节点状态为 Ready

    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容器 Linux (ACL) AKS 群集。 若要了解有关 ACL 的详细信息,请参阅以下资源: