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 Namespaces
  • kubectl get services — die Dienste (Service) mit ihren Cluster-IPs
  • kubectl 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) anzeigen
  • kubectl rollout undo deployment/nginx — zum letzten funktionierenden Stand zurück
  • kubectl 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) anzeigen
  • kubectl exec -it <pod> -- bash — eine Shell im laufenden Container öffnen (ähnlich docker exec)
  • kubectl describe pod <pod> — Details und Ereignisse zu einem Pod, wichtig beim Debuggen
  • kubectl 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.