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

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

  • 使用 Azure CLI 部署 AKS 群集。

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

  • 监视运行应用程序的群集和 Pod 的运行状况。

    Azure Kubernetes 服务中部署的投票应用

本快速入门假设读者基本了解 Kubernetes 的概念。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的 Kubernetes 核心概念

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

若要详细了解如何创建 Windows Server 节点池,请参阅创建支持 Windows Server 容器的 AKS 群集

先决条件

  • 如果需要,请安装 Azure CLI 来运行 CLI 参考命令。

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅登录 Azure CLI

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 2.0.64 或更高版本的 Azure CLI。

备注

如果你打算在本地运行本快速入门中的命令,请以管理员身份运行命令。

备注

请先运行 az cloud set -n AzureChinaCloud 更改云环境,然后才能在 Azure 中国世纪互联中使用 Azure CLI。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

创建资源组

Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,系统会提示你指定一个位置。 此位置是:

  • 资源组元数据的存储位置。
  • 在创建资源期间未指定另一个区域时,资源在 Azure 中的运行位置。

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

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

az group create --name myResourceGroup --location chinaeast2

成功创建的资源组的输出:

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

启用群集监视

  1. 验证是否已在订阅中注册 Microsoft.OperationsManagementMicrosoft.OperationalInsights。 若要检查注册状态,请使用以下命令:

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

    如果未注册,请使用以下命令注册 Microsoft.OperationsManagementMicrosoft.OperationalInsights

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    
  2. 使用 --enable-addons monitoring 参数启用 用于容器的 Azure Monitor

创建 AKS 群集

使用 az aks create 命令创建 AKS 群集。 以下示例创建包含一个节点的名为 myAKSCluster 的群集。

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys

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

备注

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

连接到群集

若要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 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
    

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

    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 的文件。

  2. 复制以下 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:
            "beta.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:
            "beta.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
    
  3. 使用 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 公开应用程序前端。 此过程可能需要几分钟才能完成。

使用带有 --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

EXTERNAL-IP 地址从 pending 更改为实际公共 IP 地址后,请使用 CTRL-C 来停止 kubectl 监视进程。 以下示例输出显示向服务分配了有效的公共 IP 地址:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

若要查看 Azure Vote 应用的实际效果,请打开 Web 浏览器并转到服务的外部 IP 地址。

Azure Kubernetes 服务中部署的投票应用

在 Azure 门户中查看用于容器的 Azure Monitor 捕获的群集节点和 Pod 运行状况指标。

删除群集

为了避免产生 Azure 费用,请清理不需要的资源。 可以使用 az group delete 命令删除资源组、容器服务及所有相关资源。

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

备注

删除群集时,AKS 群集使用的 Azure Active Directory 服务主体不会被删除。 有关如何删除服务主体的步骤,请参阅 AKS 服务主体的注意事项和删除

如果你使用了托管标识,则该标识由平台托管,不需要删除。

获取代码

本快速入门使用现有的容器映像创建了 Kubernetes 部署。 GitHub 上提供了相关的应用程序代码、Dockerfile 和 Kubernetes 清单文件。

后续步骤

在本快速入门中,你部署了一个 Kubernetes 群集,然后在其中部署了多容器应用程序。 访问 AKS 群集的 Kubernetes Web 仪表板

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