你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:使用 Azure CLI 部署 Azure Kubernetes 服务 (AKS) 群集
Azure Kubernetes 服务 (AKS) 是可用于快速部署和管理群集的托管式 Kubernetes 服务。 在本快速入门中,请执行以下操作:
- 使用 Azure CLI 部署 AKS 群集。
- 在该群集中运行一个包含 Web 前端和 Redis 实例的示例多容器应用程序。
准备阶段
- 本快速入门假设读者基本了解 Kubernetes 的概念。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的 Kubernetes 核心概念。
- 需要一个具有活动订阅的 Azure 帐户。 如果你没有帐户,请免费创建一个。
- 若要详细了解如何创建 Windows Server 节点池,请参阅创建支持 Windows Server 容器的 AKS 群集。
先决条件
在 Azure Cloud Shell 中使用 Bash 环境。 有关详细信息,请参阅 Azure Cloud Shell 中的 Bash 快速入门。
如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录。
出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展。
运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade。
本文需要 Azure CLI 2.0.64 或更高版本。 如果你使用的是 Azure Cloud Shell,则表示已安装最新版本。
确保用于创建群集的标识具有适当的最低权限。 有关 AKS 访问和标识的详细信息,请参阅 Azure Kubernetes Service (AKS) 的访问和标识选项。
如果你有多个 Azure 订阅,请使用
az account
命令选择应在其中计收资源费用的相应订阅 ID。验证是否已在订阅中注册 Microsoft.OperationsManagement 和 Microsoft.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
已安装。
使用
az aks install-cli
命令在本地安装kubectl
。az aks install-cli
使用
az aks get-credentials
命令将kubectl
配置为连接到你的 Kubernetes 群集。此命令执行以下操作:
- 下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。
- 使用
~/.kube/config
,即 Kubernetes 配置文件的默认位置。 使用 --file 参数指定 Kubernetes 配置文件的其他位置。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
使用
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 应用程序的外部服务。
创建名为
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 清单。
使用
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
打开 Web 浏览器并转到服务的外部 IP 地址,以查看 Azure Vote 应用的实际效果。
删除群集
如果你不打算完成以下教程,请清理不需要的资源以避免产生 Azure 费用。
使用
az group delete
命令删除资源组、容器服务和所有相关资源。az group delete --name myResourceGroup --yes --no-wait
注意
AKS 群集是使用系统分配的托管标识创建的,这是本快速入门中使用的默认标识选项。 平台将负责管理此标识,因此你无需手动删除它。
后续步骤
在本快速入门中,你部署了一个 Kubernetes 群集,并在其中部署了一个简单的多容器应用程序。
若要详细了解 AKS 并演练完整的部署示例代码,请继续阅读教程“Kubernetes 群集”。
本快速入门的目的是进行介绍。 有关使用生产版 AKS 创建完整解决方案的指南,请参阅 AKS 解决方案指南。