部署 Windows 应用程序
适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本教程介绍如何将 Windows Server 容器中的 ASP.NET 示例应用程序部署到已启用 Arc 的 AKS 中的 Azure Kubernetes 服务 (AKS) 群集,然后测试和缩放应用程序。 你还将了解如何将 Windows 节点加入 Active Directory 域。
本教程假定你对 Kubernetes 概念有基本的了解。 有关详细信息,请参阅 由 Azure Arc 启用的 AKS 的 Kubernetes 核心概念。
开始之前
请确保满足以下要求:
- 至少有一个 Windows 工作器节点启动并正在运行的Azure Kubernetes 服务群集。
- 用于访问群集的 kubeconfig 文件。
- 已安装 AksHci PowerShell 模块。
按照以下过程操作时:
- 在 PowerShell 管理员窗口中运行命令。
- 确保特定于 OS 的工作负荷位于相应的容器主机上。 如果 Kubernetes 群集混合使用 Linux 和 Windows 工作器节点,则可以使用节点选择器或污点和容忍。 有关详细信息,请参阅 使用节点选择器和污点和容忍。
部署应用
Kubernetes 清单文件定义群集的所需状态,例如,要运行哪些容器映像。 在这些过程中,清单用于创建在 Windows Server 容器中运行 ASP.NET 示例应用程序所需的所有对象。 此清单包括用于 ASP.NET 示例应用程序的 Kubernetes 部署,以及用于从 Internet 访问应用程序的外部 Kubernetes 服务。
ASP.NET 示例应用程序作为 .NET Framework 示例的一部分提供,并在 Windows Server 容器中运行。 AKS Arc 要求 Windows Server 容器基于 Windows Server 2019 的映像。
Kubernetes 清单文件还必须定义节点选择器,以指示群集在可运行 Windows Server 容器的节点上运行 ASP.NET 示例应用程序的 Pod。
创建名为 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:
"beta.kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
requests:
cpu: .1
memory: 300M
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
使用 kubectl apply
命令部署应用程序,并指定 YAML 清单的名称:
kubectl apply -f sample.yaml
以下示例输出显示已成功创建部署和服务:
deployment.apps/sample created
service/sample created
测试应用程序
应用程序运行时,Kubernetes 服务将向 Internet 公开应用程序前端。 此过程可能需要几分钟才能完成。 有时,服务预配的时间可能超过几分钟。 在这种情况下,最多需要 10 分钟。
若要监视进度,请使用 kubectl get service
带参数的 --watch
命令:
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
当 EXTERNAL-IP 地址从 pending 更改为实际公共 IP 地址时,请使用 CTRL-C
停止 kubectl
监视进程。 以下示例输出显示向服务分配了有效的公共 IP 地址:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
若要查看示例应用的实际效果,请打开 Web 浏览器并转到服务的外部 IP 地址。
如果尝试加载页面时连接超时,请通过运行 kubectl get pods --watch
命令来验证示例应用是否已准备就绪。 有时,外部 IP 地址在 Windows 容器启动之前可用。
缩放应用程序 Pod
我们创建了应用程序前端的单个副本。 若要查看群集中 Pod 的数量和状态,请使用 kubectl get
如下所示的命令:
kubectl get pods -n default
要更改示例部署中的 Pod 数量,请使用 kubectl scale
命令。 以下示例将前端 Pod 的数量增加到 3:
kubectl scale --replicas=3 deployment/sample
再次运行 kubectl get pods
以验证是否已创建 Pod。 一分钟左右之后,其他 Pod 会在群集中提供:
kubectl get pods -n default