
Wenn Sie mit Kubernetes arbeiten, ist kubectl wahrscheinlich eines der am häufigsten verwendeten Werkzeuge von Ihnen. Und jedes Mal, wenn Sie viel Zeit mit einem bestimmten Tool verbringen, sollten Sie es gründlich kennenlernen und lernen, wie man es effizient nutzt.
Team hat den Artikel von Daniel Weibel übersetzt, in dem Sie Tipps und Tricks für die effiziente Nutzung von kubectl finden. Er hilft auch, das Verständnis für die Funktionsweise von Kubernetes zu vertiefen.
Laut dem Autor ist das Ziel des Artikels, Ihre tägliche Arbeit mit Kubernetes nicht nur effizienter, sondern auch angenehmer zu gestalten!
Einführung: Was ist kubectl?
Bevor Sie lernen, kubectl effektiver zu nutzen, müssen Sie ein grundlegendes Verständnis davon haben, was es ist und wie es funktioniert.
Aus Sicht des Benutzers ist kubectl ein Verwaltungstool, das es Ihnen ermöglicht, Kubernetes-Operationen durchzuführen.
Aus technischer Sicht ist kubectl ein Kubernetes API-Client.
Das Kubernetes API ist eine HTTP REST API. Diese API ist die echte Benutzerschnittstelle von Kubernetes, über die es vollständig gesteuert wird. Das bedeutet, dass jede Kubernetes-Operation als API-Endpunkt dargestellt wird und über eine HTTP-Anfrage an diesen Endpunkt ausgeführt werden kann.
Daher besteht die Hauptaufgabe von kubectl darin, HTTP-Anfragen an das Kubernetes API zu senden:

Kubernetes ist ein vollständig ressourcenorientiertes System. Das bedeutet, dass es den internen Status von Ressourcen verwaltet und alle Kubernetes-Operationen CRUD-Operationen sind.
Sie haben die vollständige Kontrolle über Kubernetes, indem Sie diese Ressourcen verwalten, und Kubernetes ermittelt, was getan werden muss, basierend auf dem aktuellen Zustand der Ressourcen. Aus diesem Grund ist der Verweis auf das Kubernetes API in einer Liste von Ressourcenarten mit den damit verbundenen Operationen organisiert.
Lassen Sie uns ein Beispiel betrachten..
Angenommen, Sie möchten eine Ressource ReplicaSet erstellen. Dazu beschreiben Sie das ReplicaSet in einer Datei mit dem Namen replicaset.yaml, dann führen Sie den Befehl aus:
$ kubectl create -f replicaset.yamlIn dieser Folge wird eine Ressource ReplicaSet erstellt. Aber was passiert im Hintergrund?
In Kubernetes gibt es eine Operation zum Erstellen von ReplicaSets. Wie jede andere Operation wird sie als API-Endpunkt bereitgestellt. Der spezifische API-Endpunkt für diese Operation sieht folgendermaßen aus:
POST /apis/apps/v1/namespaces/{namespace}/replicasetsDie API-Endpunkte aller Kubernetes-Operationen finden Sie im (einschließlich der oben genannten API-Endpunkt) ). Um eine tatsächliche Anfrage an den Endpunkt zu stellen, müssen Sie zuvor die URL des API-Servers zu den im API-Handbuch aufgeführten Endpunkt-Pfaden hinzufügen.
Daher sendet kubectl, wenn Sie den oben genannten Befehl ausführen, eine HTTP-POST-Anfrage an den oben genannten API-Endpunkt. Die Definition des ReplicaSet, die Sie in der Datei replicaset.yaml, wird im Anfrage-Körper übermittelt.
So funktioniert kubectl für alle Befehle, die mit dem Kubernetes-Cluster interagieren. In all diesen Fällen sendet kubectl einfach HTTP-Anfragen an die entsprechenden API-Endpunkte von Kubernetes.
Bitte beachten Sie, dass Kubernetes auch vollständig mit einem solchen Dienstprogramm wie curlverwaltet werden kann, indem man manuell HTTP-Anfragen an die Kubernetes-API sendet. Kubectl vereinfacht lediglich die Nutzung der Kubernetes-API.
Das ist die Grundlage dessen, was kubectl ist und wie es funktioniert. Aber es gibt noch etwas über die Kubernetes-API, das jeder Benutzer von kubectl wissen sollte. Lassen Sie uns kurz in die innere Welt von Kubernetes eintauchen.
Innere Welt von Kubernetes
Kubernetes besteht aus einer Reihe unabhängiger Komponenten, die als separate Prozesse auf den Knoten des Clusters ausgeführt werden. Einige Komponenten arbeiten auf den Hauptknoten, andere auf den Arbeitsknoten, wobei jede Komponente ihre spezielle Aufgabe erfüllt.
Hier sind die wichtigsten Komponenten auf den Hauptknoten:
- Speicher — speichert die Ressourcendefinitionen ().
- API-Server — stellt die API bereit und verwaltet den Speicher.
- Controller-Manager — stellt sicher, dass die Status der Ressourcen mit den Spezifikationen übereinstimmen.
- Scheduler — plant Pods auf den Arbeitsknoten.
Und hier ist eine der wichtigsten Komponenten auf den Arbeitsknoten:
- Kubelet — verwaltet den Start von Containern auf dem Arbeitsknoten.
Um zu verstehen, wie diese Komponenten zusammenarbeiten, betrachten wir ein Beispiel.
Angenommen, Sie haben gerade kubectl create -f replicaset.yaml, danach hat kubectl eine HTTP-POST-Anfrage an gesendet (wobei die Ressourcendefinition des ReplicaSets übergeben wird).
Was geschieht im Cluster?
- Nach der Durchführung von
kubectl create -f replicaset.yamlspeichert der API-Server die Definition Ihres ReplicaSet in dem Speicher:
- Anschließend wird der ReplicaSet-Controller im Controller-Manager aktiviert, der für das Erstellen, Ändern und Löschen von ReplicaSet-Ressourcen zuständig ist:

- Der ReplicaSet-Controller erstellt eine Pod-Definition für jede Replica des ReplicaSets (basierend auf dem Pod-Muster in der Definition des ReplicaSets) und speichert sie im Speicher:

