快速入门:使用 PowerShell 部署 Azure Kubernetes 服务群集
Azure Kubernetes 服务 (AKS) 是可用于快速部署和管理群集的托管式 Kubernetes 服务。 在本快速入门中,请执行以下操作:
- 使用 PowerShell 部署 AKS 群集。
- 在该群集中运行一个包含 Web 前端和 Redis 实例的多容器应用程序。
若要详细了解如何创建 Windows Server 节点池,请参阅创建支持 Windows Server 容器的 AKS 群集。
本快速入门假设读者基本了解 Kubernetes 的概念。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 的 Kubernetes 核心概念。
先决条件
如果没有 Azure 订阅,请在开始前创建一个试用版订阅帐户。
如果你在本地运行 PowerShell,请安装 Az PowerShell 模块,并使用 Connect-AzAccount -Environment AzureChinaCloud cmdlet 连接到 Azure 帐户。 有关安装 Az PowerShell 模块的详细信息,请参阅安装 Azure PowerShell。
如果你有多个 Azure 订阅,请使用 Set-AzContext cmdlet 选择应在其中计收资源费用的相应订阅 ID。
Set-AzContext -SubscriptionId 00000000-0000-0000-0000-000000000000
创建资源组
Azure 资源组是用于部署和管理 Azure 资源的逻辑组。 创建资源组时,系统会提示你指定一个位置。 此位置是:
- 资源组元数据的存储位置。
- 在创建资源期间未指定另一个区域时,资源在 Azure 中的运行位置。
以下示例在 chinaeast2 区域创建名为 myResourceGroup 的资源组。
使用 New-AzResourceGroup cmdlet 创建资源组。
New-AzResourceGroup -Name myResourceGroup -Location chinaeast2
成功创建的资源组的输出:
ResourceGroupName : myResourceGroup
Location : chinaeast2
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup
创建 AKS 群集
使用
ssh-keygen
命令行实用工具生成 SSH 密钥对。 有关详细信息,请参阅:使用 New-AzAksCluster cmdlet 创建 AKS 群集。
以下示例创建一个具有一个节点的名为 myAKSCluster 的群集。
New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeCount 1
几分钟后,该命令将完成并返回有关群集的信息。
注意
创建 AKS 群集时,会自动创建另一个资源组来存储 AKS 资源。 有关详细信息,请参阅为什么使用 AKS 创建两个资源组?
连接到群集
若要管理 Kubernetes 群集,请使用 Kubernetes 命令行客户端 kubectl。
使用
Install-AzAksKubectl
cmdlet 在本地安装kubectl
:Install-AzAksKubectl
使用 Import-AzAksCredential cmdlet 将
kubectl
配置为连接到你的 Kubernetes 群集。 以下 cmdlet 将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
使用 kubectl get 命令验证与群集之间的连接。 此命令将返回群集节点的列表。
kubectl get nodes
输出显示在上一步骤中创建的单个节点。 确保节点状态为 Ready:
NAME STATUS ROLES AGE VERSION aks-nodepool1-31718369-0 Ready agent 6m44s v1.15.10
运行应用程序
Kubernetes 清单文件定义群集的所需状态,例如,要运行哪些容器映像。
在本快速入门中,你将使用清单来创建运行 Azure Vote 应用程序所需的所有对象。 此清单包含两个 Kubernetes 部署:
- 示例 Azure Vote Python 应用程序。
- 一个 Redis 实例。
此外,还会创建两个 Kubernetes 服务:
- Redis 实例的内部服务。
- 用于通过 Internet 访问 Azure Vote 应用程序的外部服务。
创建名为
azure-vote.yaml
的文件。- 可以使用
vi
或nano
来创建此文件,就像在虚拟或物理系统中操作一样
- 可以使用
复制以下 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.azk8s.cn/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.azk8s.cn/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
使用 kubectl apply 命令部署应用程序,并指定 YAML 清单的名称:
kubectl apply -f azure-vote.yaml
输出显示已成功创建的部署和服务:
deployment.apps/azure-vote-back created service/azure-vote-back created deployment.apps/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 费用,请清理不需要的资源。 使用 Remove-AzResourceGroup cmdlet 删除资源组、容器服务及所有相关资源。
Remove-AzResourceGroup -Name myResourceGroup
注意
删除群集时,AKS 群集使用的 Azure Active Directory 服务主体不会被删除。 有关如何删除服务主体的步骤,请参阅 AKS 服务主体的注意事项和删除。
如果你使用了托管标识,则该标识由平台托管,不需要删除。
获取代码
本快速入门使用现有的容器映像创建了 Kubernetes 部署。 GitHub 上提供了相关的应用程序代码、Dockerfile 和 Kubernetes 清单文件。
后续步骤
在本快速入门中,你部署了一个 Kubernetes 群集,然后在其中部署了多容器应用程序。
若要详细了解 AKS 并演练部署示例的完整代码,请继续阅读“Kubernetes 群集”教程。