nützliche Kommandos
Eine weitere Sammlung an Befehls-Sätzen und -Sequenzen zur Arbeit mit Kubernetes Deployments und deren Wartung.
Alle Deployments durchstarten
## als Einzeiler
# StatefulSets
for _ns in $(kubectl get ns -o name);do for _depl in $(kubectl get -n ${_ns##*/} statefulset -o name);do kubectl rollout -n ${_ns##*/} restart $_depl ;done;done
# Deployments
for _ns in $(kubectl get ns -o name);do for _depl in $(kubectl get -n ${_ns##*/} deployment -o name);do kubectl rollout -n ${_ns##*/} restart $_depl ;done;done
# DaemonSets
for _ns in $(kubectl get ns -o name);do for _depl in $(kubectl get -n ${_ns##*/} daemonset -o name);do kubectl rollout -n ${_ns##*/} restart $_depl ;done;done
... lesbarer (für ein Skript):
for _dtype in statefulset deployment daemonset
do
for _ns in $(kubectl get ns -o name)
do
for _depl in $(kubectl get -n ${_ns##*/} $_dtype -o name)
do
kubectl rollout -n ${_ns##*/} restart $_depl
done
done
done
Secrets auslesen
kubectl get [-n <Namespace>] secrets <Secret-Name> -o jsonpath='{.data.<Key>}' | base64 -d
# Beispiel einer Docker-Config:
kubectl get secrets myregauth -o jsonpath='{.data.\.dockerconfigjson}' | base64 -d
Auslastung der Nodes
oder für Pods
Auflisten von Pods
Alle Pods auf einem Node:
Alle Pods nicht auf benannten Nodes:
# Beispiel der Ausklammerung mehrerer Nodes
kubectl get -A pods -o wide --field-selector spec.nodeName!=<Node-Name 1>,spec.nodeName!=<Node-Name 2>
Alle Pods ohne System-Namespaces:
kubectl get -A pods -o wide --field-selector metadata.namespace!=kube-system,metadata.namespace!=longhorn-system,metadata.namespace!=traefik-system
# oder einfach alle Pods, die nicht im Kube-System oder default Namespace sind:
kubectl get -A pods -o wide --field-selector metadata.namespace!=kube-system,metadata.namespace!=default
Alle nicht laufende Pods ermitteln:
Labels behandeln
generell:
# erstellen
kubectl label -n <Namespace> <Ressource-Type> <Ressource-Name> <Label-Name>='<Label-Value>'
# ändern
kubectl label -n <Namespace> --overwrite <Ressource-Type> <Ressource-Name> <Label-Name>='<Label-Value>'
# entfernen
kubectl label -n <Namespace> <Ressource-Type> <Ressource-Name> <Label-Name>-
alternativ mit Patching:
# erstellen oder ändern
kubectl path -n <Namespace> <Ressource-Type> <Ressource-Name> -p '{"metadata":{"labels":{"Label-Name":"Label-Value"}}}'
# entfernen
kubectl path -n <Namespace> <Ressource-Type> <Ressource-Name> -p '{"metadata":{"labels":{"Label-Name":null}}}'