- Der Scheduler wird gestartet, um Pods zu verfolgen, die noch keiner Arbeitsknotene zugewiesen wurden:

- Der Scheduler wählt einen geeigneten Arbeitsknoten für jeden Pod aus und fügt diese Informationen in die Pod-Definition im Speicher ein:

- Auf dem Arbeitsknoten, dem ein Pod zugewiesen ist, wird Kubelet gestartet, das die Pods überwacht, die diesem Knoten zugewiesen sind:

- Kubelet liest die Pod-Definition aus dem Speicher und gibt Befehle an die Container-Laufzeitumgebung, wie Docker, um Container auf dem Knoten zu starten:

Im Folgenden finden Sie eine Textversion dieser Beschreibung.
Eine API-Anfrage an den Endpunkt zur Erstellung von ReplicaSets wird vom API-Server verarbeitet. Der API-Server authentifiziert die Anfrage und speichert die Definition der Ressource ReplicaSet im Speicher.
Dieses Ereignis startet den ReplicaSet-Controller, der ein Unterprozess des Controllerschedulers ist. Der ReplicaSet-Controller überwacht die Erstellung, Aktualisierung und Löschung von ReplicaSet-Ressourcen im Speicher und erhält eine Benachrichtigung über das Ereignis, wenn dies geschieht.
Die Aufgabe des ReplicaSet-Controllers besteht darin, sicherzustellen, dass die erforderliche Anzahl von ReplicaSet-Pods vorhanden ist. In unserem Beispiel existieren zunächst keine Pods, daher erstellt der ReplicaSet-Controller diese Pod-Definitionen (entsprechend der Pod-Vorlage in der ReplicaSet-Definition) und speichert sie im Speicher.
Die Erstellung neuer Pods löst den Scheduler aus, der die Pod-Definitionen verfolgt, die noch nicht für Arbeitsknoten geplant sind. Der Scheduler wählt einen geeigneten Arbeitsknoten für jeden Pod aus und aktualisiert die Pod-Definitionen im Speicher.
Beachten Sie, dass bis zu diesem Zeitpunkt in keinem Teil des Clusters Code der Arbeitslast ausgeführt wurde. Alles, was bisher geschehen ist, — ist die Erstellung und Aktualisierung von Ressourcen im Speicher auf dem Master-Node.
Das letzte Ereignis startet Kubelet, das die Pods überwacht, die für ihre Arbeitsknoten geplant sind. Kubelet des Arbeitsknotens, für den Ihre ReplicaSet-Pods eingerichtet sind, muss der Container-Laufzeitumgebung, wie Docker, den Befehl geben, die erforderlichen Container-Images herunterzuladen und sie zu starten.
An diesem Punkt ist endlich Ihr ReplicaSet-Anwendung gestartet!
Die Rolle der Kubernetes-API
Wie Sie im vorherigen Beispiel gesehen haben, überwachen die Kubernetes-Komponenten (mit Ausnahme des API-Servers und des Speichers) die Änderungen der Ressourcen im Speicher und ändern die Informationen über die Ressourcen im Speicher.
Natürlich interagieren diese Komponenten nicht direkt mit dem Speicher, sondern nur über die Kubernetes-API.
Betrachten wir die folgenden Beispiele:
- Der ReplicaSet-Controller nutzt den API-Endpunkt mit Parameter
beobachtenum Änderungen an den Ressourcen des ReplicaSets zu verfolgen. - Der ReplicaSet-Controller nutzt den API-Endpunkt (einen Pod erstellen) zum Erstellen von Pods.
- Der Scheduler verwendet den API-Endpunkt (einen Pod ändern) um Pods mit Informationen über den ausgewählten Arbeitsknoten zu aktualisieren.
Wie Sie sehen, handelt es sich um die gleiche API, die von kubectl verwendet wird. Die Verwendung derselben API für die Arbeit mit internen Komponenten und externen Benutzern ist ein grundlegendes Konzept im Design von Kubernetes.
Jetzt können wir zusammenfassen, wie Kubernetes funktioniert:
- Der Speicher speichert den Zustand, also die Ressourcen von Kubernetes.
- Der API-Server bietet eine Schnittstelle zum Speicher in Form der Kubernetes-API.
- Alle anderen Komponenten und Benutzer von Kubernetes lesen, beobachten und manipulieren den Zustand (die Ressourcen) von Kubernetes über die API.
Das Wissen über diese Konzepte wird Ihnen helfen, kubectl besser zu verstehen und effizienter zu nutzen.
Lassen Sie uns nun einige konkrete Tipps und Tricks betrachten, die helfen werden, die Nutzung von kubectl zu optimieren.
1. Beschleunigen Sie die Eingabe durch Befehlsergänzung
Eine der nützlichsten, aber oft übersehenen Methoden zur Steigerung der Effizienz bei der Verwendung von kubectl ist die Befehlsergänzung.
Die Befehlsergänzung ermöglicht es, Teile von kubectl-Befehlen automatisch mit der Tabulatortaste auszufüllen. Dies funktioniert für Unterbefehle, Optionen und Argumente, einschließlich komplexer wie Ressourcennamen.
Sehen Sie, wie die Befehlsergänzung von kubectl funktioniert:

