Skip to main content

Risiken

Ausfallsicherheit Kubernetes-Komponenten

Die Gewährleistung der Ausfallsicherheit von Kubernetes-Komponenten ist entscheidend für die Aufrechterhaltung einer stabilen und robusten Cluster-Umgebung. Kubernetes unterstützt Cluster mit bis zu 5000 Knoten, aber es ist wichtig, bestimmte Kriterien einzuhalten und fortschrittliche Funktionen wie den HorizontalPodAutoscaler zu verwenden, um eine optimale Leistung aufrechtzuerhalten und eine Ressourcenerschöpfung zu vermeiden.

Empfohlene Grenzwerte für die Ausfallsicherheit von Clustern

Um die Ausfallsicherheit zu gewährleisten, wird empfohlen, die folgenden Grenzwerte einzuhalten:

  • Nicht mehr als 100 Pods pro Knoten
  • Nicht mehr als 5000 Knoten
  • Nicht mehr als 150.000 Pods insgesamt
  • Nicht mehr als 300.000 Container insgesamtl

Die Skalierung des Clusters durch Hinzufügen oder Entfernen von Knoten nach Bedarf trägt zur Aufrechterhaltung von Leistung und Verfügbarkeit bei.

Maßnahme M039: Replikate und Autoscaler

HorizontalPodAutoscaler (HPA)

Kubernetes bietet einen HorizontalPodAutoscaler (HPA) zur automatischen Skalierung der Anzahl von Pods in einem ReplicaController, Deployment, ReplicaSet oder StatefulSet auf Grundlage der beobachteten CPU-Auslastung. Der HPA hilft, eine übermäßige Ressourcennutzung zu verhindern und bietet Schutz vor Forkbombing-Angriffen.

Schutz vor Forkbombing

Angreifer können Befehle wie kubectl scale verwenden, um eine übermäßige Anzahl von Pods zu erstellen, die möglicherweise den Cluster lahmlegen. Zum Beispiel:

kubectl scale deployment <Name> --replicas=10000000000000000000000000000000

Dieser Befehl würde wahrscheinlich zum Absturz des Clusters führen. Mit dem HPA können Sie eine maximale Anzahl von Replikaten festlegen und so solche Angriffe verhindern. Zum Beispiel:

kubectl autoscale deployment test --max=3
Aktivieren des Metrics Servers

Um die HPA vollständig nutzen zu können, ist ein Metrikserver erforderlich, der CPU- und Speicherdaten liefert. Der Metrikserver kann wie folgt installiert und konfiguriert werden:

  1. Installieren Sie den Metrics Server:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/<find latest one>/components.yaml
  1. Konfiguration des Metrics Servers:

    Bearbeiten Sie die Bereitstellung, um die erforderlichen Argumente hinzuzufügen

kubectl edit deployment metrics-server -n kube-system

Fügen Sie die folgenden Einträge in den Abschnitt args ein:

containers:
- args:
  - --cert-dir=/tmp
  - --secure-port=4443
  - --kubelet-preferred-address-types=InternalIP
  - --kubelet-use-node-status-port
  - --kubelet-insecure-tls

Wenn der Metrics Server aktiviert ist, kann die HPA korrekt funktionieren.

Beispiel für HorizontalPodAutoscaler
  1. Erstellen Sie einen Einsatz und einen Dienst:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: php-apache
spec:
  selector:
    matchLabels:
      run: php-apache
  replicas: 1
  template:
    metadata:
      labels:
        run: php-apache
    spec:
      containers:
      - name: php-apache
        image: k8s.gcr.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 200m
---
apiVersion: v1
kind: Service
metadata:
  name: php-apache
  labels:
    run: php-apache
spec:
  ports:
  - port: 80
  selector:
    run: php-apache

Wenden Sie die obige YAML an, um die Bereitstellung und den Dienst zu erstellen:

 
kubectl apply -f /path/to/deployment.yaml
  1. Einen Autoscaler erstellen:
 
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

Überprüfen Sie die Autoscaler im Standard-Namespace:

kubectl get hpa
  1. Erzeugen Sie Last, um den Autoscaler zu testen:

Verwenden Sie einen BusyBox-Pod zur Erzeugung von Last auf dem php-apache-Einsatz:

kubectl run -it load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"

Überwachen Sie die HPA in Aktion:

watch kubectl get hpa

Schlussfolgerung

Die Einhaltung der empfohlenen Grenzwerte und die Verwendung von Tools wie dem HorizontalPodAutoscaler und dem Metrics Server sind für die Aufrechterhaltung der Widerstandsfähigkeit von Kubernetes-Clustern unerlässlich. Durch die richtige Konfiguration dieser Komponenten können Sie die Erschöpfung von Ressourcen verhindern, sich vor Angriffen schützen und sicherstellen, dass Ihr Cluster stabil und leistungsfähig bleibt. Die Umsetzung dieser Best Practices hilft Ihnen, Ihre Kubernetes-Umgebung vor potenziellen Bedrohungen und betrieblichen Herausforderungen zu schützen.


Orientieren Sie sich an folgenden Maßnahmen: