Samouczek: Skalowanie aplikacji w usłudze Azure Kubernetes Service (AKS)

Jeśli wykonano poprzednie samouczki, masz działający klaster Kubernetes i wdrożono przykładową aplikację Azure Voting. Ta część samouczka, piąta z siedmiu, obejmuje skalowanie w poziomie zasobników w tej aplikacji oraz skalowanie automatyczne. Dowiesz się również, jak przez skalowanie liczby węzłów maszyny wirtualnej platformy Azure zmieniać możliwości hostowania obciążeń w klastrze. Omawiane kwestie:

  • Skaluj węzły Kubernetes.
  • Ręczne skalowanie zasobników Kubernetes, które uruchamiają aplikację.
  • Skonfiguruj zasobniki skalowania automatycznego, które uruchamiają fronton aplikacji.

W nadchodzących samouczkach zaktualizujesz aplikację Azure Vote do nowej wersji.

Zanim rozpoczniesz

W poprzednich samouczkach spakujesz aplikację do obrazu kontenera, przekazano obraz do Azure Container Registry, utworzono klaster usługi AKS i wdrożono aplikację w klastrze usługi AKS.

Jeśli te kroki nie zostały wykonane i chcesz wykonać czynności opisane w tym samouczku, zacznij od pierwszego samouczka Przygotowywanie aplikacji dla usługi AKS.

Ten samouczek wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.53 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Ręczne skalowanie zasobników

Po wdrożeniu frontonu Usługi Azure Vote i wystąpienia usługi Redis w poprzednich samouczkach utworzono pojedynczą replikę.

  1. Zobacz liczbę i stan zasobników w klastrze przy użyciu kubectl get polecenia .

    kubectl get pods
    

    Poniższe przykładowe dane wyjściowe zawierają jeden zasobnik frontonu i jeden zasobnik zaplecza:

    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
    
  2. Ręcznie zmień liczbę zasobników we wdrożeniu kubectl scaleazure-vote-front przy użyciu polecenia . Następujące przykładowe polecenie zwiększa liczbę zasobników frontonu do pięciu:

    kubectl scale --replicas=5 deployment/azure-vote-front
    
  3. Sprawdź, czy dodatkowe zasobniki zostały utworzone przy użyciu kubectl get pods polecenia .

    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
    

Automatyczne skalowanie zasobników

Rozwiązanie Kubernetes obsługuje automatyczne skalowanie zasobników w poziomie, umożliwiające dostosowywanie liczby zasobników we wdrożeniu do użycia procesora lub innych wybranych metryk. Serwer metryk jest automatycznie wdrażany w klastrach usługi AKS w wersjach 1.10 i nowszych oraz zapewnia wykorzystanie zasobów na platformie Kubernetes.

  • Sprawdź wersję klastra usługi AKS przy użyciu az aks show polecenia .

    az aks show --resource-group myResourceGroup --name myAKSCluster --query kubernetesVersion --output table
    

Uwaga

Jeśli klaster usługi AKS znajduje się w wersji niższej niż 1.10, serwer metryk nie jest instalowany automatycznie. Manifesty instalacji serwera metryk są dostępne jako components.yaml zasób w wersjach serwera metryk, co oznacza, że można je zainstalować za pośrednictwem adresu URL. Aby dowiedzieć się więcej o tych definicjach YAML, zobacz sekcję Wdrażanie pliku readme.

Przykładowa instalacja:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

Aby użyć narzędzia autoscaler, wszystkie kontenery i zasobniki muszą mieć zdefiniowane żądania i limity procesora CPU. We wdrożeniu azure-vote-front kontener frontonu żąda procesora CPU 0,25 z limitem 0,5 procesora CPU.

Te żądania zasobów i limity są definiowane dla każdego kontenera, jak pokazano w poniższym skondensowanym przykładzie YAML:

  containers:
  - name: azure-vote-front
    image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
    ports:
    - containerPort: 80
    resources:
      requests:
        cpu: 250m
      limits:
        cpu: 500m

Automatyczne skalowanie zasobników przy użyciu kubectl autoscale

  • Automatyczne skalowanie zasobników przy użyciu kubectl autoscale polecenia . Następujące polecenie automatycznie skaluje liczbę zasobników we wdrożeniu azure-vote-front z następującymi warunkami: jeśli średnie wykorzystanie procesora CPU we wszystkich zasobnikach przekracza 50% żądanego użycia, narzędzie autoskalowania zwiększa zasobniki do maksymalnie 10 wystąpień i co najmniej trzy wystąpienia wdrożenia:

    kubectl autoscale deployment azure-vote-front --cpu-percent=50 --min=3 --max=10
    

Automatyczne skalowanie zasobników przy użyciu pliku manifestu

  1. Utwórz plik manifestu, aby zdefiniować zachowanie autoskalatora i limity zasobów, jak pokazano w poniższym przykładowym pliku manifestu azure-vote-hpa.yaml:

    Uwaga

    Jeśli używasz programu apiVersion: autoscaling/v2, możesz wprowadzić więcej metryk podczas skalowania automatycznego, w tym metryk niestandardowych. Aby uzyskać więcej informacji, zobacz Autoskaluj wiele metryk i metryk niestandardowych przy użyciu v2 elementu HorizontalPodAutoscaler.

    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
    
  2. Zastosuj plik manifestu autoskalatora kubectl apply przy użyciu polecenia .

    kubectl apply -f azure-vote-hpa.yaml
    
  3. Sprawdź stan autoskalatora kubectl get hpa przy użyciu polecenia .

    kubectl get hpa
    
    # Example output
    NAME               REFERENCE                     TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
    azure-vote-front   Deployment/azure-vote-front   0% / 50%   3         10        3          2m
    

    Po kilku minutach przy minimalnym obciążeniu aplikacji Azure Vote liczba replik zasobników zmniejsza się do trzech. Możesz ponownie użyć polecenia kubectl get pods, aby sprawdzić stan usuwania niepotrzebnych zasobników.

Ręczne skalowanie węzłów usługi AKS

Jeśli klaster Kubernetes został utworzony przy użyciu poleceń w poprzednich samouczkach, klaster ma dwa węzły. Jeśli chcesz zwiększyć lub zmniejszyć tę ilość, możesz ręcznie dostosować liczbę węzłów.

W poniższym przykładzie liczba węzłów w klastrze Kubernetes o nazwie myAKSCluster zostanie zwiększona do trzech. Wykonanie tego polecenia może zająć kilka minut.

  • Skaluj az aks scale węzły klastra przy użyciu polecenia .

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 3
    

    Po pomyślnym skalowaniu klastra dane wyjściowe będą podobne do następujących przykładowych danych wyjściowych:

    "agentPoolProfiles": [
      {
        "count": 3,
        "dnsPrefix": null,
        "fqdn": null,
        "name": "myAKSCluster",
        "osDiskSizeGb": null,
        "osType": "Linux",
        "ports": null,
        "storageProfile": "ManagedDisks",
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

Następne kroki

W tym samouczku użyto różnych funkcji skalowania w klastrze Kubernetes. W tym samouczku omówiono:

  • Ręczne skalowanie zasobników Kubernetes, które uruchamiają aplikację.
  • Skonfiguruj zasobniki skalowania automatycznego, które uruchamiają fronton aplikacji.
  • Ręczne skalowanie węzłów Kubernetes.

Z następnego samouczka dowiesz się, jak aktualizować aplikacje na platformie Kubernetes.