CodeBlanks Logo Icon CodeBlanks

Rolling update

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: 0

maxUnavailable: 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/web

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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/web

Beklenen çı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.

Soru
kubectl set image deployment/web ____=nginx:1.27.3
Cevap
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

Orta seviye bölümündeki tüm dersler