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.
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.
Navigieren Sie zu Ihrem Arbeitsverzeichnis:
Öffnen Sie das Terminal und navigieren Sie zum Standard-Projektordner:
cd /home/labex/projectStarten 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.
Überprüfen Sie, ob Minikube läuft:
Überprüfen Sie den Status des Minikube-Clusters:
minikube status- Suchen Sie nach Komponenten wie
kubeletundapiserver, die alsRunningaufgeführt sind. - Wenn der Cluster nicht läuft, führen Sie
minikube starterneut aus.
- Suchen Sie nach Komponenten wie
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.
- Erstellen Sie eine Bereitstellungsdatei namens
deployment.yamlmit 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.
- 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.
- Erstellen Sie eine HorizontalPodAutoscaler-Datei namens
hpa.yamlmit 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.
- 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.
- Aktivieren Sie den Metrics-Server
minikube addons enable metrics-server
- Erstellen Sie einen Pod zur Lastgenerierung:
kubectl run -i --tty load-generator --image=busybox /bin/sh
- 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
- Ö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
- Stoppen Sie die Lastgenerierung, indem Sie in der Lastgenerierungskonsole
Strg + Cdrü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.


