Übung: Aktivieren der Clusterskalierbarkeit in AKS
Aktivieren der Autoskalierung für Cluster in einem AKS-Cluster
Öffnen Sie die Azure Cloud Shell in Ihrem Browser, und wählen Sie Bashaus.
Erstellen Sie mithilfe des Befehls
az group create
eine Azure-Ressourcengruppe.az group create --name myResourceGroup --location eastus
Erstellen Sie ein Azure Kubernetes Service-Cluster (AKS) mit aktivierter Autoskalierung für Cluster anhand des Befehls
az aks create
und dem Flag--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
Die Erstellung des Clusters dauert einige Minuten.
Verbinden Sie sich mit Ihrem Cluster mithilfe des Befehls
az aks get-credentials
.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Sehen Sie sich die Knoten in Ihrem Cluster mithilfe des Befehls
kubectl get nodes
an.kubectl get nodes
Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
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
Bereitstellen der Beispielanwendung
Erstellen Sie in Cloud Shell eine Manifestdatei für die Kubernetes-Bereitstellung namens deployment.yml mit dem Befehl
touch
.touch deployment.yml
Öffnen Sie die Manifestdatei mit dem Befehl
code
.code deployment.yml
Fügen Sie den folgenden Code in die Manifestdatei ein.
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
Speichern Sie die Datei, und schließen Sie den Editor.
Aktualisieren des Profils der Autoskalierung für Cluster
Sie können die Profile der Autoskalierung durch Festlegen mehrerer Flags in der Konfiguration optimieren. Zeigen Sie die Liste der verfügbaren Flags in Verwenden des Profils der Autoskalierung für Cluster an. In diesem Beispiel aktualisieren Sie die Autoskalierung, um die Abrufzeit zu reduzieren und nach ausstehenden Pods zu suchen. Außerdem verkürzen Sie die Wartezeit, bis eine Herunterskalierung von einem vorherigen Zustand erfolgt.
Aktualisieren Sie das Profil der Autoskalierung für Cluster mithilfe des Befehls
az aks update
mit dem 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
Skalieren Sie die Bereitstellung mithilfe des Befehls
kubectl scale deployment
herunter.kubectl scale deployment contoso-website --replicas 5
Überprüfen Sie die Protokolle und Abfragen der Autoskalierung für Cluster für die ConfigMap der Autoskalierung für Cluster mithilfe des Befehls
kubectl describe cm
.kubectl describe cm cluster-autoscaler-status -n kube-system
Vor dem Herunterskalieren sollte Ihre Ausgabe in etwa wie im folgenden Beispiel aussehen:
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
Warten Sie etwa fünf Minuten, bis die Autoskalierung das Herunterskalieren abgeschlossen hat, und führen Sie dann die vorherige
kubectl describe cm
erneut aus.Nach dem Herunterskalieren sollte Ihre Ausgabe in etwa wie im folgenden Beispiel aussehen:
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
Sehen Sie sich die Knoten in Ihrem Cluster mithilfe des Befehls
kubectl get nodes
an.kubectl get nodes
Ihre Ausgabe sollte in etwa wie im folgenden Beispiel aussehen, und die Anzahl der Knoten sollte auf einen reduziert sein:
NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 37m v1.26.6