Deployments
Ein Deployment verwaltet eine gewünschte Anzahl von Pod-Replikas und stellt sicher, dass sie laufen. Es ermöglicht Rolling Updates und Rollbacks.
pgadmin4-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pgadmin4
spec:
replicas: 1
selector:
matchLabels:
app: pgadmin4
template:
metadata:
labels:
app: pgadmin4
spec:
containers:
- name: pgadmin4-container
image: dpage/pgadmin4:9.14.0
env:
- name: PGADMIN_DEFAULT_EMAIL
value: admin@admin.com
- name: PGADMIN_DEFAULT_PASSWORD
value: admin
ports:
- containerPort: 80
resources:
limits:
memory: 512Mi
cpu: 500m
requests:
memory: 256Mi
cpu: 250m
Befehle
cd ~/kubernetes-tutorial/src/deployments
kubectl apply -f pgadmin4-deployment.yaml
kubectl get pods -o wide
kubectl get rs # ReplicaSets
kubectl get deploy
kubectl get all
Debugging
# Nur für Entwicklung, nie in Produktion!
kubectl port-forward pod/pgadmin4-[id] 8080:80 --address=0.0.0.0
Skalieren
# Über ReplicaSet skalieren funktioniert nicht – das Deployment überschreibt es
kubectl scale rs/pgadmin4-[id] --replicas=2
# Korrekt: über das Deployment skalieren
kubectl scale deploy/pgadmin4 --replicas=2
kubectl get pods -o wide
Rolling Update
kubectl set image deployment/pgadmin4 pgadmin4-container=dpage/pgadmin4:9.15.0
kubectl rollout status deployment/pgadmin4
kubectl rollout history deployment/pgadmin4
kubectl rollout undo deployment/pgadmin4