Zum Hauptinhalt springen

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