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 novějších kurzech se aplikace hlasování Azure 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 nasadí do clusteru AKS. Pokud jste tyto kroky neudělali a chcete je sledovat, začněte s kurzem 1 – vytváření imagí kontejneru.
Tento kurz vyžaduje, abyste spustili 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
Spusťte kubectl znovu, abyste ověřili, že AKS úspěšně vytvořil další lusky. Po minutě, kdy jsou lusky k dispozici 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 metriky se neinstaluje automaticky. Manifesty instalace serveru metriky jsou k dispozici jako components.yaml prostředek na vydaných verzích serveru metriky, což znamená, že je můžete nainstalovat přes adresu URL. Další informace o těchto definicích YAML najdete v části věnované nasazení v souboru Readme.
Příklad instalace:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
Chcete-li použít automatické škálování, všechny kontejnery v luskech a vaše lusky musí mít definované požadavky na procesor a omezení. V azure-vote-front nasazení má front-end kontejner již požadavky 0,25 procesor s limitem 0,5 CPU.
Tyto požadavky na prostředky a omezení jsou definovány pro každý kontejner, jak je znázorněno v následujícím ukázkovém 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 lusky překročí 50% jejich vyžádaného využití, přizpůsobuje se automatické škálování až do maximálního počtu 10 instancí. Pro nasazení je pak definováno minimálně 3 instance:
kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
Případně 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
Použijte kubectl apply k použití automatického škálování definovaného v azure-vote-hpa.yaml souboru 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ů.
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 se výstup podobá 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.