Kubernetes-Ressourcenkontingentverwaltung

KubernetesKubernetesBeginner
Jetzt üben

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

Einführung

In diesem Lab erfahren Sie, wie Sie Kubernetes ResourceQuota verwenden können, um Grenzen für den Ressourcenverbrauch in einem Kubernetes-Cluster festzulegen. ResourceQuota ermöglicht es Ihnen, die Zuweisung von Ressourcen wie CPU und Arbeitsspeicher für Namespaces in einem Kubernetes-Cluster zu steuern und zu verwalten. Sie beginnen mit einfachen Beispielen und arbeiten sich schrittweise zu komplexeren Szenarien vor. Jeder Schritt enthält Codebeispiele und Anweisungen zur Anwendung in Ihrem Kubernetes-Cluster.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} kubernetes/get -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} kubernetes/create -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} kubernetes/edit -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} kubernetes/apply -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} kubernetes/describe -.-> lab-15823{{"Kubernetes-Ressourcenkontingentverwaltung"}} end

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 in Ihr Arbeitsverzeichnis:

    Öffnen Sie das Terminal und navigieren Sie in den 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.
    • Je nach Leistung Ihres Systems kann es einige Minuten dauern, bis Minikube gestartet ist.
  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 ResourceQuota

In diesem Schritt erstellen Sie eine einfache ResourceQuota, die die Menge an CPU und Arbeitsspeicher begrenzt, die in einem Namespace verwendet werden kann. So geht's:

  1. Erstellen Sie eine Datei mit dem Namen resourcequota.yaml mit folgendem Inhalt:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota
spec:
  hard:
    cpu: "1"
    memory: "1Gi"

Diese ResourceQuota setzt die folgenden festen Grenzen:

  • CPU: 1 Kern
  • Arbeitsspeicher: 1 GiB
  1. Wenden Sie die Datei resourcequota.yaml auf Ihren Kubernetes-Cluster an, indem Sie den Befehl kubectl apply verwenden:
kubectl apply -f resourcequota.yaml
  1. Überprüfen Sie, ob die ResourceQuota erfolgreich erstellt wurde, indem Sie den folgenden Befehl ausführen:
kubectl describe resourcequota example-resourcequota

Im Ausgabeergebnis sollten Sie die Details der ResourceQuota sehen.

Anwenden einer ResourceQuota auf einen Namespace

In diesem Schritt wenden Sie die in Schritt: Erstellen einer ResourceQuota erstellte ResourceQuota auf einen Namespace an. So geht's:

  1. Erstellen Sie eine Datei mit dem Namen namespace.yaml mit folgendem Inhalt:
apiVersion: v1
kind: Namespace
metadata:
  name: example-namespace

Diese Namespace-Definition erstellt einen Namespace mit dem Namen example-namespace.

  1. Wenden Sie die Datei namespace.yaml auf Ihren Kubernetes-Cluster an, indem Sie den Befehl kubectl apply verwenden:
kubectl apply -f namespace.yaml
  1. Wenden Sie die ResourceQuota auf den Namespace example-namespace an, indem Sie den Befehl kubectl apply verwenden:
kubectl apply -f resourcequota.yaml -n example-namespace
  1. Überprüfen Sie, ob die ResourceQuota auf den Namespace angewendet wurde, indem Sie den folgenden Befehl ausführen:
kubectl describe namespace example-namespace

Im Ausgabeergebnis sollten Sie die Details der auf den Namespace angewendeten ResourceQuota sehen.

Testen der Durchsetzung der ResourceQuota

In diesem Schritt erstellen Sie einen Pod, der die in der ResourceQuota definierten Ressourcenlimits überschreitet, und überprüfen, ob die ResourceQuota die Limits durchsetzt. So geht's:

  1. Erstellen Sie eine Datei mit dem Namen pod-exceeding-limits.yaml mit folgendem Inhalt:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod-exceeding-limits
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          cpu: "2"
          memory: "2Gi"

Diese Pod-Definition erstellt einen Pod mit einem Container, der Ressourcen anfordert, die die in Schritt: Erstellen einer ResourceQuota festgelegten Limits überschreiten (CPU: 2 Kerne, Arbeitsspeicher: 2 GiB).

  1. Wenden Sie die Datei pod-exceeding-limits.yaml auf Ihren Kubernetes-Cluster an, indem Sie den Befehl kubectl apply verwenden:
kubectl apply -f pod-exceeding-limits.yaml

Sie können sehen, dass der Vorgang zum Erstellen des Pods abgelehnt wird. Die Fehlermeldung lautet: Error from server (Forbidden): error when creating "pod-exceeding-limits.yaml": pods "example-pod-exceeding-limits" is forbidden: exceeded quota: example-resourcequota, requested: cpu=2,memory=2Gi, used: cpu=0,memory=0, limited: cpu=1,memory=1Gi.

Ändern einer ResourceQuota

In diesem Schritt erfahren Sie, wie Sie eine vorhandene ResourceQuota ändern, um die Ressourcenlimits zu aktualisieren. So geht's:

  1. Bearbeiten Sie die Datei resourcequota.yaml, um die CPU- und Arbeitsspeicherlimits auf höhere Werte zu aktualisieren:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota
spec:
  hard:
    cpu: "2"
    memory: "2Gi"

Dadurch wird die ResourceQuota aktualisiert, um höhere Limits für CPU und Arbeitsspeicher zuzulassen (jeweils 2 Kerne und 2 GiB).

  1. Wenden Sie die aktualisierte Datei resourcequota.yaml auf Ihren Kubernetes-Cluster an, indem Sie den Befehl kubectl apply verwenden:
kubectl apply -f resourcequota.yaml
  1. Überprüfen Sie, ob die ResourceQuota aktualisiert wurde, indem Sie den folgenden Befehl ausführen:
kubectl describe resourcequotas example-resourcequota

Im Ausgabeergebnis sollten Sie die aktualisierten CPU- und Arbeitsspeicherlimits sehen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Kubernetes ResourceQuota verwenden, um Limits für den Ressourcenverbrauch in einem Kubernetes-Cluster festzulegen. Sie haben zunächst eine einfache ResourceQuota erstellt, sie auf einen Namespace angewendet und ihre Durchsetzung getestet, indem Sie einen Pod erstellt haben, der die Ressourcenlimits überschreitet. Sie haben auch gelernt, wie Sie eine vorhandene ResourceQuota ändern, um die Ressourcenlimits zu aktualisieren. ResourceQuota ist ein leistungsstarkes Tool zum Verwalten von Ressourcen in einem Kubernetes-Cluster und zur Sicherstellung, dass Anwendungen keine übermäßigen Ressourcen verbrauchen.