Die Befehlsergänzung funktioniert für die Shells Bash und Zsh.
enthält detaillierte Anweisungen zur Einrichtung der automatischen Ergänzung, aber hier geben wir einen kurzen Auszug.
Wie die Befehlsergänzung funktioniert
Die Befehlsergänzung ist eine Funktion der Shell, die mit einem Ergänzungsskript arbeitet. Das Ergänzungsskript ist ein Shell-Skript, das das Verhalten der Ergänzung für einen bestimmten Befehl definiert.
Kubectl generiert und gibt automatisch Ergänzungsskripte für Bash und Zsh mit den folgenden Befehlen aus:
$ kubectl completion bashOder:
$ kubectl completion zshTheoretisch reicht es aus, die Ausgabe dieser Befehle in die entsprechende Shell zu verbinden, damit kubectl die Befehle ergänzen kann.
In der Praxis unterscheidet sich die Anschlussmethode für Bash (einschließlich der Unterschiede zwischen Linux und MacOS) und Zsh. Nachfolgend betrachten wir alle diese Optionen.
Bash unter Linux
Das Ergänzungsskript für Bash hängt vom Paket bash-completion ab, deshalb muss es zunächst installiert werden:
$ sudo apt-get install bash-completionOder:
$ yum install bash-completionSie können testen, ob das Paket erfolgreich installiert wurde, indem Sie den folgenden Befehl verwenden:
$ type _init_completion Wenn dabei der Funktionscode der Shell ausgegeben wird, ist bash-completion korrekt installiert. Wenn der Befehl einen Fehler „Nicht gefunden“ ausgibt, müssen Sie die folgende Zeile in Ihre Datei hinzufügen. ~ / .bashrc:
$ source /usr/share/bash-completion/bash_completion Ob diese Zeile in die Datei hinzugefügt werden muss ~ / .bashrc oder nicht, hängt vom Paketmanager ab, den Sie zur Installation von bash-completion verwendet haben. Bei APT ist dies erforderlich, bei YUM nicht.
Nach der Installation von bash-completion müssen Sie alles so konfigurieren, dass das Ergänzungsskript kubectl in allen Shell-Sitzungen aktiviert ist.
Eine Möglichkeit, dies zu tun, besteht darin, die folgende Zeile in die Datei einzufügen: ~ / .bashrc:
source <(kubectl completion bash) Eine andere Möglichkeit besteht darin, das Ergänzungsskript kubectl in das Verzeichnis /etc/bash_completion.d einzufügen (erstellen Sie es, falls es nicht existiert):
$ kubectl completion bash >/etc/bash_completion.d/kubectl Alle Ergänzungsskripte im Verzeichnis /etc/bash_completion.d werden automatisch in bash-completion aktiviert.
Beide Optionen sind gleichermaßen anwendbar.
Nach dem Neustart der Kommandozeile funktioniert die automatische Vervollständigung der kubectl-Befehle.
Bash unter MacOS
Unter MacOS ist die Einrichtung etwas komplizierter. Das Problem ist, dass unter MacOS standardmäßig Bash Version 3.2 installiert ist, während das Autocomplete-Skript für kubectl eine Bash-Version von 4.1 oder höher benötigt und unter Bash 3.2 nicht funktioniert.
Die Verwendung einer veralteten Bash-Version unter MacOS hängt mit Lizenzfragen zusammen. Bash Version 4 wird unter der GPLv3-Lizenz veröffentlicht, die von Apple nicht unterstützt wird.
Um die Autovervollständigung für kubectl unter MacOS einzurichten, müssen Sie eine neuere Version von Bash installieren. Sie können auch Bash aktualisieren und als Standard-Shell festlegen, was zukünftige Probleme vermeiden wird. Das ist nicht schwierig, die Einzelheiten sind im Artikel „».
Bevor Sie fortfahren, stellen Sie sicher, dass Sie eine aktuelle Version von Bash verwenden (prüfen Sie die Ausgabe bash --version).
Das Autocomplete-Skript in Bash hängt vom Projekt , daher muss es zuerst installiert werden.
Sie können bash-completion mit :
$ brew install bash-completion@2 Hier @2 bezeichnet bash-completion Version 2. Die automatische Vervollständigung von kubectl erfordert bash-completion v2, und bash-completion v2 benötigt mindestens Bash Version 4.1.
Ausgabe des Befehls brew-install enthält den Abschnitt Caveats, in dem angegeben ist, dass Folgendes zur Datei hinzugefügt werden muss ~/.bash_profile:
export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && .
"/usr/local/etc/profile.d/bash_completion.sh" Ich empfehle jedoch, diese Zeilen nicht in ~/.bash_profile, sondern in ~/.bashrc. In diesem Fall wird die automatische Vervollständigung nicht nur in der Haupt-, sondern auch in den Unter-Shells verfügbar sein.
Nach dem Neustart der Shell können Sie die korrekte Installation mit dem folgenden Befehl überprüfen:
$ type _init_completionWenn Sie in der Ausgabe eine Shell-Funktion sehen, ist alles richtig konfiguriert.
Jetzt müssen Sie sicherstellen, dass die automatische Vervollständigung von kubectl in allen Sitzungen aktiviert ist.
Eine Möglichkeit besteht darin, die folgende Zeile in Ihre ~/.bashrc:
source <(kubectl completion bash) Zweite Möglichkeit ist, das Vervollständigungs-Skript in den Ordner /usr/local/etc/bash_completion.d:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectlDiese Methode funktioniert nur, wenn Sie bash-completion mit Homebrew installiert haben. In diesem Fall lädt bash-completion alle Skripte aus diesem Verzeichnis.
Wenn Sie , dann ist der vorherige Schritt nicht erforderlich, da das Vervollständigungs-Skript automatisch im Ordner platziert wird /usr/local/etc/bash_completion.d während der Installation. In diesem Fall beginnt die automatische Vervollständigung von kubectl sofort zu funktionieren, sobald Sie bash-completion installieren.
Insgesamt sind all diese Optionen gleichwertig.
Zsh
Vervollständigungs-Skripte für Zsh erfordern keine Abhängigkeiten. Alles, was Sie tun müssen, ist, sie beim Laden der Shell zu aktivieren.
Das können Sie tun, indem Sie eine Zeile in Ihre ~/.zshrc Datei hinzufügen:
source <(kubectl completion zsh) Wenn Sie den Fehler erhalten haben not found: compdef nach dem Neustart Ihrer Shell, müssen Sie die eingebaute Funktion compdefaktivieren. Sie können dies tun, indem Sie am Anfang Ihrer Datei das Folgende hinzufügen: ~/.zshrc autoload -Uz compinit compinit
2. Schnelle Übersicht über RessourcenspezifikationenWenn Sie YAML-Ressourcendefinitionen erstellen, müssen Sie die Felder und deren Werte für diese Ressourcen kennen. Ein Ort, um diese Informationen zu finden, ist das API-Handbuch, das vollständige Spezifikationen aller Ressourcen enthält.
Es ist jedoch unbequem, jedes Mal zum Webbrowser zu wechseln, wenn Sie etwas suchen müssen. Daher bietet kubectl den Befehl
kubectl explain , der die Spezifikationen aller Ressourcen direkt in Ihrem Terminal anzeigt., der die Spezifikationen aller Ressourcen direkt in Ihrem Terminal anzeigt.
Das Format des Befehls ist wie folgt:
$ kubectl explain resource[.field]...Der Befehl gibt die Spezifikation der angeforderten Ressource oder des Feldes zurück. Die ausgegebenen Informationen sind identisch mit denen im API-Handbuch.
Standardmäßig , der die Spezifikationen aller Ressourcen direkt in Ihrem Terminal anzeigt. werden nur die ersten Ebenen der Felder angezeigt.
Sie können sehen, wie das aussieht .
Das gesamte Baumdiagramm kann angezeigt werden, wenn Sie die Option hinzufügen --recursive:
$ kubectl explain deployment.spec --recursiveWenn Sie nicht genau wissen, welche Ressourcen Sie benötigen, können Sie alle mit dem folgenden Befehl auflisten:
$ kubectl api-resources Dieser Befehl zeigt die Ressourcennamen in der Mehrzahlform an, zum Beispiel deployments anstatt deployment. Er zeigt auch den Kurznamen an, wenn vorhanden. Machen Sie sich keine Sorgen über diese Unterschiede. All diese Namensvarianten sind für kubectl gleichwertig. Das heißt, Sie können jede von ihnen verwenden, um deployAlle folgenden Befehle sind gleichwertig: , der die Spezifikationen aller Ressourcen direkt in Ihrem Terminal anzeigt..
$ kubectl explain deployments.spec # oder $ kubectl explain deployment.spec # oder $ kubectl explain deploy.spec
3. Verwenden Sie benutzerdefinierte Ausgabeformatierungen für SpaltenStandardmäßig hat der Befehl
kubectl get $ kubectl get pods NAME READY STATUS RESTARTS AGE engine-544b6b6467-22qr6 1/1 Running 0 78d engine-544b6b6467-lw5t8 1/1 Running 0 78d engine-544b6b6467-tvgmg 1/1 Running 0 78d web-ui-6db964458-8pdw4 1/1 Running 0 78d:
Dieses Format ist nützlich, enthält jedoch eine begrenzte Menge an Informationen. Im Vergleich zum vollständigen Ressourcendefinitionsformat werden hier nur wenige Felder angezeigt.In diesem Fall können Sie benutzerdefinierte Ausgabeformatierungen für Spalten verwenden. Damit können Sie angeben, welche Daten ausgegeben werden sollen. Sie können jedes Feld der Ressource in einer separaten Spalte ausgeben.
Die Verwendung des benutzerdefinierten Formats wird durch Optionen definiert:
-o custom-columns=
Sie können jede Ausgabe-Spalte mit einem Paar definieren, wobei— der Name der Spalte ist und — der Name der Spalte, und — der Ausdruck, der das Feld der Ressource definiert. Lassen Sie uns ein einfaches Beispiel ansehen:
$ kubectl get pods -o custom-columns='NAME:metadata.name'NAME engine-544b6b6467-22qr6 engine-544b6b6467-lw5t8 engine-544b6b6467-tvgmg web-ui-6db964458-8pdw4
Die Ausgabe enthält eine Spalte mit den Namen der Pods.Der Ausdruck in der Option wählt die Namen der Pods aus dem Feld
metadata.name . Das liegt daran, dass der Name des Pods im untergeordneten Feld name des Feldes definiert istmetadata in der Ressourcenspezifikation des Pods. Genauere Informationen finden Sie im API-Handbuch kubectl explain pod.metadata.name kubectl explain pod.metadata.name.
Angenommen, Sie möchten eine zusätzliche Spalte zur Ausgabe hinzufügen, z. B. um den Knoten anzuzeigen, auf dem jeder Pod läuft. Dazu können Sie einfach die entsprechende Spaltenspezifikation zur Option für benutzerdefinierte Spalten hinzufügen:
$ kubectl get pods
-o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
NAME NODE
engine-544b6b6467-22qr6 ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8 ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4 ip-10-0-118-34.ec2.internal Der Ausdruck wählt den Namen des Knotens aus spec.nodeName — wenn ein Pod einem Knoten zugewiesen wird, wird sein Name im Feld spec.nodeName der Ressourcenspezifikation des Pods eingetragen. Weitere Informationen finden Sie in der Ausgabe von kubectl explain pod.spec.nodeName.
Beachten Sie, dass die Kubernetes-Ressourcenfelder groß- und kleinschreibungsempfindlich sind.
Sie können jedes Ressourcenfeld als Spalte anzeigen. Sehen Sie sich einfach die Ressourcenspezifikation an und experimentieren Sie mit beliebigen Feldern, die Ihnen gefallen.
Lassen Sie uns jedoch zunächst einen genaueren Blick auf die Feldauswahl-Ausdrücke werfen.
JSONPath-Ausdrücke
Die Ausdrücke zur Auswahl von Ressourcenfeldern basieren auf .
JSONPath ist eine Sprache zum Abfragen von Daten aus JSON-Dokumenten. Die Auswahl eines Feldes ist der einfachste Anwendungsfall für JSONPath. Es hat viel , einschließlich Selektoren, Filter usw.
Kubectl explain unterstützt eine begrenzte Anzahl von JSONPath-Funktionen. Im Folgenden sind die Funktionen und Beispiele für deren Verwendung beschrieben:
# Выбрать все элементы списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# Выбрать специфический элемент списка
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# Выбрать элементы списка, попадающие под фильтр
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# Выбрать все поля по указанному пути, независимо от их имени
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# Выбрать все поля с указанным именем, вне зависимости от их расположения
$ kubectl get pods -o custom-columns='DATA:..image'Der Operator [] hat eine besondere Bedeutung. Viele Ressourcenfelder in Kubernetes sind Listen, und dieser Operator ermöglicht es, Elemente dieser Listen auszuwählen. Er wird häufig zusammen mit dem Platzhalter [*] verwendet, um alle Elemente der Liste auszuwählen.
Anwendungsbeispiele
Die Möglichkeiten, benutzerdefinierte Ausgaben von Spalten zu nutzen, sind grenzenlos, da Sie jedes Feld oder jede Kombination von Ressourcenfeldern in der Ausgabe anzeigen können. Hier sind einige Anwendungsbeispiele, aber zögern Sie nicht, sie selbst zu erkunden und nützliche Anwendungen für sich zu finden.
- Anzeigen von Container-Images für Pods:
$ kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' NAME IMAGES engine-544b6b6467-22qr6 rabbitmq:3.7.8-management,nginx engine-544b6b6467-lw5t8 rabbitmq:3.7.8-management,nginx engine-544b6b6467-tvgmg rabbitmq:3.7.8-management,nginx web-ui-6db964458-8pdw4 wordpressDieser Befehl zeigt die Namen der Container-Images für jeden Pod an.
Denken Sie daran, dass unter möglicherweise mehrere Container vorhanden sind, in diesem Fall werden die Bildnamen in einer Zeile durch Kommas getrennt angezeigt.
- Anzeige der Verfügbarkeitszonen der Knoten:
$ kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone' NAME ZONE ip-10-0-118-34.ec2.internal us-east-1b ip-10-0-36-80.ec2.internal us-east-1a ip-10-0-80-67.ec2.internal us-east-1bDieser Befehl ist nützlich, wenn Ihr Cluster in einer öffentlichen Cloud gehostet wird. Er zeigt die Verfügbarkeitszone für jeden Knoten an.
Eine Verfügbarkeitszone ist ein Cloud-Konzept, das den Replikationsbereich auf eine geografische Region einschränkt.
Die Verfügbarkeitszonen für jeden Knoten werden über ein spezielles Label abgerufen — . Wenn der Cluster in einer öffentlichen Cloud betrieben wird, wird dieses Label automatisch erstellt und mit den Namen der Verfügbarkeitszonen für jeden Knoten ausgefüllt.
Labels sind kein Teil der Spezifikation von Kubernetes-Ressourcen, daher finden Sie keine Informationen dazu in . Sie können sie jedoch (wie auch alle anderen Labels) sehen, wenn Sie Informationen zu Knoten im YAML- oder JSON-Format anfordern:
$ kubectl get nodes -o yaml # oder $ kubectl get nodes -o jsonDies ist eine großartige Möglichkeit, mehr über Ressourcen zu erfahren, zusätzlich zum Studium der Ressourcenspezifikationen.
4. Einfaches Wechseln zwischen Clustern und Namespaces
Wenn kubectl eine Anfrage an die Kubernetes-API sendet, liest es zuvor die kubeconfig-Datei, um alle erforderlichen Verbindungsparameter zu erhalten.
Standardmäßig ist die kubeconfig-Datei ~/.kube/config. Diese Datei wird normalerweise durch einen speziellen Befehl erstellt oder aktualisiert.
Wenn Sie mit mehreren Clustern arbeiten, enthält Ihre kubeconfig-Datei die Verbindungsparameter für all diese Cluster. Sie benötigen eine Möglichkeit, kubectl anzugeben, mit welchem Cluster Sie arbeiten.
Innerhalb eines Clusters können Sie mehrere Namespaces erstellen – eine Art virtueller Cluster innerhalb eines physischen Clusters. Kubectl bestimmt, welcher Namespace verwendet werden soll, ebenfalls anhand der Daten in der kubeconfig-Datei. Das bedeutet, Sie benötigen auch eine Möglichkeit, kubectl anzugeben, mit welchem Namespace Sie arbeiten möchten.
In diesem Kapitel werden wir erläutern, wie das funktioniert und wie Sie eine effiziente Nutzung erreichen können.
Bitte beachten Sie, dass Sie mehrere kubeconfig-Dateien in der Umgebungsvariable KUBECONFIG haben können. In diesem Fall werden alle diese Dateien zur Laufzeit in eine gemeinsame Konfiguration kombiniert. Sie können auch die standardmäßig verwendete kubeconfig-Datei ändern, indem Sie kubectl mit dem Parameter --kubeconfigausführen. Siehe .
Kubeconfig-Dateien
Schauen wir uns an, was eine Kubeconfig-Datei genau enthält:

Wie Sie sehen können, enthält die Kubeconfig-Datei eine Reihe von Kontexten. Ein Kontext besteht aus drei Elementen:
- Cluster — URL des API-Servers des Clusters.
- User — Anmeldeinformationen für die Authentifizierung des Benutzers im Cluster.
- Namespace — der Namespace, der verwendet wird, um sich mit dem Cluster zu verbinden.
In der Praxis wird häufig ein Kontext pro Cluster in der Kubeconfig-Datei verwendet. Dennoch können Sie mehrere Kontexte pro Cluster haben, die sich in Benutzer oder Namespace unterscheiden. Eine solche Konfiguration mit mehreren Kontexten kommt jedoch nicht häufig vor, sodass in der Regel eine eindeutige Zuordnung zwischen Clustern und Kontexten besteht.
Zu jedem Zeitpunkt ist einer der Kontexte der aktuelle:

Wenn kubectl die Konfigurationsdatei liest, werden immer die Informationen aus dem aktuellen Kontext verwendet. Im obigen Beispiel wird kubectl eine Verbindung zum Cluster Hare herstellen.
Um zu einem anderen Cluster zu wechseln, muss der aktuelle Kontext in der Kubeconfig-Datei geändert werden:

Jetzt wird kubectl eine Verbindung zum Cluster Fox herstellen.
Um zu einem anderen Namespace im selben Cluster zu wechseln, muss der Wert des Feldes namespace für den aktuellen Kontext geändert werden:

