Meydan okuma - Deployment
- Docker & Kubernetes kursu
- Orta seviye
- Ders 79/82
- 5 dk
Üç kopyalı bir Deployment yazarsın.
Meydan okuma: güvenli güncellenen Deployment
Bu meydan okumada kesintisiz güncellenen bir Deployment tanımlayacak ve sonra bir sürüm yükseltip geri alacaksın. Kesintisizliğin iki koşulu: maxUnavailable: 0 ve yeni pod'ların hazır olduğunu gerçekten ölçen bir readinessProbe.
kubectl apply -f api.yaml
kubectl set image deploy/api api=api:1.1
kubectl rollout status deploy/api
# sorun çıktı:
kubectl rollout undo deploy/apiUygulama Deployment tanımı
Bir Deployment YAML'ı yaz: adı api, replicas: 3; RollingUpdate stratejisi maxSurge: 1, maxUnavailable: 0; selector ve şablon etiketi app: api; container adı api, image api:1.0.
Başlangıç kodu
# buraya yazÖrnek çözüm
apiVersion: apps/v1
kind: Deployment
metadata:
name: api
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: api
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: api:1.0Beklenen çıktı
deployment.apps/api created
Uygulama Yükselt ve geri al
Dört komut yaz: api deployment'ında api container'ının image'ını api:1.1 yap; dağıtımın bitmesini bekle; geçmişi göster; önceki sürüme geri dön.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl set image deployment/api api=api:1.1
kubectl rollout status deployment/api
kubectl rollout history deployment/api
kubectl rollout undo deployment/apiBeklenen çıktı
deployment.apps/api image updated deployment "api" successfully rolled out REVISION CHANGE-CAUSE 1 <none> 2 <none> deployment.apps/api rolled back
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 readinessProbe olmadan maxUnavailable: 0 neden yeterli değildir?
- Güncelleme hiç başlamaz
- maxUnavailable yok sayılır
- Pod'lar silinmez
- Container başlar başlamaz hazır sayılır; uygulama hazır olmadan eskiler kapanır Doğru cevap
Açıklama: Hazırlık sinyali olmadan Kubernetes uygulamanın ne zaman hazır olduğunu bilemez.
2 Önceki sürüme geri dön.
kubectl rollout ____ deploy/api
kubectl rollout undo deploy/api
Açıklama: rollout undo önceki ReplicaSet'e döner.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
maxUnavailable: 0 |
Kapasite düşmez |
maxSurge: 1 |
Bir ek pod |
set image |
Sürüm yükselt |
rollout undo |
Geri al |