kubectl ist das Kommandozeilen-Werkzeug für Kubernetes (K8s), die Plattform zur Verwaltung von Container-Anwendungen im Cluster. Mit kubectl startet man Pods, skaliert Dienste, prüft Logs und behebt Probleme — alles über die Kubernetes-API.
Grundlagen: Cluster und Pods anzeigen
kubectl get nodes
kubectl get pods
kubectl get nodes listet die Maschinen (Nodes) des Clusters, kubectl get pods die laufenden Pods im aktuellen Namespace. Mit kubectl get all sieht man Pods, Dienste und Deployments auf einen Blick.
kubectl get pods -A— Pods in allen Namespaceskubectl get services— die Dienste (Service) mit ihren Cluster-IPskubectl get deployments— die Deployments (gewünschter Zustand der Anwendung)
Arbeit mit Deployments
kubectl create deployment nginx --image=nginx
kubectl scale deployment nginx --replicas=3
kubectl create deployment legt ein Deployment an — Kubernetes hält daraufhin immer die gewünschte Anzahl Replicas am Leben. kubectl scale erhöht oder verringert die Anzahl der Pods.
kubectl rollout status deployment/nginx— Fortschritt eines Updates (Rollout) anzeigenkubectl rollout undo deployment/nginx— zum letzten funktionierenden Stand zurückkubectl set image deployment/nginx nginx=nginx:1.27— Image eines Deployments aktualisieren
Mit Manifesten arbeiten (empfohlen)
kubectl apply -f deployment.yaml
kubectl delete -f deployment.yaml
Statt Befehle zu tippen, beschreibt man den gewünschten Zustand in einer YAML-Datei und übergibt sie an kubectl apply — genau wie bei terraform wird der Soll-Zustand deklarativ festgelegt. kubectl delete -f entfernt alle in der Datei beschriebenen Ressourcen.
Diagnose: Logs, Shell und Ports
kubectl logs <pod>
kubectl exec -it <pod> -- bash
kubectl port-forward <pod> 8080:80
kubectl logs <pod>— die Ausgabe des Containers (Logs) anzeigenkubectl exec -it <pod> -- bash— eine Shell im laufenden Container öffnen (ähnlichdocker exec)kubectl describe pod <pod>— Details und Ereignisse zu einem Pod, wichtig beim Debuggenkubectl port-forward <pod> 8080:80— einen lokalen Port auf den Container weiterleiten
Context und Konfiguration
kubectl config get-contexts
kubectl config use-context mein-cluster
Ein Context bündelt Cluster, Benutzer und Namespace. Mit kubectl config use-context wechselt man zwischen mehreren Clustern (z.B. Entwicklung und Produktion).
Praxis-Tipp
Für die tägliche Arbeit: kubectl get pods -w beobachtet Pods live, kubectl delete pod <pod> startet einen Pod neu (das Deployment erzeugt automatisch einen neuen). Kubernetes-Ressourcen gehören in Git versioniert — dazu passen git-Befehle und die Grundlagen zu docker.