Kubernetes ile Sıfır Kesintiyle Güncelleme: Rolling Update Yaklaşımı

0 Yanıt 2 Görüntülenme
·
Katılımcılar
Konuyu Açan #1
Kubernetes üzerinde uygulama güncellemeleri yaparken en büyük endişe, hizmetin kesintiye uğramadan yenilenmesini sağlamaktır. Bu noktada, Kubernetes’in sunduğu Rolling Update stratejisi devreye girer. Bu yöntem, yeni pod'ları aşamalı şekilde devreye alarak, eski pod'ları kademeli olarak kaldırır; böylece uygulama hiç durmadan güncellenebilir.

Rolling Update, temel olarak aşağıdaki prensiplere dayanır:

  • Paralel Güncellemeler: Uygulamanın belirli sayıda pod'u aynı anda güncellenir. Bu sayı, maxUnavailable ve maxSurge parametreleriyle kontrol edilir. Mesela, maxUnavailable=1 ve maxSurge=1 ayarlarıyla, güncelleme sırasında en az bir pod her zaman çalışır durumda kalır.

  • Adım Adım Güncelleme: Güncelleme işlemi, yeni sürümle uyumlu yeni pod'lar oluşturularak, eski pod'lar kademeli olarak kaldırılır. Bu süreç, otomatik veya manuel olarak başlatılabilir.

  • Hata Yönetimi ve Geri Alma: Eğer yeni pod'lar beklendiği gibi çalışmazsa, Kubernetes otomatik olarak geri alma veya durdurma işlemi gerçekleştirerek, sistemi stabil tutar.

    Güvenli bir Rolling Update için dikkat edilmesi gerekenler:

    • Liveness ve Readiness Probe: Pod'ların sağlığını düzenli kontrol eden probe'lar, yeni pod'un düzgün çalışmasını garanti eder.
    • İzleme ve Loglama: Güncelleme sırasında loglar ve metriklerle sistem durumu sürekli izlenmelidir.
    • Test Ortamında Denemeler: Canlıya almadan önce, staging ortamında detaylı testler yapılmalı.


    Örnek bir deployment.yaml yapılandırması şu şekilde olabilir:

    KOD
    1234567891011121314151617181920212223242526272829303132333435363738394041
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ornek-uygulama
    spec:
      replicas: 3
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxUnavailable: 1
          maxSurge: 1
      selector:
        matchLabels:
          app: ornek
      template:
        metadata:
          labels:
            app: ornek
        spec:
          containers:
    [list]
    [*]name: ornek-container
    [/list]
            image: ornek:son
            ports:
    [list]
    [*]containerPort: 80
    [/list]
            readinessProbe:
              httpGet:
                path: /health
                port: 80
              initialDelaySeconds: 5
              periodSeconds: 10
            livenessProbe:
              httpGet:
                path: /health
                port: 80
              initialDelaySeconds: 15
              periodSeconds: 20
    


    Yukarıdaki yapılandırma, güncelleme sırasında minimum kesinti sağlamak için idealdir. Bu stratejiyle, uygulama yeni versiyonuna sorunsuz ve kesintisiz geçiş yapabilir. Sizler de bu yöntemi kullanarak, yüksek erişilebilirlik ve kullanıcı memnuniyetini sürdürebilirsiniz.

    Sizlerin deneyimleri ve karşılaştığınız sorunlar neler? Kubernetes Rolling Update ile ilgili en kritik noktalar veya önerileriniz nelerdir?
  • Yanıt vermek için giriş yapmış olmalısınız.

    0 alıntı seçildi