Deployments mit kubectl in Kubernetes erstellen Workloads in Kubernetes richtig anbinden

Von Thomas Joos 2 min Lesedauer

Anbieter zum Thema

Ein Deployment automatisiert das Anlegen und Aktualisieren mehrerer identischer Pods und sorgt für planbare Rollouts und Self Healing. Starten Sie mit einer schnellen Variante direkt in der Kommandozeile. Die Bereitstellung eines Deployments ist schnell abgeschlossen.

Kubernetes im Unternehmen einsetzen und verwalten(Bild:  Thomas Joos)
Kubernetes im Unternehmen einsetzen und verwalten
(Bild: Thomas Joos)

Ein erstes Web Deployment auf Kubernetes mit einem Replikat legen Sie so an:

"kubectl create deployment web --image=nginx:1.25 --replicas=1"

"kubectl get deployments -o wide"

"kubectl get pods -o wide --selector app=web"

Für reproduzierbare Setups empfehlen sich Manifeste. Speichern Sie die folgende Datei als "web-deploy.yaml" und passen Sie Namen, Image und Ressourcen an. Das Deployment nutzt RollingUpdate, setzt Readiness und Liveness Probes und definiert Requests und Limits:

apiVersion: apps/v1kind: Deploymentmetadata: name: web labels: app: webspec: replicas: 2 revisionHistoryLimit: 5 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: nginx image: nginx:1.25 ports: - name: http containerPort: 80 readinessProbe: httpGet: path: / port: http initialDelaySeconds: 5 periodSeconds: 5 livenessProbe: httpGet: path: / port: http initialDelaySeconds: 10 periodSeconds: 10 resources: requests: cpu: "100m" memory: "128Mi" limits: cpu: "300m" memory: "256Mi"

Deployment anwenden und prüfen

Um ein Deployment anzuwenden und die Umsetzung zu prüfen, steht ebenfalls kubectl zur Verfügung:

"kubectl apply -f web-deploy.yaml"

"kubectl rollout status deploy/web"

"kubectl get pods -l app=web -o wide"

Optional stellen Sie den Dienst bereit. Ein NodePort Service öffnet den Zugriff über einen festen Port

"kubectl expose deployment web --type=NodePort --port 80 --name web-svc"

"kubectl get svc web-svc -o wide"

Rufen Sie die ausgegebene NodePort Adresse eines Worker Nodes im Browser auf. So verifizieren Sie Routing und Erreichbarkeit der Replikate.

Deployments verwalten

Skalierung steuern Sie kurzfristig per Befehl oder dauerhaft über das Manifest. Manuell erhöhen Sie die Replikazahl so

"kubectl scale deploy/web --replicas=4"

"kubectl get deploy web"

Für automatische Skalierung nutzen Sie ein HPA-Objekt. Dieses Beispiel skaliert zwischen zwei und zehn Replikaten anhand der CPU Auslastung:

"kubectl autoscale deploy/web --min=2 --max=10 --cpu-percent=60"

"kubectl get hpa"

Updates führen Sie kontrolliert mit Rolling Updates durch. Ändern Sie das Image, beobachten Sie den Fortschritt und sichern Sie die Möglichkeit zum Zurücksetzen:

"kubectl set image deploy/web nginx=nginx:1.25.1"

"kubectl rollout status deploy/web"

"kubectl rollout history deploy/web"

Bei Problemen machen Sie die letzte Änderung rückgängig:

"kubectl rollout undo deploy/web"

Während Sie einen sensiblen Release prüfen, pausieren Sie den Rollout. So verhindern Sie das automatische Fortschreiten und können Tests durchführen:

"kubectl rollout pause deploy/web"

"kubectl rollout resume deploy/web"

Für Fehleranalyse und Audits liefern "describe" und Logs wertvolle Details:

"kubectl describe deploy/web"

"kubectl logs deploy/$(kubectl get pods -l app=web -o jsonpath='{.items[0].metadata.name}')"

Ressourcenanpassungen nehmen Sie deklarativ im Manifest vor und wenden sie erneut an. Änderungen an "replicas", Limits, Probes oder Labels bleiben nachvollziehbar, weil sie versioniert werden können. Für saubere Selektion verwenden Sie konsistente Labels wie "app=web" in "spec.selector.matchFields" und "spec.template.metadata.labels".

Für den Lebenszyklus eines Deployments sind drei Punkte entscheidend. Erstens eine klare Versionierung der Container Images, damit Rollbacks jederzeit möglich sind. Zweitens definierte Health Checks für zügiges Self Healing. Drittens reproduzierbare Manifeste statt einmaliger Adhoc Befehle. Mit diesem Vorgehen behalten Sie die Kontrolle über Anzahl, Zustand und Version Ihrer Workloads und können Rollouts sicher planen und im Fehlerfall schnell umkehren.

(ID:50609010)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung