Verwendung des HorizontalPodAutoscalers in Kubernetes

KubernetesKubernetesBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

HorizontalPodAutoscaler ist ein Kubernetes-Feature, das es Ihnen ermöglicht, die Anzahl der Pods in einer Bereitstellung (Deployment) automatisch basierend auf der Ressourcenauslastung anzupassen. In diesem Lab werden wir lernen, wie Sie HorizontalPodAutoscaler verwenden, um unsere Bereitstellung automatisch zu skalieren.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 87% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Starten des Minikube-Clusters

Bevor Sie Ressourcen erstellen, benötigen Sie einen laufenden Kubernetes-Cluster. Minikube ist eine leichte Kubernetes-Umgebung, die auf Ihrem lokalen Rechner läuft.

  1. Navigieren Sie zu Ihrem Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:

    cd /home/labex/project
  2. Starten Sie Minikube:

    Starten Sie Minikube, um einen Kubernetes-Cluster zu initialisieren:

    minikube start
    • Dieser Befehl richtet einen Ein-Knoten-Kubernetes-Cluster auf Ihrem lokalen Rechner ein.
    • Minikube kann je nach Leistung Ihres Systems einige Minuten dauern, um zu starten.
  3. Überprüfen Sie, ob Minikube läuft:

    Überprüfen Sie den Status des Minikube-Clusters:

    minikube status
    • Suchen Sie nach Komponenten wie kubelet und apiserver, die als Running aufgeführt sind.
    • Wenn der Cluster nicht läuft, führen Sie minikube start erneut aus.

Wenn Sie Probleme beim Starten von Minikube haben, können Sie minikube delete verwenden, um die Umgebung bei Bedarf zurückzusetzen.

Erstellen einer Bereitstellung (Deployment)

Zunächst müssen wir eine Bereitstellung (Deployment) erstellen, auf die wir den HorizontalPodAutoscaler anwenden werden.

  1. Erstellen Sie eine Bereitstellungsdatei namens deployment.yaml mit folgendem Inhalt:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hpa-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hpa-demo
  template:
    metadata:
      labels:
        app: hpa-demo
    spec:
      containers:
        - name: hpa-demo
          image: nginx
          resources:
            limits:
              cpu: "1"
              memory: 512Mi
            requests:
              cpu: "0.5"
              memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
  name: hpa-demo
spec:
  selector:
    app: hpa-demo
  ports:
    - name: http
      port: 80
      targetPort: 80

Diese Bereitstellung (Deployment) gibt eine einzelne Replik eines Nginx-Containers mit Ressourcenlimits und -anforderungen für CPU und Arbeitsspeicher (Memory) an.

  1. Erstellen Sie die Bereitstellung (Deployment):
kubectl apply -f deployment.yaml

Erstellen eines HorizontalPodAutoscalers

Nachdem wir nun eine Bereitstellung (Deployment) haben, können wir einen HorizontalPodAutoscaler erstellen, um die Bereitstellung automatisch zu skalieren.

  1. Erstellen Sie eine HorizontalPodAutoscaler-Datei namens hpa.yaml mit folgendem Inhalt:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-demo
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: hpa-demo
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          averageUtilization: 1
          type: Utilization

Dieser HorizontalPodAutoscaler legt fest, dass wir die hpa-demo-Bereitstellung (Deployment) so skalieren möchten, dass sie zwischen 1 und 10 Repliken hat, und dass unser Ziel eine durchschnittliche CPU-Auslastung (Utilization) von 50% ist.

  1. Erstellen Sie den HorizontalPodAutoscaler:
kubectl apply -f hpa.yaml

Testen des HorizontalPodAutoscalers

Nachdem wir nun einen HorizontalPodAutoscaler haben, können wir ihn testen, indem wir die Bereitstellung (Deployment) mit Last beaufschlagen.

  1. Aktivieren Sie den Metrics-Server
minikube addons enable metrics-server
  1. Erstellen Sie einen Pod zur Lastgenerierung:
kubectl run -i --tty load-generator --image=busybox /bin/sh
  1. Führen Sie im Lastgenerierungspod den folgenden Befehl aus, um die Bereitstellung (Deployment) mit Last zu beaufschlagen:
while true; do wget -q -O- http://hpa-demo; done
  1. Öffnen Sie ein anderes Terminal und überprüfen Sie den Status des HorizontalPodAutoscalers:
kubectl get hpa

Sie können sehen, dass die Anzahl der Kopien von hpa-demo auf 10 erweitert wurde. Sie können die Anzahl der Repliken mit dem folgenden Befehl überprüfen.

kubectl get pods -l app=hpa-demo
  1. Stoppen Sie die Lastgenerierung, indem Sie in der Lastgenerierungskonsole Strg + C drücken.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man HorizontalPodAutoscaler verwendet, um eine Bereitstellung (Deployment) basierend auf der Ressourcenauslastung automatisch zu skalieren. Wir haben eine Bereitstellung (Deployment) erstellt, einen HorizontalPodAutoscaler erstellt und ihn getestet, indem wir die Bereitstellung (Deployment) mit Last beaufschlagt haben. Wir haben auch gesehen, wie der HorizontalPodAutoscaler die Bereitstellung (Deployment) als Reaktion auf die erhöhte Last skaliert hat.