你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 Azure CLI 部署 Azure Kubernetes 服务 (AKS) 群集

Azure Kubernetes 服务 (AKS) 是可用于快速部署和管理群集的托管式 Kubernetes 服务。 在本快速入门中,请执行以下操作:

  • 使用 Azure CLI 部署 AKS 群集。
  • 在该群集中运行一个包含 Web 前端和 Redis 实例的示例多容器应用程序。

浏览到 Azure Vote 示例应用程序的屏幕截图。

准备阶段

先决条件

  • 本文需要 Azure CLI 2.0.64 或更高版本。 如果你使用的是 Azure Cloud Shell,则表示已安装最新版本。

  • 确保用于创建群集的标识具有适当的最低权限。 有关 AKS 访问和标识的详细信息,请参阅 Azure Kubernetes Service (AKS) 的访问和标识选项

  • 如果你有多个 Azure 订阅,请使用 az account 命令选择应在其中计收资源费用的相应订阅 ID。

  • 验证是否已在订阅中注册 Microsoft.OperationsManagementMicrosoft.OperationalInsights 提供程序。 这些 Azure 资源提供程序是支持容器见解所必需的。 使用以下命令检查注册状态:

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    如果它们未注册,请使用以下命令进行注册:

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    

注意

如果你打算在本地而不是在 Azure Cloud Shell 中运行命令,请以管理员权限运行这些命令。

创建资源组

Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,系统会提示你指定一个位置。 此位置是资源组元数据的存储位置,也是资源在 Azure 中运行的位置(如果你在创建资源期间未指定其他区域)。

以下示例在“eastus”位置创建名为“myResourceGroup”的资源组。

  • 使用 az group create 命令创建资源组。

    az group create --name myResourceGroup --location eastus
    

    以下输出示例类似于成功创建资源组:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    

创建 AKS 群集

以下示例使用一个节点创建名为 myAKSCluster 的群集,并启用系统分配的托管标识。

  • 使用带有 --enable-addons monitoring--enable-msi-auth-for-monitoring 参数的 az aks create 命令创建 AKS 群集,以启用带有托管标识身份验证的 Azure Monitor 容器见解(预览版)。

    az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring  --generate-ssh-keys
    

    片刻之后,该命令将会完成,并返回有关群集的 JSON 格式信息。

    注意

    当你创建新群集时,AKS 会自动创建第二个资源组来存储 AKS 资源。 有关详细信息,请参阅为什么使用 AKS 创建两个资源组?

连接到群集

若要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。 如果使用的是 Azure Cloud Shell,则 kubectl 已安装。

  1. 使用 az aks install-cli 命令在本地安装 kubectl

    az aks install-cli
    
  2. 使用 az aks get-credentials 命令将 kubectl 配置为连接到你的 Kubernetes 群集。

    此命令执行以下操作:

    • 下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。
    • 使用 ~/.kube/config,即 Kubernetes 配置文件的默认位置。 使用 --file 参数指定 Kubernetes 配置文件的其他位置。
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. 使用 kubectl get 命令验证与群集之间的连接。 此命令将返回群集节点的列表。

    kubectl get nodes
    

    以下输出示例显示在上一步创建的单个节点。 确保节点状态为“就绪”。

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.12.8
    

部署应用程序

Kubernetes 清单文件定义群集的所需状态,例如,要运行哪些容器映像。

在本快速入门中,你将使用清单来创建运行 Azure Vote 应用程序所需的所有对象。 此清单包含两个 Kubernetes 部署

  • 示例 Azure Vote Python 应用程序。
  • 一个 Redis 实例。

它还会创建两个 Kubernetes 服务

  • Redis 实例的内部服务。
  • 用于通过 Internet 访问 Azure Vote 应用程序的外部服务。
  1. 创建名为 azure-vote.yaml 的文件,并将其复制到以下清单中。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    

    有关 YAML 清单文件的明细,请参阅部署和 YAML 清单

  2. 使用 kubectl apply 命令部署应用程序,并指定 YAML 清单的名称。

    kubectl apply -f azure-vote.yaml
    

    以下示例类似于显示已成功创建部署和服务的输出。

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

测试应用程序

应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。

  1. 使用带有 --watch 参数的 kubectl get service 命令来监视进度。

    kubectl get service azure-vote-front --watch
    

    azure-vote-front 服务的 EXTERNAL-IP 输出最初显示为 pending

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    
  2. EXTERNAL-IP 地址从 pending 更改为实际公共 IP 地址后,请使用 CTRL-C 来停止 kubectl 监视进程。

    以下示例输出显示向服务分配了有效的公共 IP 地址:

    azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  3. 打开 Web 浏览器并转到服务的外部 IP 地址,以查看 Azure Vote 应用的实际效果。

    浏览到 Azure Vote 示例应用程序的屏幕截图。

删除群集

如果你不打算完成以下教程,请清理不需要的资源以避免产生 Azure 费用。

  • 使用 az group delete 命令删除资源组、容器服务和所有相关资源。

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

    注意

    AKS 群集是使用系统分配的托管标识创建的,这是本快速入门中使用的默认标识选项。 平台将负责管理此标识,因此你无需手动删除它。

后续步骤

在本快速入门中,你部署了一个 Kubernetes 群集,并在其中部署了一个简单的多容器应用程序。

若要详细了解 AKS 并演练完整的部署示例代码,请继续阅读教程“Kubernetes 群集”。

本快速入门的目的是进行介绍。 有关使用生产版 AKS 创建完整解决方案的指南,请参阅 AKS 解决方案指南