Installation des Horizontal Pod Autoscalers (HPA)
3 Minuten Lesezeit
Im Folgenden werden die Schritte zur Bereitstellung eines Kubernetes-Clusters und zur Einrichtung der horizontalen Pod-Autoskalierung (HPA) mit einigen Test- und Bereinigungsschritten beschrieben:
1. Bereitstellen eines Clusters
Zuerst wird ein Kubernetes-Cluster bereitgestellt.
2. Stellen Sie die Anwendung bereit
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hpa-demo-deployment
spec:
selector:
matchLabels:
run: hpa-demo-deployment
replicas: 1
template:
metadata:
labels:
run: hpa-demo-deployment
spec:
containers:
- name: hpa-demo-deployment
image: k8s.gcr.io/hpa-example
ports:
- containerPort: 80
resources:
limits:
cpu: 500m
requests:
cpu: 200m
Verwenden Sie kubectl apply -f deployment.yaml, um die Bereitstellung zu erstellen.
3. Erstellen Sie einen Dienst:
service.yaml
apiVersion: v1
kind: Service
metadata:
name: hpa-demo-deployment
labels:
run: hpa-demo-deployment
spec:
ports:
- port: 80
selector:
run: hpa-demo-deployment
Verwenden Sie “kubectl apply -f service.yaml”, um den Dienst zu erstellen.
4. Konfigurieren Sie HPA
hpa.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: hpa-demo-deployment
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hpa-demo-deployment
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50
Verwenden Sie kubectl apply -f hpa.yaml, um den Horizontal Pod Autoscaler zu erstellen.
5. Testen
Sie können den HPA testen, indem Sie die Last mit verschiedenen Methoden simulieren. Das mitgelieferte Beispiel verwendet kubectl run, um die Last zu simulieren:
kubectl run -i --tty load-simulation --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://hpa-demo-deployment; done"
6. Überwachung
Überwachen Sie die HPA mit kubectl und anderen Überwachungswerkzeugen, um zu beobachten, wie sie auf Änderungen der Last reagiert.
# after 30 seconds
$ kubectl -n default get pods && kubectl -n default get horizontalpodautoscaler
NAME READY STATUS RESTARTS AGE
hpa-demo-deployment-85bff8877-5b49k 1/1 Running 0 28s
hpa-demo-deployment-85bff8877-98qdq 1/1 Running 0 58s
hpa-demo-deployment-85bff8877-9z9p9 1/1 Running 0 2m51s
hpa-demo-deployment-85bff8877-sfdjh 1/1 Running 0 58s
hpa-demo-deployment-85bff8877-vtn48 1/1 Running 0 58s
load-simulation 1/1 Running 0 2m24s
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-deployment Deployment/hpa-demo-deployment 241%/50% 1 10 4 24m
# after 3 Minutes
$ kubectl -n default get pods && kubectl -n default get horizontalpodautoscaler
NAME READY STATUS RESTARTS AGE
hpa-demo-deployment-85bff8877-5b49k 1/1 Running 0 3m29s
hpa-demo-deployment-85bff8877-98qdq 1/1 Running 0 3m59s
hpa-demo-deployment-85bff8877-9z9p9 1/1 Running 0 6m42s
hpa-demo-deployment-85bff8877-gmvr2 1/1 Running 0 58s
hpa-demo-deployment-85bff8877-sfdjh 1/1 Running 0 3m59s
hpa-demo-deployment-85bff8877-vtn48 1/1 Running 0 3m59s
load-simulation 1/1 Running 0 5m25s
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-deployment Deployment/hpa-demo-deployment 56%/50% 1 10 6 27m
# after 5 Minutes
$ kubectl -n default get pods && kubectl -n default get horizontalpodautoscaler
NAME READY STATUS RESTARTS AGE
hpa-demo-deployment-85bff8877-5b49k 1/1 Running 0 5m48s
hpa-demo-deployment-85bff8877-98qdq 1/1 Running 0 6m18s
hpa-demo-deployment-85bff8877-9z9p9 1/1 Running 0 8m12s
hpa-demo-deployment-85bff8877-gmvr2 1/1 Running 0 3m17s
hpa-demo-deployment-85bff8877-sfdjh 1/1 Running. 0 6m18s
hpa-demo-deployment-85bff8877-vtn48 1/1 Running 0 6m18s
load-simulation 1/1 Running 0 7m44s
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
hpa-demo-deployment Deployment/hpa-demo-deployment 47%/50% 1 10 6 30m
7. Last entfernen
Um den Lastsimulator zu entfernen, können Sie den entsprechenden Pod löschen:
kubectl delete pod load-simulation
8. Aufräumen
Zum Schluss bereinigen Sie die Ressourcen, indem Sie den Horizontal Pod Autoscaler, das Deployment und den Service löschen:
kubectl löschen -f hpa.yaml
kubectl löschen -f deployment.yaml
kubectl löschen -f service.yaml
Diese Schritte sind ein Beispiel dafür, wie man HPA in einem Kubernetes-Cluster einrichtet und testet und anschließend die Ressourcen bereinigt.