Ćwiczenie — włączanie skalowalności klastra w usłudze AKS
Włączanie narzędzia do automatycznego skalowania klastra w klastrze usługi AKS
Otwórz usługę Azure Cloud Shell w przeglądarce i wybierz pozycję Bash.
Utwórz grupę zasobów platformy Azure przy użyciu
az group create
polecenia .az group create --name myResourceGroup --location eastus
Utwórz nowy klaster usługi Azure Kubernetes Service (AKS) z włączonym funkcją automatycznego skalowania klastra przy użyciu
az aks create
polecenia i flagi--enable-cluster-autoscaler
.az aks create --resource-group myResourceGroup --name myAKSCluster --enable-addons monitoring --enable-msi-auth-for-monitoring --enable-cluster-autoscaler --min-count 1 --max-count 10 --generate-ssh-keys
Utworzenie klastra trwa kilka minut.
Połącz się z klastrem
az aks get-credentials
przy użyciu polecenia .az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Wyświetl węzły w klastrze przy użyciu
kubectl get nodes
polecenia .kubectl get nodes
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000001 Ready agent 1m v1.26.6 aks-nodepool1-12345678-vmss000002 Ready agent 1m v1.26.6
Wdrażanie aplikacji przykładowej
W usłudze Cloud Shell utwórz plik manifestu dla wdrożenia kubernetes o nazwie deployment.yml za pomocą
touch
polecenia .touch deployment.yml
Otwórz plik manifestu
code
przy użyciu polecenia .code deployment.yml
Wklej następujący kod do pliku manifestu.
apiVersion: apps/v1 kind: Deployment metadata: name: contoso-website spec: replicas: 35 selector: matchLabels: app: contoso-website template: metadata: labels: app: contoso-website spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-website name: contoso-website resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi ports: - containerPort: 80 name: http
Zapisz plik i zamknij edytor.
Aktualizowanie profilu skalowania automatycznego klastra
Profile skalowania automatycznego można dostosować, ustawiając serię flag w konfiguracji. Wyświetl listę dostępnych flag w temacie Korzystanie z profilu narzędzia do automatycznego skalowania klastra. W tym przykładzie zaktualizujesz narzędzie do automatycznego skalowania, aby skrócić czas sondowania, aby sprawdzić oczekujące zasobniki i skrócić czas oczekiwania przed skalowaniem w dół z poprzedniego stanu.
Zaktualizuj profil narzędzia do automatycznego skalowania klastra przy użyciu
az aks update
polecenia z flagą--cluster-autoscaler-profile
.az aks update --resource-group myResourceGroup --name myAKSCluster --cluster-autoscaler-profile scan-interval=5s scale-down-unready-time=5m scale-down-delay-after-add=5m
Skaluj wdrożenie w dół przy użyciu
kubectl scale deployment
polecenia .kubectl scale deployment contoso-website --replicas 5
Sprawdź dzienniki narzędzia do automatycznego skalowania klastra i wykonaj zapytanie dotyczące mapy konfiguracji narzędzia cluster-autoscaler-status przy użyciu
kubectl describe cm
polecenia .kubectl describe cm cluster-autoscaler-status -n kube-system
Przed skalowaniem w dół dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
Cluster-autoscaler status at 2023-11-09 20:08:14.892961701 +0000 UTC: Cluster-wide: Health: Healthy (ready=3 unready=0 notStarted=0 longNotStarted=0 registered=3 longUnregistered=0) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=3 registered=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: CandidatesPresent (candidates=3) LastProbeTime: 2023-11-09 19:56:57.890988498 +0000 UTC m=+1673.465985892 LastTransitionTime: 2023-11-09 19:56:52.440038763 +0000 UTC m=+1101.015036157
Poczekaj około pięciu minut na ukończenie skalowania automatycznego w dół, a następnie uruchom ponownie poprzedni
kubectl describe cm
element .Po skalowaniu w dół dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:
Cluster-autoscaler status at 2023-11-09 20:14:39.123206413 +0000 UTC: Cluster-wide: Health: Healthy (ready=1 unready=0 (resourceUnready=0) notStarted=0 longNotStarted=0 registered=1 longUnregistered=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleUp: NoActivity (ready=1 registered=1) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 19:45:09.593593337 +0000 UTC m=+774.168590731 ScaleDown: NoCandidates (candidates=0) LastProbeTime: 2023-11-09 20:14:39.113206413 +0000 UTC m=+2150.697175601 LastTransitionTime: 2023-11-09 20:07:08.79828656 +0000 UTC m=+1718.924760896
Wyświetl węzły w klastrze przy użyciu
kubectl get nodes
polecenia .kubectl get nodes
Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych, a liczba węzłów jest ograniczona do jednego:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 37m v1.26.6