Im obigen Beispiel wird kubectl den Namespace Prod des Clusters Fox verwenden (zuvor war der Namespace Test eingestellt).
Bitte beachten Sie, dass kubectl auch die Optionen --cluster, --user, --namespace und --context, bietet, um einzelne Elemente und den aktuellen Kontext zu überschreiben, unabhängig von dem, was in der Kubeconfig-Datei festgelegt ist. Siehe kubectl-Optionen.
Theoretisch können Sie die Parameter in der Kubeconfig-Datei manuell ändern. Das ist jedoch mühsam. Um diese Vorgänge zu erleichtern, gibt es verschiedene Tools, die die Parameter automatisiert ändern können.
Verwenden Sie kubectx
Ein sehr beliebtes Tool zum Wechseln zwischen Clustern und Namespaces.
Das Werkzeug bietet Befehle kubectx und kubens um den aktuellen Kontext und den Namensraum entsprechend zu ändern.
Wie bereits erwähnt, bedeutet das Ändern des aktuellen Kontexts, den Cluster zu wechseln, wenn Sie nur einen Kontext pro Cluster haben.
Hier ist ein Beispiel für die Ausführung dieser Befehle:

Im Grunde bearbeiten diese Befehle einfach die kubeconfig-Datei, wie oben beschrieben.
Um zu installieren kubectx, folgen Sie den Anweisungen auf
Beide Befehle unterstützen die automatische Vervollständigung von Kontext- und Namensraumnamen, was es ermöglicht, sie nicht vollständig einzugeben. Anweisungen zur Einrichtung der automatischen Vervollständigung .
Eine weitere nützliche Funktion kubectx ist . Er funktioniert zusammen mit dem Werkzeug , das separat installiert werden muss. Die Installation von fzf macht den interaktiven Modus in kubectxautomatisch verfügbar. Im interaktiven Modus können Sie Kontext und Namensraum über die interaktive Suchoberfläche auswählen, die von fzf bereitgestellt wird.
Verwendung von Shell-Aliasen
Sie benötigen keine separaten Werkzeuge zum Ändern des aktuellen Kontexts und des Namensraums, da kubectl auch Befehle dafür bereitstellt. So bietet der Befehl kubectl config Unterbefehle zum Bearbeiten von kubeconfig-Dateien an.
Hier sind einige davon:
kubectl config get-contexts: gibt alle Kontexte aus;kubectl config current-context: erhält den aktuellen Kontext;kubectl config use-context: ändert den aktuellen Kontext;kubectl config set-context: ändert das Kontext-Element.
Es ist jedoch nicht sehr bequem, diese Befehle direkt zu verwenden, weil sie lang sind. Sie können Aliasnamen für die Shell erstellen, die einfach ausgeführt werden können.
Ich habe eine Reihe von Aliasen auf Basis dieser Befehle erstellt, die eine ähnliche Funktionalität wie kubectx bereitstellen. Hier können Sie ihre Funktionsweise sehen:

