Kubernetes-Checkliste
Häufige k8s-Befehle mit Parametern
Hier ist mein k8s Cheatsheet,
der die wichtigsten Kubernetes-Befehle und Konzepte von der Installation bis zum Laufen von Containern und zur Bereinigung abdeckt:
Installation von Kubernetes
Mit Kubeadm
Um Kubernetes mit kubeadm
zu installieren, folgen Sie diesen Schritten:
-
Umgebung vorbereiten:
- Stellen Sie sicher, dass die erforderlichen Kernel-Module aktiviert sind:
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Starten Sie das System neu, um die Änderungen anzuwenden.
- Stellen Sie sicher, dass die erforderlichen Kernel-Module aktiviert sind:
-
Docker und andere Voraussetzungen installieren:
- Installieren Sie Docker:
sudo apt-get update sudo apt-get install -y docker.io
- Installieren Sie
ebtables
undethtool
:sudo apt-get install ebtables ethtool
- Installieren Sie HTTPS-Unterstützung und
curl
, wenn erforderlich:sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Fügen Sie das Kubernetes-Repository hinzu und installieren Sie
kubeadm
,kubelet
undkubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Installieren Sie Docker:
-
Kubernetes-Cluster initialisieren:
- Initialisieren Sie den ersten Control-Plane-Node:
sudo kubeadm init
- Fügen Sie zusätzliche Control-Plane- und Worker-Node hinzu:
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Initialisieren Sie den ersten Control-Plane-Node:
Mit Minikube oder Kind
Für die lokale Entwicklung können Sie minikube
oder kind
verwenden:
-
Minikube:
minikube start
Folgen Sie der offiziellen [Startanleitung].
-
Kind:
curl -sfL https://get.k3s.io | sh - kind create cluster
Folgen Sie der [Kind-Quickstart-Seite].
Häufige kubectl
-Befehle
Grundlegende Befehle
-
Informationen zu Ressourcen abrufen:
kubectl get <resource> # Liste von Ressourcen (z. B. Pods, Services, Deployments) kubectl get pods --all-namespaces # Liste aller Pods in allen Namespaces kubectl get pods -o wide # Liste der Pods mit weiteren Details kubectl get pod my-pod -o yaml # YAML-Konfiguration eines Pods abrufen.
-
Ressourcen beschreiben:
kubectl describe <resource> # Detaillierte Beschreibung einer Ressource (z. B. Nodes, Pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Ressourcen erstellen:
kubectl create -f <manifest-file> # Ressourcen aus einer YAML- oder JSON-Datei erstellen kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Ein ConfigMap erstellen kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Ein Secret erstellen.
-
Ressourcen löschen:
kubectl delete <resource> <name> # Eine Ressource löschen (z. B. Pod, Deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Pod-Management
-
Einen Befehl und Argumente für einen Container definieren:
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Einen Befehl in einer Shell ausführen:
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
ConfigMap- und Secret-Management
-
Ein ConfigMap erstellen:
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Ein Secret erstellen:
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Deployment- und Service-Management
-
Ein Deployment erstellen:
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Ein Deployment als Service exponieren:
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Namespace- und Node-Management
-
Namespaces auflisten:
kubectl get namespaces
-
Einen Namespace erstellen:
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Nodes auflisten:
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Überwachung und Debugging
-
Logs ansehen:
kubectl logs <pod-name> kubectl logs -f <pod-name> # Logs in Echtzeit verfolgen.
-
Ereignisse beschreiben:
kubectl describe events
-
Cluster-Informationen prüfen:
kubectl cluster-info kubectl version # Kubernetes-Version prüfen.
Erweiterte Befehle
-
Ressourcen sortieren:
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Ressourcen filtern:
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Spezifische Daten abrufen:
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.