部署 Windows 應用程式
適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本教學課程說明如何將 Windows Server 容器中的 ASP.NET 範例應用程式部署到 Arc 所啟用的 AKS) 叢集中的 Azure Kubernetes Service (AKS 叢集,然後測試及調整您的應用程式。 您也會瞭解如何將 Windows 節點加入 Active Directory 網域。
本教學課程假設您對 Kubernetes 概念有基本了解。 如需詳細資訊,請參閱 Azure Arc 所啟用 AKS 的 Kubernetes 核心概念。
開始之前
請確定您符合下列需求:
- 至少有一個 Windows 背景工作節點啟動並執行 Azure Kubernetes Service 叢集。
- 用來存取叢集的 kubeconfig 檔案。
- 已安裝 AksHci PowerShell 模組。
當您遵循程式時:
- 在 PowerShell 系統管理視窗中執行命令。
- 確定作業系統特定工作負載落在適當的容器主機上。 如果您的 Kubernetes 叢集混合了 Linux 和 Windows 背景工作角色節點,您可以使用節點選取器或 Taints 和 Tolerations。 如需詳細資訊,請參閱使用節點選取器以及污點和容差。
部署應用程式
Kubernetes 指令清單檔會定義叢集所需的狀態,例如要執行的容器映像。 在這些程式中,指令清單是用來建立在 Windows Server 容器中執行 ASP.NET 範例應用程式所需的所有物件。 此資訊清單包含 ASP.NET 範例應用程式的 Kubernetes 部署,以及從網際網路存取應用程式的外部 Kubernetes 服務。
ASP.NET 範例應用程式會作為 .NET Framework 範例的一部分提供,並在 Windows Server 容器中執行。 AKS Arc 要求 Windows Server 容器是以 Windows Server 2019 的映射為基礎。
Kubernetes 指令清單檔也必須定義節點選取器,以指示叢集在可執行 Windows Server 容器的節點上執行 ASP.NET 範例應用程式的 Pod。
Create 名為 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 服務會向網際網路公開前端應用程式。 此程序需要數分鐘的時間完成。 服務有時可能需要超過幾分鐘的時間來佈建。 在這些情況下,最多允許 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
若要查看範例應用程式的實際運作情況,請開啟網頁瀏覽器並瀏覽至服務的外部 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
後續步驟
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應