Beachten Sie, dass die Aliase fzf zur Bereitstellung einer interaktiven Suchoberfläche verwenden (wie im interaktiven Modus von kubectx). Das bedeutet, dass Sie , um diese Aliase verwenden zu können.
Hier sind die Alias-Definitionen:
# Получить текущий контекст
alias krc='kubectl config current-context'
# Список всех контекстов
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;|^ $(krc)$|s/ /*/"'
# Изменить текущий контекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# Получить текущее пространство имен
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# Список всех пространств имен
alias kln='kubectl get -o name ns | sed "s|^.*/| |;|^ $(krn)$|s/ /*/"'
# Изменить текущее пространство имен
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"' Um diese Aliase zu installieren, müssen Sie die oben genannten Definitionen in Ihre Datei ~/.bashrc oder ~/.zshrc hinzufügen und Ihre Shell neu laden.
Verwendung von Plugins
Kubectl ermöglicht das Laden von Plugins, die genauso ausgeführt werden wie die Hauptbefehle. Man kann beispielsweise das Plugin kubectl-foo installieren und es ausführen, indem man den Befehl kubectl foo.
ändert den Kontext und den Namensraum auf diese Weise. Man kann beispielsweise den Befehl ausführen kubectl ctx um den Kontext und kubectl ns um den Namensraum zu wechseln.
Ich habe zwei Plugins geschrieben, die dies ermöglichen:
Die Funktionsweise der Plugins basiert auf den Aliassen aus dem vorherigen Abschnitt.
So funktionieren sie:

Bitte beachten Sie, dass die Plugins fzf verwenden, um eine interaktive, freie Suchoberfläche bereitzustellen (wie im interaktiven Modus von kubectx). Das bedeutet, dass Sie, um diese Aliase verwenden zu können.
Um die Plugins zu installieren, müssen Sie die Shell-Skripte mit den Namen und in ein beliebiges Verzeichnis Ihrer PATH-Variable herunterladen und sie ausführbar machen, beispielsweise mit chmod +x. Direkt danach können Sie kubectl ctx und kubectl ns.
5. Eingabeverkürzung mit Auto-Aliassen
Shell-Aliasse sind eine gute Möglichkeit, die Eingabe zu beschleunigen. Das Projekt enthält etwa 800 Abkürzungen für die grundlegenden kubectl-Befehle.
Sie fragen sich vielleicht — wie kann man 800 Aliasse im Kopf behalten? Aber man muss sie nicht alle im Kopf haben, da sie nach einem einfachen Schema aufgebaut sind, das im Folgenden dargestellt wird:

Zum Beispiel:
- kgpooyaml — kubectl get pods oyaml
- ksysgsvcw — kubectl -n kube-system get svc w
- ksysrmcm — kubectl -n kube-system rm cm
- kgdepallsl — kubectl get deployment all sl
Wie Sie sehen, bestehen die Aliasse aus Komponenten, von denen jede ein bestimmtes Element des kubectl-Befehls bezeichnet. Jeder Alias kann eine Komponente für den Basisbefehl, die Operation und die Ressource sowie mehrere Komponenten für die Parameter haben. Sie fügen einfach diese Komponenten von links nach rechts, gemäß dem oben angegebenen Schema, hinzu.
Das aktuelle detaillierte Schema finden Sie unter . Dort finden Sie auch.
Zum Beispiel ist der Alias kgpooyamlall äquivalent zu dem Befehl kubectl get pods -o yaml --all-namespaces.
Die relative Reihenfolge der Optionen ist nicht wichtig: Der Befehl kgpooyamlall ist äquivalent zu dem Befehl kgpoalloyaml.
Sie müssen nicht alle Komponenten als Aliasse verwenden. Beispielsweise k, kg, klo, ksys, kgpo kann ebenfalls verwendet werden. Darüber hinaus können Sie in der Kommandozeile Aliasse und normale Befehle oder Optionen kombinieren:
Zum Beispiel:
- Statt
kubectl proxykann geschrieben werden alsk proxy. - Statt
kubectl get roleskann geschrieben werden alskg roles(derzeit gibt es keinen Alias für die Ressource Roles). - Um Daten zu einem bestimmten Pod zu erhalten, kann der Befehl verwendet werden
kgpo my-pod — kubectl get pod my-pod.
Bitte beachten Sie, dass einige Aliase ein Argument in der Befehlszeile erfordern. Zum Beispiel bedeutet der Alias kgpol bedeutet kubectl get pods -l. Die Option -l erfordert ein Argument – eine Markierungsspezifikation. Wenn Sie einen Alias verwenden, sieht er so aus kgpol app=ui.
Da einige Aliase Argumente erfordern, sollten die Aliase a, f und l zuletzt verwendet werden.
Im Allgemeinen, sobald Sie dieses Schema beherrschen, können Sie intuitiv Aliase aus den Befehlen ableiten, die Sie ausführen möchten, und viel Zeit beim Eingeben sparen.
Installation
Um kubectl-aliases zu installieren, müssen Sie die Datei von GitHub herunterladen und in die Datei ~/.bashrc oder ~/.zshrc:
source ~/.kubectl_aliasesAutomatische Vervollständigung
Wie bereits erwähnt, fügen Sie oft weitere Wörter zu einem Alias in der Befehlszeile hinzu. Zum Beispiel:
$ kgpooyaml test-pod-d4b77b989Wenn Sie die automatische Vervollständigung für den Befehl kubectl verwenden, haben Sie wahrscheinlich die automatische Vervollständigung für solche Dinge wie Ressourcennamen genutzt. Aber ist das auch möglich, wenn Aliase verwendet werden?
Das ist eine sehr wichtige Frage, denn wenn die automatische Vervollständigung nicht funktioniert, verlieren Sie einen Teil der Vorteile von Aliassen.
Die Antwort hängt davon ab, welche Shell Sie verwenden:
- Für Zsh funktioniert die automatische Vervollständigung für Aliase "out of the box".
- Für Bash sind leider einige Schritte erforderlich, um die automatische Vervollständigung zum Laufen zu bringen.
Aktivierung der automatischen Vervollständigung für Aliase in Bash
Das Problem mit Bash besteht darin, dass es versucht, einen Alias zu vervollständigen (immer wenn Sie Tab drücken) und nicht den Befehl, auf den sich der Alias bezieht (wie es Zsh tut). Da Sie keine Vervollständigungs-Skripte für alle 800 Aliase haben, funktioniert die automatische Vervollständigung nicht.
Projekt bietet eine allgemeine Lösung für dieses Problem. Es wird mit dem Vervollständigungsmechanismus für Aliase verbunden, vervollständigt den Alias intern zu dem Befehl und gibt die Vervollständigungsoptionen für den vervollständigten Befehl zurück. Das bedeutet, dass die Vervollständigung für den Alias genau so funktioniert wie für den vollständigen Befehl.
Ich werde zunächst erklären, wie man complete-alias installiert und dann, wie man es konfiguriert, um die Vervollständigung für alle Aliase von kubectl zu aktivieren.
Installation von complete-alias
Zunächst einmal hängt complete-alias von . Daher müssen Sie vor der Installation von complete-alias sicherstellen, dass bash-completion installiert ist. Die Installationsanweisungen wurden zuvor für Linux und MacOS gegeben.
Wichtiger Hinweis für MacOS-Benutzer: wie das Autocomplete-Skript für kubectl funktioniert, funktioniert complete-alias nicht mit Bash 3.2, das standardmäßig in MacOS verwendet wird. Insbesondere hängt complete-alias von bash-completion v2 ab,brew install bash-completion@2), das mindestens Bash 4.1 erfordert. Das bedeutet, dass Sie eine neuere Version von Bash installieren müssen, um complete-alias in MacOS verwenden zu können.
Sie müssen das Skript aus herunterladen und in Ihrer Datei aktivieren ~/.bashrc:
source ~/bash_completion.shNach dem Neustart der Shell ist complete-alias vollständig installiert.
Aktivierung der Autovervollständigung für kubectl-Aliasnamen
Technisch gesehen bietet complete-alias die Shell-Funktion _complete_alias. Diese Funktion überprüft den Alias und gibt Vorschläge für die Autofortsetzung des Alias-Befehls zurück.
Um die Funktion mit einem bestimmten Alias zu verknüpfen, müssen Sie den eingebauten Bash-Mechanismus , verwenden, um _complete_alias als Alias-Vervollständigungsfunktion festzulegen.
Nehmen wir als Beispiel den Alias k, der den Befehl kubectl bezeichnet. Um _complete_alias als Vervollständigungsfunktion für diesen Alias festzulegen, müssen Sie den folgenden Befehl ausführen:
$ complete -F _complete_alias k Das Ergebnis ist, dass immer wenn Sie den Alias k vervollständigen, die Funktion _complete_aliasaufgerufen wird, die den Alias überprüft und Vorschläge für den Befehl zurückgibt. kubectl.
Als zweites Beispiel nehmen wir den Alias kg, der bezeichnet $ kubectl get pods NAME READY STATUS RESTARTS AGE engine-544b6b6467-22qr6 1/1 Running 0 78d engine-544b6b6467-lw5t8 1/1 Running 0 78d engine-544b6b6467-tvgmg 1/1 Running 0 78d web-ui-6db964458-8pdw4 1/1 Running 0 78d:
$ complete -F _complete_alias kg Ähnlich wie im vorherigen Beispiel erhalten Sie beim Vervollständigen von kg die gleichen Vorschläge für die Vervollständigung, die Sie für $ kubectl get pods NAME READY STATUS RESTARTS AGE engine-544b6b6467-22qr6 1/1 Running 0 78d engine-544b6b6467-lw5t8 1/1 Running 0 78d engine-544b6b6467-tvgmg 1/1 Running 0 78d web-ui-6db964458-8pdw4 1/1 Running 0 78d.
erhalten würden. Beachten Sie, dass Sie complete-alias für jeden Alias in Ihrem System verwenden können.
Daher müssen Sie, um die Autovervollständigung für alle kubectl-Aliasnamen zu aktivieren, den oben genannten Befehl für jeden von ihnen ausführen. Der folgende Codeausschnitt tut genau das, vorausgesetzt Sie haben kubectl-aliases in ~/ .kubectl-aliases:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/ .kubectl_aliases);
do
complete -F _complete_alias "$_a"
done Dieser Codeausschnitt sollte in Ihre ~/.bashrc, geladen werden, um die Autovervollständigung für alle 800 kubectl-Aliasnamen zu aktivieren.
6. Erweiterung von kubectl durch Plugins
Beginnend mit , unterstützt kubectl , das es ermöglicht, seine Funktionen durch zusätzliche Befehle zu erweitern.
Wenn Sie mit sind kubectl-Plugins nach demselben Prinzip aufgebaut.
In diesem Kapitel erklären wir, wie man Plugins installiert, wo man sie findet und wie man eigene Plugins erstellt.
Installation von Plugins
Plugins für kubectl werden in Form von einfachen ausführbaren Dateien mit einem Namen des Formats kubectl-x. Das Präfix kubectl- ist obligatorisch, gefolgt von einem neuen Unterbefehl von kubectl, der es ermöglicht, das Plugin aufzurufen.
Zum Beispiel wird das Plugin hello in Form einer Datei mit dem Namen kubectl-hello.
Um ein Plugin zu installieren, muss die Datei kubectl-x in ein beliebiges Verzeichnis in Ihrer PATH-Variable kopiert und ausführbar gemacht werden, zum Beispiel mit chmod +x. Danach können Sie das Plugin mit kubectl x.
verwenden. Sie können den folgenden Befehl verwenden, um eine Liste aller Plugins anzuzeigen, die derzeit auf Ihrem System installiert sind:
$ kubectl plugin listDieser Befehl gibt auch Warnungen aus, wenn Sie mehrere Plugins mit denselben Namen haben oder wenn es eine Plugin-Datei gibt, die nicht ausführbar ist.
Suche und Installation von Plugins mit Krew
Kubectl-Plugins sind für die gemeinsame oder wiederholte Verwendung geeignet, ähnlich wie Softwarepakete. Aber wo kann man Plugins finden, die von anderen geteilt wurden?
hat das Ziel, eine einheitliche Lösung zum Teilen, Suchen, Installieren und Verwalten von kubectl-Plugins bereitzustellen. Das Projekt bezeichnet sich selbst als «Paketmanager für kubectl-Plugins» (Krew ist ähnlich wie ).
Krew ist eine Liste von kubectl-Plugins, die Sie auswählen und installieren können. Dabei ist Krew ebenfalls ein Plugin für kubectl.
Das bedeutet, dass die Installation von Krew mehr oder weniger wie die Installation eines anderen kubectl-Plugins funktioniert. Sie finden ausführliche Anleitungen auf .
Die wichtigsten Krew-Befehle:
# Поиск в списке плагинов
$ kubectl krew search [<query>]
# Посмотреть информацию о плагине
$ kubectl krew info <plugin>
# Установить плагин
$ kubectl krew install <plugin>
# Обновить все плагины до последней версии
$ kubectl krew upgrade
# Посмотреть все плагины, установленные через Krew
$ kubectl krew list
# Деинсталлировать плагин
$ kubectl krew remove <plugin>Bitte beachten Sie, dass die Installation von Plugins mit Krew die Installation von Plugins auf die oben beschriebene Standardweise nicht beeinträchtigt.
Bitte beachten Sie, dass der Befehl kubectl krew list nur die Plugins anzeigt, die mit Krew installiert wurden, während der Befehl kubectl plugin list alle Plugins auflistet, also die, die mit Krew installiert wurden, sowie die, die auf andere Weise installiert wurden.
Suche nach Plugins an anderen Orten
Krew ist ein junges Projekt, derzeit umfasst seiner etwa 30 Plugins. Wenn Sie nicht finden, was Sie brauchen, können Sie Plugins an anderer Stelle suchen, z.B. auf GitHub.
Ich empfehle, den Abschnitt auf GitHub anzusehen . Dort finden Sie mehrere Dutzend verfügbare Plugins, die es wert sind, angeschaut zu werden.
Eigene Plugins schreiben
Sie können selbst – das ist nicht schwierig. Sie müssen eine ausführbare Datei erstellen, die tut, was nötig ist, und sie benennen wie kubectl-x und sie installieren, wie oben beschrieben.
Die Datei kann ein Bash-Skript, ein Python-Skript oder eine kompilierte Go-Anwendung sein – das spielt keine Rolle. Die einzige Voraussetzung ist, dass sie direkt im Betriebssystem ausführbar ist.
Lassen Sie uns jetzt ein Beispiel-Plugin erstellen. Im vorherigen Abschnitt haben Sie den Befehl kubectl verwendet, um eine Liste der Container für jedes Pod anzuzeigen. Man kann diesen Befehl leicht in ein Plugin umwandeln, das man beispielsweise mit kubectl img.
eine Datei erstellen kubectl-img des folgenden Inhalts:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' Machen Sie die Datei jetzt ausführbar mittels chmod +x kubectl-img und verschieben Sie sie in ein Verzeichnis in Ihrem PATH. Direkt danach können Sie das Plugin verwenden kubectl img.
Wie bereits erwähnt, können kubectl-Plugins in jeder Programmiersprache oder Skriptsprache geschrieben werden. Wenn Sie Skripte verwenden, haben Sie den Vorteil, dass Sie kubectl leicht aus dem Plugin aufrufen können. Sie können jedoch auch komplexere Plugins in echten Programmiersprachen schreiben, indem Sie verwenden. Wenn Sie Go verwenden, können Sie auch , die speziell zum Schreiben von kubectl-Plugins verwendet wird.
Wie man seine Plugins teilt
Wenn Sie denken, dass Ihre Plugins für andere nützlich sein könnten, zögern Sie nicht, sie auf GitHub zu teilen. Fügen Sie sie unbedingt in das Thema ein .
Sie können auch um die Aufnahme Ihres Plugins in bitten. Anleitungen, wie dies funktioniert, finden Sie in .
Automatische Vervollständigung von Befehlen
Derzeit unterstützen Plugins keine automatische Vervollständigung. Das bedeutet, dass Sie den vollständigen Namen des Plugins und die vollständigen Namen der Argumente eingeben müssen.
Im GitHub-Repository von kubectl gibt es einen . Daher ist es möglich, dass diese Funktion irgendwann in der Zukunft implementiert wird.
Viel Glück!!!
Was gibt es noch zu lesen:
- .
- .
- .
Quelle: habr.com







