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

使用 Azure 门户在 Azure Kubernetes 服务 (AKS) 群集上部署 Windows Server 容器

Azure Kubernetes 服务 (AKS) 是可用于快速部署和管理群集的托管式 Kubernetes 服务。 在本文中,你将使用 Azure 门户部署运行 Windows Server 容器的 AKS 群集。 还可将 Windows Server 容器中的 ASP.NET 示例应用程序部署到群集。

注意

为了开始快速预配 AKS 群集,本文介绍了仅针对评估目的部署具有默认设置的群集的步骤。 在部署生产就绪群集之前,建议熟悉我们的基线参考体系结构,考虑它如何与你的业务需求保持一致。

开始之前

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

创建 AKS 群集

  1. 登录到 Azure 门户

  2. 在 Azure 门户主页上,选择“创建资源”。

  3. 在“类别”部分中,选择“容器”>“Azure Kubernetes 服务(AKS)”。

  4. 在“基本信息”选项卡上,配置以下设置:

    • 在“项目详细信息”下
      • 订阅:选择要用于此 AKS 群集的 Azure 订阅。
      • 资源组:选择“新建”,输入资源组名称,例如“myResourceGroup”,然后选择“确定”。 虽然可以选择现有资源组,但出于测试或评估目的,我们建议创建一个资源组来临时托管这些资源,从而避免影响生产或开发工作负载。
    • 在“群集详细信息”下:
      • 群集预设配置:选择“开发/测试”。 有关预设配置的详细信息,请参阅 Azure 门户中的群集配置预设

        注意

        创建群集时,可以通过选择“比较预设”并选择其他选项来更改预设配置。 创建 AKS 群集的屏幕截图 - 门户预设选项。

      • Kubernetes 群集名称:输入群集名称,例如“myAKSCluster”。

      • 区域:选择一个区域,例如“美国东部 2”。

      • 可用性区域:选择“无”。

      • AKS 定价层:选择“免费”。

      • 保留其余设置的默认值,然后选择“下一步”。

        显示如何在 Azure 门户中配置 AKS 群集的屏幕截图。

  5. 在“节点池”选项卡上,配置以下设置:

    • 选择“添加节点池”,然后输入“节点池名称”,例如“npwin”。 对于 Windows 节点池,名称必须为六个字符或更少

    • 模式:选择“用户”。

    • OS SKU:选择“Windows 2022”

    • 可用性区域:选择“无”。

    • 将“启用 Azure 现成虚拟机实例”复选框保留为取消选中。

    • 节点大小:选择“选择大小”。 在“选择 VM 大小”页上,选择“D2s_v3”,然后选择“选择”。

    • 保留其余设置的默认值,然后选择“添加”。

      显示如何创建运行 Windows Server 2022 的节点池的屏幕截图。

  6. 选择“查看 + 创建”以在群集配置上运行验证。 验证完成后,选择“创建”。

    创建 AKS 群集需要几分钟时间。 部署完成后,选择“转到资源”或浏览到 AKS 群集资源组并选择 AKS 资源,导航到你的资源。

连接到群集

使用 Kubernetes 命令行客户端 kubectl 来管理 Kubernetes 群集。 如果使用的是 Azure Cloud Shell,则 kubectl 已安装。 如果不熟悉 Cloud Shell,请参阅 Azure Cloud Shell 概述

  1. 通过选择 Azure 门户页面顶部的 >_ 按钮打开 Cloud Shell。

  2. 使用 az aks get-credentials 命令将 kubectl 配置为连接到你的 Kubernetes 群集。 以下命令将下载凭据,并将 Kubernetes CLI 配置为使用这些凭据。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. 使用 kubectl get nodes 命令验证与群集的连接,该命令将返回群集节点的列表。

    kubectl get nodes
    

    以下示例输出显示群集中的所有节点。 请确保所有节点的状态为“就绪”:

    NAME                                STATUS   ROLES   AGE     VERSION
    aks-agentpool-11741175-vmss000000   Ready    agent   8m17s   v1.29.9
    aks-agentpool-11741175-vmss000001   Ready    agent   8m17s   v1.29.9
    aksnpwin000000                      Ready    agent   8m17s   v1.29.9
    aks-userpool-11741175-vmss000000    Ready    agent   8m17s   v1.29.9
    aks-userpool-11741175-vmss000001    Ready    agent   8m17s   v1.29.9
    

部署应用程序

Kubernetes 清单文件定义群集的所需状态,例如,要运行哪些容器映像。 在此快速入门中,你使用清单文件创建在 Windows Server 容器中运行 ASP.NET 示例应用程序所需的所有对象。 此清单文件包括用于 ASP.NET 示例应用程序的 Kubernetes 部署,以及用于从 Internet 访问应用程序的外部 Kubernetes 服务

ASP.NET 示例应用程序作为 .NET Framework 示例的一部分提供并在 Windows Server 容器中运行。 Kubernetes 清单文件必须定义节点选择器,以告知 AKS 群集在可运行 Windows Server 容器的节点上运行 ASP.NET 示例应用程序的 Pod。

  1. 创建名为 sample.yaml 的文件,并将其粘贴到以下 YAML 定义中。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      replicas: 1
      template:
        metadata:
          name: sample
          labels:
            app: sample
        spec:
          nodeSelector:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            ports:
              - containerPort: 80
      selector:
        matchLabels:
          app: sample
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 80
      selector:
        app: sample
    

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

    如果在本地创建并保存 YAML 文件,则可以通过选择“上传/下载文件”按钮并从本地文件系统中选择文件,将清单文件上传到 CloudShell 中的默认目录。

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

    kubectl apply -f sample.yaml
    

    以下示例输出显示已成功创建的部署和服务:

    deployment.apps/sample created
    service/sample created
    

测试应用程序

应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。 有时,服务预配的时间可能超过几分钟。 最多允许 10 分钟进行预配。

  1. 使用 kubectl get pods 命令查看已部署的 Pod 的状态。 在继续操作之前,将所有 Pod 都设置为 Running

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

    kubectl get service sample --watch
    

    最初,输出将示例服务的 EXTERNAL-IP 显示为“挂起”:

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

  4. 查看示例应用的实际效果,方法是打开 Web 浏览器并转到服务的外部 IP 地址。

    屏幕截图显示如何浏览到 ASP.NET 示例应用程序。

删除资源

如果不打算学习 AKS 教程,应删除群集以避免产生 Azure 费用。

  1. 在 Azure 门户中导航到资源组。

  2. 选择“删除资源组”。

  3. 输入资源组的名称以确认删除,然后选择“删除”。

  4. 在“删除确认”对话框中,选择“删除”。

    注意

    AKS 群集是使用系统分配的托管标识(本快速入门中使用的默认标识选项)创建的,标识由平台管理,无需删除。

后续步骤

在本快速入门中,你部署了 Kubernetes 群集,然后在该群集的 Windows Server 容器中部署了一个 ASP.NET 示例应用程序。 此示例应用程序仅用于演示目的,并未展示出 Kubernetes 应用程序的所有最佳做法。 有关使用生产版 AKS 创建完整解决方案的指南,请参阅 AKS 解决方案指南

若要详细了解 AKS 并演练一个从编码到部署的完整示例,请继续阅读 Kubernetes 群集教程。