Kurz: Škálování aplikací ve službě Azure Kubernetes Service (AKS)
Pokud jste postupovali podle kurzů, máte funkční cluster Kubernetes v AKS a nasadili jste ukázkovou hlasovací aplikaci Azure. V tomto kurzu, který je pátou částí sedmidílné série, budete škálovat pody v této aplikaci a vyzkoušíte si jejich automatické škálování. Naučíte se také, jak škálovat počet uzlů virtuálního počítače Azure, aby se změnila kapacita clusteru pro hostování úloh. Získáte informace o těchto tématech:
- Škálování uzlů Kubernetes
- Ruční škálování podů Kubernetes, ve kterých se spouští vaše aplikace
- Konfigurace automatického škálování podů, ve kterých se spouští front-end aplikace
V pozdějších kurzech se aplikace Azure Vote aktualizuje na novou verzi.
Než začnete
V předchozích kurzech byla aplikace zabalena do image kontejneru. Tato image se nahrála do Azure Container Registry a vytvořili jste cluster AKS. Aplikace se pak nasadila do clusteru AKS. Pokud jste tyto kroky ještě neudělali a chcete si je pro námi protvořit, začněte kurzem 1 – Vytváření imagí kontejneru.
Tento kurz vyžaduje použití Azure CLI verze 2.0.53 nebo novější. Verzi zjistíte spuštěním příkazu az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Ruční škálování podů
Při nasazení front-endu Azure Vote a instance Redis v předchozích kurzech se vytvořila jedna replika. Pokud chcete zobrazit počet a stav podů ve vašem clusteru, použijte příkaz kubectl get následujícím způsobem:
kubectl get pods
Následující příklad výstupu ukazuje jeden pod front-endu a jeden pod back-endu:
NAME READY STATUS RESTARTS AGE
azure-vote-back-2549686872-4d2r5 1/1 Running 0 31m
azure-vote-front-848767080-tf34m 1/1 Running 0 31m
Pokud chcete ručně změnit počet podů v nasazení azure-vote-front, použijte příkaz kubectl scale. Následující příklad zvýší počet podů front-endu na 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Znovu spusťte příkaz kubectl get pods a ověřte, že AKS úspěšně vytvoří další pody. Po minutě budou pody dostupné ve vašem clusteru:
kubectl get pods
READY STATUS RESTARTS AGE
azure-vote-back-2606967446-nmpcf 1/1 Running 0 15m
azure-vote-front-3309479140-2hfh0 1/1 Running 0 3m
azure-vote-front-3309479140-bzt05 1/1 Running 0 3m
azure-vote-front-3309479140-fvcvm 1/1 Running 0 3m
azure-vote-front-3309479140-hrbf2 1/1 Running 0 15m
azure-vote-front-3309479140-qphz8 1/1 Running 0 3m
Automatické škálování podů
Kubernetes podporuje horizontální automatické škálování podů pro úpravu počtu podů v nasazení v závislosti na využití procesoru nebo jiné vybrané metrice. K poskytování využití prostředků v Kubernetes se používá server metrik, který je automaticky nasazený v clusterech AKS verze 1.10 nebo novější. Pokud chcete zobrazit verzi clusteru AKS, použijte příkaz az aks show, jak je znázorněno v následujícím příkladu:
az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
Poznámka
Pokud je váš cluster AKS menší než 1.10, server metrik se automaticky nenainstaluje. Manifesty instalace serveru metrik jsou components.yaml
k dispozici jako prostředek v verzích serveru metrik, což znamená, že je můžete nainstalovat prostřednictvím adresy URL. Další informace o těchto definicích YAML najdete v části Nasazení souboru readme.
Příklad instalace:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Pokud chcete používat automatické škálování, musí mít všechny kontejnery v podech a podech definované požadavky na procesor a omezení. V nasazení azure-vote-front
už front-endový kontejner vyžaduje 0,25 CPU s limitem 0,5 CPU.
Tyto požadavky a omezení prostředků se definují pro každý kontejner, jak je znázorněno v následujícím příkladu fragmentu kódu:
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
ports:
- containerPort: 80
resources:
requests:
cpu: 250m
limits:
cpu: 500m
Následující příklad využívá příkaz kubectl autoscale k automatickému škálování počtu podů v nasazení azure-vote-front. Pokud průměrné využití procesoru napříč všemi pody překročí 50 % požadovaného využití, automatické škálování zvýší počet podů až na maximálně 10 instancí. Pak se pro nasazení definují minimálně 3 instance:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Alternativně můžete vytvořit soubor manifestu, který definuje chování automatického škálování a omezení prostředků. Následuje příklad souboru manifestu s názvem azure-vote-hpa.yaml
.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-back-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-back
targetCPUUtilizationPercentage: 50 # target CPU utilization
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: azure-vote-front-hpa
spec:
maxReplicas: 10 # define max replica count
minReplicas: 3 # define min replica count
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: azure-vote-front
targetCPUUtilizationPercentage: 50 # target CPU utilization
Pomocí kubectl apply
použijte automatické škálování definované v souboru azure-vote-hpa.yaml
manifestu.
kubectl apply -f azure-vote-hpa.yaml
Pokud chcete zobrazit stav modulu automatického škálování, použijte příkaz kubectl get hpa
následujícím způsobem:
kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
azure-vote-front Deployment/azure-vote-front 0% / 50% 3 10 3 2m
Po několika minutách se díky minimálnímu zatížení aplikace Azure Vote počet replik podů automaticky sníží na 3. Opětovným použitím příkazu kubectl get pods
můžete zobrazit odebírání nepotřebných podů.
Poznámka
Další příklady použití horizontálního automatického škálování podů najdete v návodu k HorizontalPodAutoscaler.
Ruční škálování uzlů AKS
Pokud jste cluster Kubernetes vytvořili pomocí příkazů v předchozím kurzu, má dva uzly. Pokud ve vašem clusteru plánujete více nebo méně úloh kontejneru, můžete počet uzlů upravit ručně.
Následující příklad zvýší počet uzlů v clusteru Kubernetes s názvem myAKSCluster na tři. Dokončení tohoto příkazu trvá několik minut.
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
Po úspěšném škálování clusteru je výstup podobný následujícímu příkladu:
"agentPoolProfiles": [
{
"count": 3,
"dnsPrefix": null,
"fqdn": null,
"name": "myAKSCluster",
"osDiskSizeGb": null,
"osType": "Linux",
"ports": null,
"storageProfile": "ManagedDisks",
"vmSize": "Standard_D2_v2",
"vnetSubnetId": null
}
Další kroky
V tomto kurzu jste v clusteru Kubernetes využili různé funkce škálování. Naučili jste se:
- Ruční škálování podů Kubernetes, ve kterých se spouští vaše aplikace
- Konfigurace automatického škálování podů, ve kterých se spouští front-end aplikace
- Ruční škálování uzlů Kubernetes
V dalším kurzu se dozvíte, jak aktualizovat aplikaci v Kubernetes.