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.