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ę.
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
Ręcznie zmień liczbę zasobników we wdrożeniu
kubectl scale
azure-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
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
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życiuv2
elementuHorizontalPodAutoscaler
.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
Zastosuj plik manifestu autoskalatora
kubectl apply
przy użyciu polecenia .kubectl apply -f azure-vote-hpa.yaml
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.