Vier einfache Kubernetes-Terminaleinstellungen zur Verbesserung Ihrer Produktivität



Ich habe über drei Jahre lang den Betrieb großer Kubernetes-Cluster verwaltet und möchte meinen minimalistischen Ansatz bei der Einrichtung des Kubectl-Terminals teilen, das sich im Arbeitsalltag als äußerst effektiv erwiesen hat. Ein gut konfiguriertes Befehlszeilenterminal kann Ihre Produktivität erheblich steigern. Es ist wie Brot und Butter - eine magische Kombination.



Im Gegensatz zu gängigen Modifikationen und funktionalen Ergänzungen glaube ich jedoch an eine einfache Konfiguration, bei der keine neuen Binärdateien, Wrapper oder Modifikationen installiert werden müssen. Besonders im Fall von kubectl - einem nativen, einigermaßen gut gestalteten Werkzeug mit sehr wenigen Nachteilen.



Hier sind vier einfache Add-Ons zum Kubectl-Terminal. Mit dieser Konfiguration verwalte ich täglich 20 große Kubernetes-Cluster mit 400 Computern.



Verwenden von Kubetail zum Verfolgen von Protokollen mehrerer Pods



Das erste, was Sie bei der Verwendung von kubectl bemerken, ist die Schwierigkeit, Protokolle über mehrere Pods hinweg zu verfolgen. Dies ist eines der am häufigsten nachgefragten Szenarien, das in kubectl noch nicht implementiert wurde.



Wenn Sie das Protokoll eines einzelnen Pods in kubectl verfolgen müssen, sieht es folgendermaßen aus:



kubectl logs -f <POD_NAME> -n <NAMESPACE>


Um mehrere Pods in Kubetail zu verfolgen, schreiben Sie einfach:



kubetail <POD_NAME_REGEX> -n <NAMESPACE>


Sie beginnen mit der Verfolgung aller Pods, die dem regulären Ausdruck entsprechen. Da mehrere Pods gleichzeitig protokolliert werden, kennzeichnet kubetail sie in verschiedenen Farben, um Ihnen die Navigation zu erleichtern.





kubetail ist eine einfache Hülle über kubectl. Es ist einfach zu installieren, Anweisungen finden Sie hier .



2. Dynamisches Ändern des Standard-Namespace



Irgendwann werden Sie es leid sein, das Namespace-Flag für jede Kubectl-Operation immer wieder zu setzen. Wir müssen herausfinden, wie die Standard-Namespaces dynamisch geändert werden können.



Zu diesem Zweck habe ich eine einfache Alias-Funktion geschrieben ksn(der Name impliziert einen festgelegten Namespace ).



# Add the following to .zshrc/.bashrc...etc
# Allows setting default namespace while working with kubectl #

alias k='kubectl'
alias ksn='_f(){k get namespace $1 > /dev/null; if [ $? -eq 1 ]; then return $?; fi;  k config set-context $(k config current-context) --namespace=$1; echo "Namespace: $1"};_f'

#Usage:
#➜  ~ ksn dev1                                                       (dev-context/dev1)
#     Context "dev-context" modified.
#     Namespace: dev1

#➜  ~ ksn ff                                                         (dev-context/dev1)
#     Error from server (NotFound): namespaces "ff" not found






Normalerweise arbeiten wir mit einer Reihe von Namespaces, abhängig von der aktuellen Aufgabe. Und da 80% der Probleme mit Kafka-Namespaces zusammenhängen, ist diese Funktion seit langem mein Standardwerkzeug. Dies spart Ihnen viel Zeit, insbesondere bei der Arbeit an komplexen Aufgaben, bei denen viele Anweisungen in kubectl eingegeben werden müssen.



3. Anzeigen des Kube-Kontexts und des Namespace in der Shell-Eingabeaufforderung



Wenn Sie kubectl-Befehle verwenden, sollten Sie immer auf die aktuellen kube-contextund achten namespace. Es ist nicht so einfach, wenn Sie Cluster in 20 verschiedenen Kontexten und 50 Namespaces gleichzeitig verwalten. Es besteht die Gefahr, dass in der Umgebung der falsche Befehl verwendet wird, insbesondere wenn mehrere Aufgaben gleichzeitig in verschiedenen Clustern und Kontexten bearbeitet werden.



Um dieses Problem zu lösen, ist es äußerst nützlich, den aktiven Namespace und den Kontext im nächsten Fenster ständig anzuzeigen.



Im folgenden Beispiel ist mein Kontext dev2–1und der Namespace test. Es reicht mir, diese Informationen nur anzusehen, wenn ich verschiedene Befehle im Cluster ausführe.





Installations- und Konfigurationsanweisungen finden Sie hier .



4. Die wichtigsten Kubectl-Aliase



Aliase sind der schnellste Weg, um Ihre Arbeit im Terminal anzupassen und zu beschleunigen. Hier sind meine am häufigsten verwendeten Aliase, die fast zu einem Teil meiner Natur geworden sind:



alias k='kubectl '
alias kcc='kubectl config current-context'
alias kdp='kubectl delete po'
alias kgc='kubectl config get-contexts'
alias kge='kubectl get events --sort-by='\''{.lastTimestamp}'\'
alias kgp='kubectl get po'
alias kl='kubectl logs '
alias kpf='kubectl port-forward'
alias ksc='kubectl config use-context'


Weniger ist besser: Überlasten Sie Ihr Terminal nicht



Wir haben vier wichtige Terminalverbesserungen für Kubectl-Benutzer behandelt:



  1. Verwenden von Kubetail zum Verfolgen von Protokollen mehrerer Pods.
  2. Dynamisches Ändern der Standard-Namespaces, um die Länge von Kubectl-Anweisungen erheblich zu reduzieren.
  3. Anzeigen von Kontext und Namespaces neben Ihrem Terminal, um versehentliche Fehler zu vermeiden.
  4. Liste wichtiger Kubectl-Aliase.


Im Gegensatz zu diesem minimalistischen Set sind beliebte Terminal-Upgrades (wie die K9 ) oft überfordert, voller Funktionen und Bonbonpapier, aber sie sind langsam, ablenkend und vor allem unnötig. Je mehr Funktionen (Glitzer und Bögen) Sie hinzufügen, desto länger dauert es, bis Sie alle zusätzlichen Informationen auf dem Bildschirm durchgesehen haben.



Die elegante Terminalkonfiguration hilft Ihnen, konzentriert zu bleiben wie nichts anderes.



Durch die einfache befehlszeilenbasierte Konfiguration können Sie mithilfe nativer Binärdateien und Tools schnell und effizient entwickeln. Dies ist sehr wichtig, insbesondere wenn Sie mit einer großen Infrastruktur arbeiten und sich auf virtuellen Maschinen bei verschiedenen Profilen an- und abmelden.



Ihre Terminalkonfiguration sollte Sie als Entwickler bereichern und Ihnen nicht das Gefühl geben, ohne Hände zu sein.



All Articles