Samouczek — skalowanie aplikacji w usłudze Azure Kubernetes Service (AKS)

Jeśli wykonano poprzednie samouczki, masz działający klaster Kubernetes i aplikację Azure Store Front.

W tym samouczku, część szósta z siedmiu, przeskaluj zasobniki w poziomie w aplikacji, wypróbuj skalowanie automatyczne zasobników i przeskaluj liczbę węzłów maszyn wirtualnych platformy Azure, aby zmienić pojemność klastra na potrzeby hostowania obciążeń. Dowiedz się, jak odbywa się:

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

Zanim rozpoczniesz

W poprzednich samouczkach spakujesz aplikację do obrazu kontenera, przekazano obraz do usługi Azure Container Registry, utworzono klaster usługi AKS, wdrożono aplikację i użyto usługi Azure Service Bus do ponownego wdrożenia zaktualizowanej aplikacji. Jeśli te kroki nie zostały wykonane i chcesz wykonać te czynności, zacznij od samouczka 1 — Przygotowywanie aplikacji dla usługi AKS.

Ten samouczek wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.34.1 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

  1. Wyświetl zasobniki w klastrze przy użyciu kubectl get polecenia .

    kubectl get pods
    

    W poniższych przykładowych danych wyjściowych przedstawiono zasobniki z uruchomioną aplikacją Front sklepu Azure:

    NAME                               READY     STATUS     RESTARTS   AGE
    order-service-848767080-tf34m      1/1       Running    0          31m
    product-service-4019737227-2q2qz   1/1       Running    0          31m
    store-front-2606967446-2q2qz       1/1       Running    0          31m
    
  2. Ręcznie zmień liczbę zasobników we wdrożeniu frontonu sklepukubectl scale przy użyciu polecenia .

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

    kubectl get pods
    

    W poniższych przykładowych danych wyjściowych przedstawiono dodatkowe zasobniki z uruchomioną aplikacją Azure Store Front:

                                      READY     STATUS    RESTARTS   AGE
    store-front-2606967446-2q2qzc     1/1       Running   0          15m
    store-front-3309479140-2hfh0      1/1       Running   0          3m
    store-front-3309479140-bzt05      1/1       Running   0          3m
    store-front-3309479140-fvcvm      1/1       Running   0          3m
    store-front-3309479140-hrbf2      1/1       Running   0          15m
    store-front-3309479140-qphz8      1/1       Running   0          3m
    

Automatyczne skalowanie zasobników

Aby korzystać z narzędzia do automatycznego skalowania zasobników w poziomie, wszystkie kontenery muszą mieć zdefiniowane żądania i limity procesora CPU, a zasobniki muszą mieć określone żądania. We wdrożeniu aks-store-quickstart kontener frontonu żąda 1 mln procesora CPU z limitem 1000 m 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: store-front
    image: ghcr.io/azure-samples/aks-store-demo/store-front:latest
    ports:
    - containerPort: 8080
      name: store-front
...
    resources:
      requests:
        cpu: 1m
...
      limits:
        cpu: 1000m
...

Automatyczne skalowanie zasobników przy użyciu pliku manifestu

  1. Utwórz plik manifestu, aby zdefiniować zachowanie narzędzia do automatycznego skalowania i limity zasobów, jak pokazano w poniższym skondensowanym przykładowym pliku manifestu aks-store-quickstart-hpa.yaml:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: store-front-hpa
    spec:
      maxReplicas: 10 # define max replica count
      minReplicas: 3  # define min replica count
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: store-front
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 50
    
  2. Zastosuj plik manifestu autoskalatora kubectl apply przy użyciu polecenia .

    kubectl apply -f aks-store-quickstart-hpa.yaml
    
  3. Sprawdź stan narzędzia do automatycznego skalowania przy użyciu kubectl get hpa polecenia .

    kubectl get hpa
    

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

Uwaga

Do klastra można włączyć dodatek AKS oparty na zdarzeniach oparty na zdarzeniach oparty na zdarzeniach (KEDA) do klastra, aby zwiększyć skalowanie na podstawie liczby zdarzeń, które należy przetworzyć. Aby uzyskać więcej informacji, zobacz Włączanie uproszczonego skalowania automatycznego aplikacji za pomocą dodatku Kubernetes Event-Driven Autoscaling (KEDA) (wersja zapoznawcza).

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,
        "vmSize": "Standard_D2_v2",
        "vnetSubnetId": null
      }
    

Możesz również automatycznie skalować węzły w klastrze. Aby uzyskać więcej informacji, zobacz Używanie narzędzia do automatycznego skalowania klastra z pulami węzłów.

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.

W następnym samouczku dowiesz się, jak uaktualnić platformę Kubernetes w klastrze usługi AKS.