Blogs
Kubernetes Spickzettel
Kubernetes-Objekte
Knotenpunkt
Alle Knoten des Clusters auflisten
kubectl get nodes
Löschen eines Knotens aus dem Cluster
kubectl delete node <node name>
Anzeigen der Metriken eines Knotens
kubectl top node <node name>
Einen Knoten im Detail beschreiben
kubectl describe node <node name>
Auflistung aller Pods in einem Namespace, mit weiteren Details
kubectl get node -o wide ¬-n <namespace>
Hinzufügen einer Bemerkung zu einem Knoten
kubectl annotate node <node name>
Hinzufügen einer Beschriftung zu einem bestimmten Knoten
kubectl label node <node name> type=label
Knotenbeschriftungen anzeigen
kubectl get nodes --show-labels
Informationen über einen Knoten im yaml-Format anzeigen
kubectl get node <node name> -o yaml
Informationen über einen Knoten mit dem angegebenen Label anzeigen
kubectl get node --selector=<label>
Pod
Auflisten aller Pods in einem Namespace
kubectl get pod -n <namespace>
Pods mit weiteren Details auflisten
kubectl get pods -o wide
Zeigen Sie die detaillierte Beschreibung des Pods
kubectl describe pod <pod name>
Löschen eines Pods mit einer Datei, die ihn beschreibt
kubectl delete -f pod.yaml
Erstellen eines Pods in einem bestimmten Namespace
kubectl create pod <pod name> -n <namespace>
Erstellen eines Pods aus einem Bild
kubectl run <pod name> --image=<image name>
Protokolle eines Pods anzeigen
kubectl logs <pod name> -n <namespace>
Ausführen eines Befehls in einem Pod und Anzeigen eines interaktiven Terminals
kubectl exec -it <pod name> -- <command>
Auflisten aller laufenden Pods in einem Namespace
kubectl get pods --field-selector=status.phase=Running
Live-Überwachung des Zustands eines Pods
kubectl get pod <pod name> --watch
Live-Überwachung des Zustands aller Pods
kubectl get pod -A --watch
Alle Pods im json-Format anzeigen
kubectl get pods -o json
Alle Pods in allen Namespaces auflisten
kubectl get pods --all-namespaces
Alle Pods in allen Namespaces auflisten
kubectl get pods -A
Metriken für einen bestimmten Pod anzeigen
kubectl top pod <pod name>
Metriken für einen bestimmten Pod und alle seine Container anzeigen
kubectl top pod <pod name> --containers
Ansicht der Containerprotokolle eines Pods (wenn er mehr als einen Container hat)
kubectl logs <pod name> -c <container name>
Abrufen der Dokumentation für das Pod-Manifest
kubectl explain pod
Pods mit Etiketten auflisten
kubectl get pods --show-labels
kubectl mit einer anderen kubeconfig
kubectl --kubeconfig=<path to config file> get pods
Abrufen des initContainer-Status eines Pods
kubectl get pod --template '{{.status.initContainerStatuses}}' <pod name>
Drucken einer nach Namen sortierten Liste von Pods
kubectl get pods --sort-by=.metadata.name
Einsatz
Erstellen Sie eine neue Bereitstellung
kubectl create deployment <deployment name> --image=<image>
Erstellen einer neuen Bereitstellung aus einer Manifestdatei
kubectl apply -f <deployment manifest>
Einsätze auflisten
kubectl get deployment <deployment name>
Einen bestimmten Einsatz beobachten
kubectl get deployment <deployment name> --watch
Alle Einsätze auflisten
kubectl get deployment -A
Anzeige des detaillierten Status eines Einsatzes
kubectl describe deployment <deployment name>
Löschen einer Bereitstellung
kubectl delete deployment <deployment name>
Rolling Update nginx der Bereitstellung
kubectl set image deployment/<deployment name> <container name>=<image>
Skalieren einer Bereitstellung auf 10 Instanzen
kubectl scale --replicas=10 deployment/<deployment name>
Automatische Skalierung eines Einsatzes, um eine CPU-Auslastung von 80 % zu erreichen, mit der Einschränkung, zwischen 10-15 Instanzen zu bleiben
kubectl autoscale deployment/<deployment name> --min=10 --max=15 --cpu-percent=80
Rückgängig machen der vorherigen Revision
kubectl rollout undo deployment/<deployment name>
Rückgängig machen einer bestimmten Revision
kubectl rollout undo deployment/<deployment name> --to-revision=<revision name>
Überprüfen des Rollout-Status einer Bereitstellung
kubectl rollout status deployment/<deployment name>
Anzeigen des Revisionsverlaufs einer Bereitstellung
kubectl rollout history deployment/<deployment name>
Live-Bearbeitung einer Bereitstellung
kubectl edit deployment/<deployment name>
Portweiterleitung eines Einsatzes an einen bestimmten Port
kubectl port-forward deployment/<pod name> <localhost port>:<pod port>
DeamonSets
Alle Daemon-Sets in einem Namespace auflisten
kubectl get daemonset --namespace <namespace>
Alle Daemon-Sets in allen Namespaces auflisten
kubectl get daemonset --all-namespaces
Detaillierte Informationen über einen Daemonset im yaml-Format
kubectl get daemonset <daemonset name> --namespace <namespace> -o yaml
Detailed information about a daemon set in yaml format
kubectl describe daemonset <daemonset name> --namespace <namespace>
Konfigmaps
Configmap aus einer Datei erstellen
kubectl create configmap <configmap name> --from-file <configmap manifest>
Mehr Details über eine bestimmte Configmap erhalten
kubectl describe configmap <configmap name>
Auflistung aller Configmaps in einem Namespace
kubectl get configmap --namespace <namespace>
Spezifische configmap im yaml-Format abrufen
kubectl get configmap <configmap name> -o yaml
Alle configmaps in allen Namespaces im yaml-Format auflisten
kubectl get configmap --all-namespaces -o yaml
Dienstleistungen
Auflistung aller Dienste in einem Namespace
kubectl get services --namespace <namespace>
Auflistung der Dienste in einem Namespace mit zusätzlichen Informationen
kubcetl get service --namespace <namespace> -o wide
Detaillierte Informationen zu einem Dienst anzeigen
kubectl describe service <service name>
Einen bestimmten Dienst löschen
kubectl delete service <service name>
Abrufen der Dokumentation für Dienstmanifeste
kubectl explain service
Portweiterleitung eines Dienstes
kubectl port-forward service/<service name> <localhost port>:<service-port>
Erstellt einen Dienst des Typs nodeport mit einer Zuordnung von post 8080 zu 80
kubectl create service nodeport <service name> --tcp=8080:80
Dienste mit ihren Bezeichnungen auflisten
kubect l get service --show-labels
Beschreiben Sie einen Dienst im yaml-Format
kubect l get service <service name> -o yaml
Dienstleistungskonto
Servicekonten auflisten
kubectl get serviceaccounts
Detaillierter Status eines Dienstkontos
kubectl describe serviceaccount <serviceaccount name>
Ersetzen eines Dienstkontos
kubectl replace serviceaccount <serviceaccount name>
Löschen eines Dienstkontos
kubectl delete serviceaccount <serviceaccount name>
Ein Dienstkonto live bearbeiten
kubectl edit serviceaccount <serviceaccount name>
Geheimnisse
kubectl describe secret/<secret name>
Alle Geheimnisse in einem Namespace anzeigen
kubectl get secrets -n <namespace>
Beschreiben Sie ein Geheimnis ausführlicher
kubectl describe secret/<secret name>
Geheimnisse in allen Namensräumen auflisten
kubectl get secrets --all-namespaces
Geheimnis im yaml-Format auflisten
kubectl get secret <secret name> -o yaml
Rollen
Alle Rollen im Cluster auflisten
kubectl get roles --all-namespaces
Alle Clusterrollen auflisten
kubectl get clusterroles
Auflistung aller Rollenbindungen und Clusterrolebindungs im Cluster
kubectl get (cluster)rolebinding --all-namespaces
Erstellen Sie die Rolle „pod-reader“, die Pods auflisten und ansehen kann
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
Namespace
Einen Namensraum erstellen
kubectl create namespace <namespace name>
Alle Namespaces in einem Cluster auflisten
kubectl get namespaces
Abrufen einer Namespace-Beschreibung im yaml-Format
kubectl get namespace <namespace name> -o yaml
Anzeige des detaillierten Status eines Namensraums
kubectl describe namespace <namespace name>
Einen Namensraum löschen
kubectl delete namespace <namespace name>
Bearbeiten und Aktualisieren der Definition eines Namensraums
kubectl edit namespace <namespace name>
Einen Namespace mit einer yaml-Datei erstellen
kubectl create -f namespace.yaml Create a namespace using a yaml file
Replicasets
Auflistung aller Replicasets im aktuellen Namensraum
kubectl get replicasets
Detaillierte Beschreibung eines Replicasets
kubectl describe replicaset <replicaset name>
ReplicaSets mit weiteren Informationen auflisten
kubectl get replicaset -o wide
ReplicaSet im yaml-Format auflisten
kubectl get replicaset <replicaset name> -o yaml
Abrufen der Dokumentation für das ReplicaSet-Manifest
kubectl explain replicaset
Auflisten aller persistenten Datenträger in einem Namensraum
kubectl get persistantvolume -n <namespace>
Beschreiben Sie ein persistentes Volumen
kubectl describe persistantvolume <persistantvolume name>
Löschen eines persistenten Datenträgers
kubectl delete persistantvolume < persistantvolume name>
Auflistung der Speicherklassen im yaml Format
kubectl get storageclass –o yaml
PersistentVolume Anspruch
Auflistung aller Ansprüche auf persistente Datenträger in einem Namensraum
kubectl get persistentvolumeclaim <persistentvolumeclaim name>
Beschreiben Sie einen dauerhaften Volumenanspruch
kubectl describe persistentvolumeclaim <persistentvolumeclaim name>
Löschen eines persistenten Volume-Anspruchs
kubectl delete persistentvolumeclaim <persistentvolumeclaim name>
Eingangsressource auflisten
kubectl get ingress
Ingress-Ressourcen in allen Namensräumen auflisten
kubectl get ingress --all-namespaces
Abrufen von Informationen über das Ingress-Objekt
kubectl explain ingress
Abrufen von Informationen über einen Zutritt
kubectl describe ingress <ingress name>
Auflistung aller Ingress-Objekte mit ihren entsprechenden Diensten
kubectl get ingress -o=custom-columns='NAME:.metadata.name,SVCs:..service.name'
Etiketten
Liste der zugewiesenen Etiketten auf dem Knoten
kubectl get nodes --show-labels
Liste der zugewiesenen Etiketten auf den Pods
kubectl get pods --show-labels
Beschriftung zum Knoten hinzufügen
kubectl label nodes <node name> <label>
Kennzeichnung von einem Knoten entfernen, gleicher Befehl, aber mit einem Minus nach dem Namen der Kennzeichnung
kubectl label node <node name> <label>-
Setzen Sie den Status und den Wert des Etiketts auf den Pod und überschreiben Sie alle vorhandenen Werte.
kubectl label --overwrite pods <pod name> status=unhealthy
Veranstaltungen
Alle Ereignisse im Cluster anzeigen
kubectl get events --all-namespaces
Ereignisse im json-Format auflisten
kubectl get events -o json
Ereignisse aus einem Pod abrufen
kubectl get events | grep <pod name>
Dies zeigt auch Ereignisse
kubectl describe pod <pod name>
Liste der Ereignisse sortiert nach Zeitstempel
kubectl get events --sort-by=.metadata.creationTimestamp
Alle Warnereignisse auflisten
kubectl events --types=Warning
API-Ressourcen
Aufzählung der verfügbaren Ressourcentypen
kubectl api-resources
Liste api-Gruppe
kubectl api-versions
Alle Ressourcen mit Namensraum
kubectl api-resources --namespaced=true
Alle Ressourcen ohne Namensraum
kubectl api-resources --namespaced=false
Alle CRDs auflisten
kubectl get crd
Speicherklassen auflisten
kubectl get storageclass
Auflistung des Gesundheitszustands der Komponenten
kubectl get componentstatuses
Themen
Logs & Conf-Dateien
Config folder
/etc/kubernetes/
Zertifikat-Dateien
/etc/kubernetes/pki/
Anmeldeinformationen für den API-Server
/etc/kubernetes/kubelet.conf
Superuser-Anmeldeinformationen
/etc/kubernetes/admin.conf
kubectl-Konfigurationsdatei
~/.kube/config
Kubernets Arbeitsverzeichnis
/var/lib/kubelet/
Docker-Arbeitsverzeichnis
/var/lib/docker/, /var/log/containers/
Etcd Arbeitsverzeichnis
/var/lib/etcd/
Netzwerk cni
/etc/cni/net.d/
Log-Dateien
/var/log/pods/
Anmeldung am Arbeitsknoten
/var/log/kubelet.log, /var/log/kube-proxy.log
Anmeldung am Master-Knoten
kube-apiserver.log, kube-scheduler.log, kube-controller-manager.log
Kontingente und Höchstmengen
Liste Ressourcenkontingent
kubectl get resourcequota
Liste Grenzwertbereich
kubectl get limitrange
Anpassen des Ressourcenlimits eines Pods für CPU
kubectl set resources deployment nginx -c=nginx --limits=cpu=200m
Anpassen des Ressourcenlimits eines Pods für Speicher
kubectl set resources deployment nginx -c=nginx --limits=memory=512Mi
Anmerkungen & Färbungen
Anmerkungen zum Einsatz abrufen
kubectl describe deployment/<deployment name> | grep Annotations
Anmerkungen aktualisieren
kubectl annotate pods <pod name> <key>=<value>
Überschreibungsanmerkung einer Ressource
kubectl annotate --overwrite <resource type> <resource name> <key>=<value>
Aktualisieren der Taints eines Knotens
kubectl taint <node name> <taint name>
Gemeinsame Metrik-Befehle
Metriken für einen bestimmten Knoten anzeigen
kubectl top node <node name>
Metriken für einen bestimmten Pod anzeigen
kubectl top pod <pod name>
Metriken für einen bestimmten Pod und alle seine Container anzeigen
kubectl top pod <pod name> --containers
Gemeinsame Log-Befehle
Protokolle eines Pods prüfen
kubectl logs <pod name> --namespace <namespace>
Containerstämme in einem Pod (falls mehr als einer)
kubectl logs <pod name> <container name>
Logs von allen Containern eines Pods
kubectl logs <pod name> --all-containers
Protokolle der letzten Stunde abrufen
kubectl logs --since=1h <pod name>
Die letzten 20 Zeilen der Protokolle anzeigen
kubectl logs --tail=20 <pod name>
Speichern der Protokolle in einer Datei
kubectl logs <pod name> <file name>
Protokolle nach Bezeichnung gefiltert abrufen
kubectl logs -l <label key>=<label value> --all-containers
Protokolle der Bereitstellung abrufen
kubectl logs deployment/<deployment name>
Protokolle vom Auftrag abrufen
kubectl logs job/<job name>
Protokolle in eine Datei exportieren
kubectl logs <pod name> > <file name>
Sicherheit
Liste Netzpolitik
kubectl get networkpolicy
Liste der Zertifikate
kubectl get certificate
kubeconfig-Einstellungen anzeigen
kubectl config view
Eine Liste von Kontexten erhalten
kubectl config get-contexts
Aktuellen Kontext anzeigen
kubectl config current-context
Standardkontext auf <cluter name> setzen
kubectl config use-context <cluster name>
Namespace-Feld für Kontext festlegen
kubectl config set-context <context name> --namespace=<namespace>
Clusterfeld für Kontext setzen
kubectl config set-context <context name> --cluster=<cluster name>
Benutzerfeld für Kontext einstellen
kubectl config set-context <context name> --user=<username>
Instandhaltung
Markieren Sie den genannten Knoten als nicht planbar
kubectl cordon <node name>
Den benannten Knoten als planbar markieren
kubectl uncordon <node name>
Entleeren des Knotens als Vorbereitung für die Wartung
kubectl drain <node name>
Dadurch erhalten Sie die Pod-CIDR-Adressen für jeden der Knoten in Ihrem Cluster.
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'
Löschen einer Ressource, die einem Label entspricht
kubectl delete <resource type> -l <label key>=<label value>
Adressen von Master / Diensten anzeigen
kubectl cluster-info
Detaillierte Informationen über den Zustand des Clusters an stout
kubectl cluster-info dump
Dies zeigt die CIDR des Pod-Netzwerks an, die von kube-proxy verwendet wird
kubectl cluster-info dump | grep -m 1 cluster-cidr
Aktuellen Zustand des Clusters in eine angegebene Datei ausgeben
kubectl cluster-info dump --output-directory=/path/clusterinfo.txt
So erhalten Sie alle Objekte Ihres Clusters
kubectl get all --all-namespaces
Auflistung von Diensten, Pods, Knoten, Bereitstellungen und Replicasets
kubectl get svc, po, no, deploy, rs
yaml in eine Datei ausgeben, Vorlage erstellen
kubectl run <pod name> --image=nginx --dry-run=client -o yaml > pod1.yaml
Nachtrag: Docker
Installation unter Linux
Docker im Linux-Terminal installieren
curl -sSL https://get.docker.com/ | sh
Installieren Sie add. utils für Docker (auf RedHat-Systemen)
sudo yum install -y yum-utils
Docker installieren
sudo yum install docker-ce docker-ce-cli containerd.io
Docker-Engine starten
sudo systemctl start docker
Status des Docker überprüfen
systemctl status docker
Informationen über die Docker-Installation abrufen
docker info
Verwaltung von Containern
Einen Container erstellen
docker create <image name>
Erstellen Sie einen Container und starten Sie ihn
docker run <image name>
Starten des angegebenen Containers
docker start <container name>
Anhalten des angegebenen Containers (graceful)
docker stop <container name>
Neustart (Stopp + Start) des angegebenen Containers
docker restart <container name>
ötet den angegebenen Container (SIGKILL)
docker kill <container name>
Anhalten des angegebenen Containers
docker pause <container name>
Fortsetzen des angegebenen Containers
docker unpause <container name>
Entfernen Sie den Behälter
docker rm <container name>
Erzwingen des Entfernens des laufenden Containers
docker rm -f <container name>
Echtzeit-Ereignisse aus dem angegebenen Container
docker events <container-name>
Bildverwaltung:
Docker-Images auf dem lokalen Rechner anzeigen
docker images
Laufenden Container prüfen
docker ps
Prüfen Sie alle Container (laufende und gestoppte)
docker ps -a
Den angegebenen Container im Hintergrund ausführen
docker run -d <container name>
Löschen Sie den Container mit der ID
docker rm <container id>
Bildverlauf anzeigen
docker history <image id>
Ein Bild markieren
docker tag <source image> <target image>
Ein Bild löschen
docker rmi <image name>
Abrufen von Low-Level-Informationen
docker inspect <image name>
Images
Ein Image aus einer Registry ziehen
docker pull <image name>
Ein Image oder ein Repo in eine Registry verschieben
docker push <repository address> <image name>
Suche nach einem Image auf Docker Hub
docker search <image name>
Image aus einem tar-Archiv laden
docker load <image tar file>
Ein Image oder mehrere Images in einem tar-Archiv speichern
docker save <file name> <options>
Anmeldung mit Docker-ID bei Docker Hub
docker login
Build
Ein Image aus einer Dockerdatei erstellen
docker build <options> <path to dockerfile>
-t <image name>
Einen Befehl in einem neuen Container ausführen
docker run <options> <image name> <command>
Einen neuen Container erstellen
docker create <Image name> <options> <command>
Bilder mit einem entfernten Git-Repository erstellen
docker git <git repository address>
Einen Container mit einem benutzerdefinierten Namen erstellen
docker container create -ti --name <container name> <image name>
Prüfen / Interagieren
Informationen über einen Container anzeigen
docker inspect <container name>
Auflisten der Prozesse innerhalb des Containers
docker top <container name> <options>
Auflisten der Logdatei des Containers
docker logs <container name>
Einen Befehl in einem vorhandenen Container ausführen
docker exec <container name> <command>
Exportieren eines Containers in ein tar-Archiv
docker export <container name>
Anhängen an einen laufenden Container
docker attach <container name>
Kopieren von Dateien aus dem angegebenen Container
docker cp <container name:path> hostpath\-
Kopieren von Dateien in den angegebenen Container
docker cp hostpath\-<container name:path>
Abrufen von Live-Stream-Statistiken für einen bestimmten Container
docker stats <container name>
Liste der installierten Plugins von Docker
docker plugin ls
Aufräumen
Ungenutzte Bilder entfernen
docker image prune
Alle Bilder entfernen
docker image prune -a
Beschneiden Sie Ihr gesamtes System
docker system prune
Alle laufenden Container beenden
docker kill $(docker ps -q)
Author: Ralf Menti