6.0 KiB
Executable File
Hier ist eine kompakte, praxisorientierte Anleitung zu kubectl mit den wichtigsten Funktionen und Use Cases.
1. Was ist kubectl?
kubectl ist das Kommandozeilen-Tool, um mit einem Kubernetes-Cluster zu kommunizieren.
Damit kannst du:
- Ressourcen erstellen, ändern und löschen (Deployments, Pods, Services, …)
- Logs einsehen und Probleme debuggen
- Rollouts steuern (Deployments updaten/rollback)
- Konfigurationen verwalten (Kontexte, Namespaces, Kubeconfig)
2. Grundlagen: Aufbau von kubectl-Befehlen
Allgemeines Schema:
kubectl <verb> <ressource> [name] [flags]
Beispiele:
kubectl get pods
kubectl describe pod mein-pod
kubectl delete service mein-service
Wichtige Verben:
get– Anzeigendescribe– Detailinformationencreate/apply– Ressourcen anlegen/aktualisierendelete– Löschenlogs– Logs anzeigenexec– Befehle innerhalb eines Pods ausführen
3. Konfiguration & Kontexte
3.1 Cluster-Zugriff prüfen
kubectl version
kubectl cluster-info
3.2 Aktuellen Kontext anzeigen und wechseln
kubectl config get-contexts
kubectl config current-context
kubectl config use-context mein-context
3.3 Namespace festlegen
Temporär per Flag:
kubectl get pods -n my-namespace
Standard-Namespace setzen:
kubectl config set-context --current --namespace=my-namespace
4. Ressourcen anzeigen und inspizieren
4.1 Ressourcen auflisten
kubectl get pods
kubectl get deployments
kubectl get services
kubectl get all
Mit mehr Details:
kubectl get pods -o wide
kubectl get pods -o yaml
4.2 Detailinformationen zu einer Ressource
kubectl describe pod mein-pod
kubectl describe deployment mein-deployment
Use Case: Debugging (Events, Container-Status, Restart-Gründe).
5. Deployments & Anwendungen verwalten
5.1 Deployment aus YAML erstellen
deployment.yaml Beispiel (stark vereinfacht):
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
Anwenden:
kubectl apply -f deployment.yaml
5.2 Deployment aktualisieren (Rolling Update)
Image ändern:
kubectl set image deployment/nginx-deployment nginx=nginx:1.26
Rollout-Status beobachten:
kubectl rollout status deployment/nginx-deployment
Rollback:
kubectl rollout undo deployment/nginx-deployment
5.3 Replica-Anzahl skalieren
kubectl scale deployment nginx-deployment --replicas=5
6. Services & Zugriff auf Anwendungen
6.1 Services anzeigen
kubectl get svc
Beispiel-Service:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: ClusterIP
selector:
app: nginx
ports:
- port: 80
targetPort: 80
Anwenden:
kubectl apply -f service.yaml
6.2 Port-Forwarding (lokaler Zugriff)
kubectl port-forward svc/nginx-service 8080:80
# Aufruf im Browser: http://localhost:8080
7. Logs & Debugging
7.1 Logs eines Pods
kubectl logs mein-pod
kubectl logs mein-pod -c container-name
kubectl logs -f mein-pod # -f = "follow"
7.2 Befehle im Container ausführen
kubectl exec -it mein-pod -- /bin/sh
# oder
kubectl exec -it mein-pod -- bash
Typischer Use Case: Debugging von laufenden Containern, z.B. Netzwerkprobleme, Dateisystem prüfen.
7.3 Problem-Analyse mit describe & Events
kubectl describe pod mein-pod
kubectl get events --sort-by=.metadata.creationTimestamp
8. Ressourcen ändern & löschen
8.1 Änderungen anwenden
Konfiguration in einer Datei ändern und dann:
kubectl apply -f deployment.yaml
Um tatsächliche Unterschiede zu sehen:
kubectl diff -f deployment.yaml
8.2 Ressourcen löschen
kubectl delete pod mein-pod
kubectl delete -f deployment.yaml
kubectl delete deployment nginx-deployment
9. Konfigurationen & Secrets
9.1 ConfigMaps
Erstellen aus einer Datei:
kubectl create configmap app-config --from-file=config.properties
Oder aus Literalwert:
kubectl create configmap app-config --from-literal=KEY=VALUE
ConfigMaps anzeigen:
kubectl get configmaps
kubectl describe configmap app-config
9.2 Secrets
kubectl create secret generic db-secret \
--from-literal=username=user \
--from-literal=password=geheim
Achtung: Standard-kubectl get secret -o yaml zeigt Base64-codierte, aber nicht verschlüsselte Daten.
10. Weitere nützliche Features
10.1 Autocomplete
Bash-Beispiel:
source <(kubectl completion bash)
echo 'source <(kubectl completion bash)' >> ~/.bashrc
10.2 Kustomize (ohne extra Tool, ab neueren kubectl-Versionen)
kubectl apply -k ./overlays/production
Struktur z.B.:
base/
deployment.yaml
kustomization.yaml
overlays/production/
kustomization.yaml
patches.yaml
11. Typische Praxis-Workflows
11.1 Neue Version deployen
git pull
kubectl apply -f k8s/
kubectl rollout status deployment mein-service
kubectl get pods -o wide
11.2 Fehlerhafte Anwendung debuggen
kubectl get pods
kubectl describe pod fehler-pod
kubectl logs fehler-pod
kubectl exec -it fehler-pod -- sh
kubectl get events --sort-by=.metadata.creationTimestamp
11.3 Schnell in einen anderen Namespace/Cluster wechseln
kubectl config use-context staging-cluster
kubectl config set-context --current --namespace=team-a
kubectl get pods
Wenn du möchtest, kann ich dir für deinen konkreten Use Case (z.B. “Web-App deployen”, “CI/CD-Pipeline”, “lokales Minikube-Cluster”) eine konkrete Schritt-für-Schritt-Anleitung mit fertigen kubectl-Befehlen erstellen.