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.