K8s - kubectl
Angelegt Donnerstag 15 Februar 2018
kubectl ist das Basis-CLI-Tool für das Management von Kubernetes
Dokumentation: 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/
Files
~/.kube/config : Konfigurationsfile
kubectl - Konfiguration + Status
$ source <(kubectl completion bash) : Autovervollständigung einschalten (https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion)
$ 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 k8-w01-netlab : Ausführliche Infos über den angegebenen Worker-Knoten
kubectl - Kontextmanagement
$ kubectl cluster-info : Zeigt IP des aktiven Masters und weitere Info.
$ kubectl config get-contexts : Zeigt die vorhandene Kontexte und markiert den aktuellen Kontext.
$ kubectl config use-context minkube : Wechselt in den Kontext minikube.
$ 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.
$ kubectl config set-context testen --namespace=xyz : Neuen Kontext testen mit dem Namensraum xyz erzeugen. (Auch --user= und --cluster= setzen!)
$ kubectl config use-context testen : Neuen Kontext testen verwenden.
$ kubectl config delete-context testen : Neuen Kontext testen wieder löschen.
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 - API-Objekte
$ kubectl describe pod bikeapp : 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} :
$ 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).
Baustelle
https://www.stratoscale.com/blog/kubernetes/kubernetes-exposing-pods-service/
$ kubectl expose deployment myapp --type=NodePort
Pod starten
Hello World Beispiel: https://kubernetes.io/docs/tutorials/stateless-application/expose-external-ip-address/
Echoserver: https://www.stratoscale.com/blog/kubernetes/kubernetes-exposing-pods-service/
Backlinks: 3 Docker & Co.