K8s - kubectl

Angelegt Donnerstag 15 Februar 2018

kubectl ist das Basis-CLI-Tool für das Management von Kubernetes

Overview kubectl CLI : https://kubernetes.io/docs/reference/kubectl/overview/
Kommandosammlung : https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
Kommandosammlung : https://kubernetes-v1-4.github.io/docs/user-guide/kubectl-overview/
Configure Access to Multiple Clusters : https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
Kubectl Autocomplete : https://kubernetes.io/docs/reference/kubectl/cheatsheet/
kubectl Resource Short-names : https://blog.heptio.com/kubectl-resource-short-names-heptioprotip-c8eff9fb7202

Installation: Install and Set Up kubectl : https://kubernetes.io/docs/tasks/tools/install-kubectl/
$ sudo snap install kubectl --classic

Files
~/.kube/config : Konfigurationsfile (Gute Erklärung Multi-K8s: https://imti.co/kubectl-remote-context/)
$ export KUBECONFIG=$HOME/.kube/config1:$HOME/.kube/config2 : Pfadvariable setzen (https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/).

kubectl - Konfiguration + Status
$ source <(kubectl completion bash) : Autovervollständigung einschalten (https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion)
$ alias k=kubectl / source <(kubectl completion bash | sed s/kubectl/k/g) : Autovervollständigung mit Alias k. (In ~/.bashrc.)
$ kubectl version : Version des Clusters (Version kubectl-Client + Version Kubernetes API-Server)
$ kubectl config view --flatten : Anzeigen der Konfigurationsinformation inklusive der Credentials.
$ kubectl get componentstatus : Status von wichtigen Kubernetes-Komonenten.
$ kubectl get nodes : Status + Infos zu den Knoten.
$ kubectl describe nodes k8s-w01-netlab : Ausführliche Infos über den angegebenen Worker-Knoten
$ journalctl -xeu kubelet : Log im Fehlerfall

kubectl - Nodes
$ kubectl get nodes : Status + Infos zu den Knoten.
$ kubectl drain nodename

kubectl - Kontextmanagement
$ kubectl config get-contexts : Zeigt die vorhandene Kontexte und markiert den aktuellen Kontext.
$ kubectl config use-context minikube : Wechselt in den Kontext minikube.
$ kubectl config set-context testen --namespace=xyz : Neuen Kontext testen mit dem Namensraum xyz erzeugen. (Auch --user= und --cluster= setzen!)
$ kubectl config delete-context testen : Neuen Kontext testen wieder löschen.

kubectl - Aktueller Cluster / Namespaces
$ kubectl cluster-info : Zeigt IP des aktiven Masters und weitere Info.
$ kubectl get namespaces : Vorhandene Namespaces im aktuellen Kontext anzeigen.
$ kubectl create namespaces develop : Namespace develop erzeugen.
$ kubectl get pods --namespace=xyz : Befehl im Namespace xyz ausführen.

Port-Weiterleitung
$ port-forward whoami-pod 7777:8080 : Den Pod whoami-pod an localhost:7777 verfügbar machen.

kubectl - Informationen
$ kubectl get nodes : Vorhandene Knoten anzeigen
$ kubectl describe nodes k8-w01-netlab : Ausführliche Infos über den angegebenen Knoten
$ kubectl get deployments : Deployments listen (nur im Namespace default)
$ kubectl get deployments --namespace=kube-system : Deployments im angegeben Namespace listen.
$ kubectl get daemonSets --namespace=kube-system : Dämons im angegeben Namespace listen.
$ kubectl get services --namespace=kube-system : Services im angegeben Namespace listen.
$ kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName : Pods mit den Knoten, auf denen sie laufen.

kubectl - API-Objekte
$ kubectl describe pod whoami : Informationsbeschreibung des genannten Objekts in lesbarer Form
$ kubectl get pod bikeapp-556756bfb8-7hlsd -o json : Objektdefinition in JSON
$ kubectl get pod bikeapp-556756bfb8-7hlsd -o yaml : Objektdefinition in YAML
$ kubectl get pod bikeapp-556756bfb8-7hlsd -o jsonpath --template={.status.podIP} :

Extraktion der IP-Adresse aus der pod-Beschreibung über den JSONPath.
$ kubectl get pods bikeapp-556756bfb8-7hlsd -o=jsonpath="{.status.podIP}" :
Extraktion der IP-Adresse aus der pod-Beschreibung über den JSONPath.
$ kubectl edit pod bikeapp-556756bfb8-7hlsd : Angebene Ressource direkt in VIM editieren.
$ kubectl logs bikeapp-556756bfb8-7hlsd : Logs des angegebenen Objekts ausgeben.
$ kubectl create -f nginx.yaml : Das Objekt aus der Datei nginx.yaml erzeugen
$ kubectl apply -f nginx.yaml : Die Änderung aus nginx.yaml auf das darin angegebene Objekt anwenden.

kubectl - laufende Pods
$ kubectl run myinst ---image=myimg : Startet eine Instanz myinst des Container-Images myimg. (doc)
$ kubectl port-forward mypod 8085:8080 : Sicherer Tunnel von http://127.0.0.1:8085 zu mypod an Port 8080.
$ kubectl logs mypod -f : Laufend (-f) Log-Information von mypod erhalten.
$ kubectl exec -it mypod /bin/sh : Interaktive Shell im ersten Container des Pods ausführen (doc, gitdoc).
$ kubectl cp ./datei.txt mypod:/home/ : Die Datei datei.txt in cenersten Container von mypod kopieren (doc).



Backlinks:
3 Networked Infrastruktur