部署Linux應用程式
適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本指南說明如何在 Azure Arc 所啟用的 AKS 中,部署包含 Web 前端和 Redis 資料庫實例的多容器應用程式。您也會瞭解如何測試及調整您的應用程式。
本操作說明指南假設對 Kubernetes 概念有基本的瞭解。 如需詳細資訊,請參閱 Kubernetes 核心概念。
開始之前
確定您已滿足下列必要條件:
- AKS 叢集,至少有一個 Linux 背景工作角色節點已啟動並執行。
- 用來存取叢集的 kubeconfig 檔案。
- 已安裝 AksHci PowerShell 模組。 如需詳細資訊,請參閱 Install-AksHci。
當您執行程式時:
- 在以系統管理許可權開啟的PowerShell視窗中執行命令。
- 確定OS特定工作負載登陸在適當的容器主機上。 如果您的 Kubernetes 叢集混合了 Linux 和 Windows 背景工作角色節點,您可以使用節點選取器或污點和容忍。 如需詳細資訊,請參閱 使用節點選取器和污點和容忍。
注意
部署與另一個目標叢集共享網路的目標叢集可能會導致負載平衡器 IP 位址衝突。
如果您在共用相同 AksHciClusterNetwork
對象的目標叢集中部署兩個使用不同的埠的工作負載,就可能發生IP位址衝突。 由於IP位址和埠對應在HA Proxy內配置的方式,因此可能會導致指派重複的IP位址。 如果發生這種情況,在您重新部署工作負載之前,一或兩個工作負載都可能會遇到隨機網路連線問題。 當您重新部署工作負載時,您可以使用相同的埠,將服務IP位址指派給每個工作負載,或者您可以在使用不同 AksHciClusterNetwork
物件的目標叢集上重新部署工作負載。
部署應用程式
Kube 資訊清單檔會定義所需的叢集狀態,例如要執行哪些容器映像。 本教學課程會使用指令清單來建立執行 Azure 投票應用程式所需的所有物件。 此指令清單包含兩個 Kubernetes 部署:一個用於範例 Azure 投票 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 會顯示為擱置中:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
當 EXTERNAL-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