適用於:在 Windows Server 上運行的 AKS
本指南說明如何在 Windows Server 的 AKS 中部署包含網頁前端和 Redis 資料庫實例的多容器應用程式。 你也會學會如何測試和擴展你的應用程式。
本操作指南假設你對 Kubernetes 概念有基本了解。 欲了解更多資訊,請參閱 Kubernetes 核心概念。
開始之前
請確認您具備以下先決條件:
- 一個至少有一個 Linux 工作節點且已啟動的 AKS 叢集。
- 用來存取叢集的 kubeconfig 檔案。
- 已安裝 AksHci PowerShell 模組。 更多資訊請參閱 Install-AksHci。
執行程序時:
- 在開啟管理員權限的 PowerShell 視窗中執行指令。
- 確定OS特定工作負載登陸在適當的容器主機上。 如果您的 Kubernetes 叢集包含 Linux 和 Windows 工作節點,您可以使用節點選取器或污點和容忍度。 如需詳細資訊,請參閱使用節點選取器、污點及容忍度。
Note
部署一個與另一個目標叢集共用網路的目標叢集,可能會導致負載平衡器的 IP 位址衝突。
如果你在共用相同 AksHciClusterNetwork 物件的目標叢集中部署兩個使用不同連接埠的工作負載,則可能會發生 IP 位址衝突。 由於 HA 代理中 IP 位址與埠對應的分配方式,可能導致重複 IP 位址的分配。 如果發生這種情況,在您重新部署工作負載之前,一或兩個工作負載都可能會遇到隨機網路連線問題。 當你重新部署工作負載時,你可以使用相同的埠,為每個工作負載分配一個服務 IP 位址,或者你可以將工作負載重新部署到使用不同 AksHciClusterNetwork 物件的目標叢集。
部署應用程式
Kubernetes 清單檔案定義了 Kubernetes 叢集的期望狀態,例如要運行哪些容器映像檔。 這個教學使用清單來建立執行 Azure 投票應用程式所需的所有物件。 此清單包含兩個 Kubernetes 部署:一個用於範例 Azure Vote Python 應用程式,另一個用於 Redis 實例。 同時建立了兩項 Kubernetes 服務:一個是 Redis 實例的內部服務,另一個是外部服務,用於從網際網路存取 Azure Vote 應用程式。
建立一個名為 azure-vote.yaml 的檔案,並複製貼上以下 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:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
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:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/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 "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
測試應用程式
當應用程式執行時,Kubernetes 服務會將應用程式前端暴露給網際網路。 此程序可能需要幾分鐘才能完成。
若要監視進度,請使用 kubectl get service 命令搭配 --watch 自變數:
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 22m
當 外部 IP 位址從 待處理 變成真正的公開 IP 時,使用 CTRL-C 停止 kubectl 監視程序。 下列範例輸出顯示指派給服務的有效公用 IP 位址:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 24m
若要查看作用中的 Azure 投票應用程式,請開啟網頁瀏覽器連至服務的外部 IP 位址。
擴展應用程式 Pod
我們建立了 Azure 投票應用程式前端和 Redis 實例的單一複製品。 要查看叢集中 pod 的數量和狀態,請使用 kubectl get 以下指令:
kubectl get pods -n default
以下範例輸出顯示一個前端 pod 和一個後端 pod:
NAME READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 25m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 25m
要更改 azure-vote-front 部署中的 pod 數量,請使用指令 kubectl scale 。 以下範例將前端 pod 數量增加至 5 個:
kubectl scale --replicas=5 deployment/azure-vote-front
再次執行 kubectl get pods,以驗證是否已建立更多 Pod。 一分鐘左右之後,叢集中會提供額外的 Pod:
kubectl get pods -n default
Name READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-56h64 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-djkp8 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-jmmvs 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-znc6z 1/1 Running 0 80s