Knoten mit Kubectl untersuchen

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 lernen Sie, wie Sie kubectl verwenden, um die Knoten (Nodes) in Ihrem Kubernetes-Cluster zu untersuchen. Sie beginnen mit grundlegenden Informationen zu den Knoten und arbeiten sich dann zu fortgeschritteneren Themen wie Taints und Tolerations vor. Dieses Lab setzt voraus, dass Sie bereits einen Kubernetes-Cluster eingerichtet haben und kubectl installiert ist.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("Annotate") kubernetes/BasicCommandsGroup -.-> kubernetes/cordon("Cordon") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/label("Label") subgraph Lab Skills kubernetes/initialization -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/get -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/annotate -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/cordon -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/uncordon -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/taint -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/cluster_info -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/describe -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} kubernetes/label -.-> lab-9790{{"Knoten mit Kubectl untersuchen"}} 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.
    • 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.

Grundlegende Knoteninformationen

Das erste, was Sie tun werden, ist es, grundlegende Informationen über die Knoten (Nodes) in Ihrem Cluster zu erhalten.

  1. Um eine Liste der Knoten in Ihrem Cluster anzuzeigen, führen Sie den folgenden Befehl aus:

    kubectl get nodes

    Dies zeigt eine Liste aller Knoten in Ihrem Cluster zusammen mit ihrem Status an.

  2. Um detailliertere Informationen über einen bestimmten Knoten zu erhalten, führen Sie den folgenden Befehl aus:

    kubectl describe node minikube

    Ersetzen Sie minikube durch den Namen des Knotens, den Sie untersuchen möchten. Dies gibt Ihnen detaillierte Informationen über den Status, die Kapazität und die Nutzung des Knotens.

Labels und Annotations

Labels (Bezeichnungen) und Annotations (Anmerkungen) können verwendet werden, um Metadaten zu den Knoten (Nodes) in Ihrem Cluster hinzuzufügen. Diese Metadaten können genutzt werden, um Knoten für bestimmte Aufgaben auszuwählen oder Knoten basierend auf bestimmten Kriterien zu filtern.

  1. Um die Labels und Annotations für einen bestimmten Knoten anzuzeigen, führen Sie den folgenden Befehl aus:

    kubectl get node minikube --show-labels=true

    Dies zeigt die Labels und Annotations für den angegebenen Knoten an.

  2. Um ein Label zu einem Knoten hinzuzufügen, führen Sie den folgenden Befehl aus:

    kubectl label node minikube org=labex
  3. Um eine Annotation zu einem Knoten hinzuzufügen, führen Sie den folgenden Befehl aus:

    kubectl annotate node minikube environment=production
  4. Verwenden Sie den folgenden Befehl, um die Labels auf dem Knoten zu überprüfen:

    kubectl get nodes --show-labels

    Dies gibt eine Liste aller Knoten im Cluster zusammen mit ihren Labels aus. Knoten können mit Labels versehen werden, um ihren Zweck oder ihre Eigenschaften zu identifizieren.

Taints und Tolerations

Taints (Abzeichen) und Tolerations (Toleranzen) können verwendet werden, um zu steuern, welche Pods auf welchen Knoten (Nodes) in Ihrem Cluster geplant (scheduled) werden können. Ein Taint ist ein spezielles Label, das einen Knoten als ungeeignet für bestimmte Pod-Typen markiert, und eine Toleration ist eine Einstellung, die es einem Pod ermöglicht, auf einem Knoten mit einem passenden Taint geplant zu werden.

  1. Um die Taints für einen bestimmten Knoten anzuzeigen, führen Sie den folgenden Befehl aus:

    kubectl describe node minikube | grep Taints

    Dies zeigt die Taints für den angegebenen Knoten an.

  2. Um einen Taint zu einem Knoten hinzuzufügen, führen Sie den folgenden Befehl aus:

    kubectl taint node minikube app=backend:NoSchedule
  3. Um eine Toleration für einen Pod zu erstellen, führen Sie den folgenden Befehl aus:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
        - name: my-container
          image: nginx
      tolerations:
        - key: app
          operator: Exists
          effect: NoSchedule
    EOF

    Dieser Pod verwendet app als Namen des Taints und NoSchedule als die Auswirkung, die der Taint haben soll.

Anzeigen der Knotenkapazität und Ressourcenauslastung

Um die verfügbaren Ressourcen auf einem Knoten anzuzeigen, verwenden Sie den folgenden Befehl:

kubectl describe node minikube | grep -A 8 "Allocated resources"

Ersetzen Sie minikube durch den Namen des Knotens, den Sie untersuchen möchten.

Dies liefert detaillierte Informationen über den Knoten, einschließlich seiner Kapazität und der aktuellen Ressourcenauslastung.

Anzeigen von Knotenereignissen

In Kubernetes können Sie den folgenden Befehl verwenden, um alle Ereignisse (Events) zu filtern, die sich auf einen bestimmten Knoten (Node) beziehen:

kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube

Ersetzen Sie minikube durch den Namen des Knotens, nach dem Sie suchen möchten. Dieser Befehl listet alle Ereignisse auf, die sich auf diesen Knoten beziehen, wie beispielsweise Neustarts, Upgrades usw.

Knoten sperren (Cordon) und entsperren (Uncordon)

In einigen Fällen müssen Sie möglicherweise einen Knoten (Node) für Wartungsarbeiten oder andere Gründe aus dem Rotationsbetrieb nehmen. Kubernetes bietet die Möglichkeit, einen Knoten als nicht planbar (unschedulable) zu markieren, sodass keine neuen Pods auf ihm geplant werden. Dies wird "Cordon" genannt.

Um einen Knoten zu sperren, verwenden Sie den folgenden Befehl:

kubectl cordon minikube

Ersetzen Sie minikube durch den Namen des Knotens, den Sie sperren möchten.

Verwenden Sie dann den folgenden Befehl, um den Status des Knotens zu überprüfen:

kubectl get node

Um einen Knoten zu entsperren und neue Pods auf ihm planen zu lassen, verwenden Sie den folgenden Befehl:

kubectl uncordon minikube

Ersetzen Sie minikube durch den Namen des Knotens, den Sie entsperren möchten.

Beachten Sie, dass das Sperren eines Knotens nicht automatisch alle vorhandenen Pods vom Knoten entfernt. Sie sollten die Pods manuell löschen oder verschieben, bevor Sie den Knoten sperren, um Unterbrechungen zu vermeiden.

Herzlichen Glückwunsch, Sie haben gelernt, wie Sie einen Knoten in Kubernetes sperren und entsperren können.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Knoten (Nodes) in einem Kubernetes-Cluster mit kubectl untersuchen können. Sie haben gelernt, wie Sie Knoten auflisten, ihren Status überprüfen, ihre Labels anzeigen und ihre Kapazität sowie Ressourcenauslastung untersuchen können. Sie haben auch gelernt, wie Sie Knoten für Wartungsarbeiten und Upgrades leeren (drain) und entsperren (uncordon) können.