Rolling update
- Docker & Kubernetes kursu
- Orta seviye
- Ders 28/82
- 4 dk
Deployment image güncellemesini öğrenirsin.
Rolling update
Pod şablonu değişince (ör. image) Deployment kademeli güncelleme yapar: yeni ReplicaSet'te pod açar, hazır olunca eskisinden birini kapatır. İki ayar hızı ve güvenliği belirler:
maxSurge: istenen sayının üstünde en fazla kaç ek pod açılabilir.maxUnavailable: güncelleme sırasında en fazla kaç pod hizmet dışı olabilir.
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0maxUnavailable: 0, kapasitenin hiç düşmemesini garanti eder.
Image güncellemek
En hızlı yol kubectl set image'dır; ama kalıcı kayıt için YAML'ı düzenleyip apply etmek daha iyidir. Değişikliğin nedenini geçmişe yazmak için bir açıklama (annotation) eklenebilir:
kubectl set image deployment/web nginx=nginx:1.27.3
kubectl annotate deployment/web kubernetes.io/change-cause="nginx 1.27.3'e yükseltme"
kubectl rollout status deployment/webUygulama Güvenli güncelleme
Üç komut yaz: web deployment'ında nginx container'ının image'ını nginx:1.27.3 yap; kubernetes.io/change-cause açıklamasını "nginx 1.27.3" olarak ekle; dağıtımın bitmesini bekle.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl set image deployment/web nginx=nginx:1.27.3
kubectl annotate deployment/web kubernetes.io/change-cause="nginx 1.27.3"
kubectl rollout status deployment/webBeklenen çıktı
deployment.apps/web image updated deployment.apps/web annotated Waiting for deployment "web" rollout to finish: 1 out of 3 new replicas have been updated... deployment "web" successfully rolled out
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hazırlık kontrolü (readinessProbe) yeni pod'larda hep başarısız olursa rolling update ne yapar?
- Durur; eski pod'lar hizmet vermeye devam eder Doğru cevap
- Tüm eski pod'ları kapatır
- Otomatik geri alır
- Hazırlığı yok sayar
Açıklama: Yeni pod hazır olmadan eskisi kapatılmaz; progressDeadlineSeconds sonra deployment başarısız sayılır.
2 Container'ın image'ını değiştir.
kubectl set image deployment/web ____=nginx:1.27.3
kubectl set image deployment/web nginx=nginx:1.27.3
Açıklama: Biçim container_adı=yeni_image'dır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
maxSurge |
Ek pod sınırı |
maxUnavailable |
Hizmet dışı pod sınırı |
set image |
Image değiştir |
change-cause |
Değişiklik nedeni |