Sobes.tech
Middle+

Pod'un önceliğine bağlı olarak düğümün doğru şekilde tamamlanması hangi faktörlerle sağlanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bir düğümün düzgün kapanması aşağıdaki faktörler tarafından sağlanır:

  1. Zaman Aşımı Süreleri:
    • terminationGracePeriodSeconds: Düğümün, podları zorla yok etmeden önce düzgün şekilde sonlandırmaya çalışacağı süreyi belirler. Varsayılan 30 saniyedir.
    • pod.spec.terminationGracePeriodSeconds: Belirli bir pod için zaman aşımı süresini geçersiz kılabilir.
    # Uzatılmış kapanış zaman aşımı ile bir pod manifest örneği
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-grace-period
    spec:
      containers:
      - name: my-container
        image: my-image
      terminationGracePeriodSeconds: 60 # Uzatılmış zaman aşımı
    
  2. Sinyaller:
    • Kubernetes, podun konteynerlerine SIGTERM sinyali gönderir.
    • Konteynerdeki uygulama, SIGTERM sinyalini yakalamalı ve düzgün şekilde işlemesi gerekir (örneğin, mevcut bağlantıları kapatmak, durumu kaydetmek).
    • Uygulama SIGTERM ile terminationGracePeriodSeconds süresi içinde sona ermezse, SIGKILL sinyali gönderilir.
  3. Pod Önceliği (priorityClassName):
    • Kaynak kıtlığı veya düğümün tahliyesi durumunda, daha düşük öncelikli podlar önce sona erer.
    • Bu, kritik (yüksek öncelikli) podların daha uzun süre çalışmasını ve düğüm erişilemez hale gelirse düzgün şekilde kapanma şansını artırır.
    # Öncelik sınıfı belirten bir pod manifest örneği
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-priority-pod
    spec:
      containers:
      - name: my-container
        image: my-image
      priorityClassName: high-priority # Öncelik sınıfının kullanımı
    
  4. PreStop Hook'ları:
    • SIGTERM sinyali gönderilmeden hemen önce konteynerde çalışan ek betikler veya çağrılar.
    • Senkronizasyon, hizmetlerden çıkış veya düzgün kapanış için gerekli diğer görevleri yapmak üzere kullanılabilir.
    # PreStop hook örneği
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-prestop
    spec:
      containers:
      - name: my-container
        image: my-image
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "echo 'Stopping container...' && sleep 5 && exit 0"] # Örnek komut
    
  5. Uç Noktaların Yönetimi (Endpoints):
    • Kubernetes, kapanış başlatıldığında, yeni trafiğin sona eren pod'a yönlendirilmemesi için podun IP'sini Endpoints Service nesnesinden kaldırır.
    • Bu, mevcut bağlantıların grace period süresi içinde sona ermesine olanak tanır.

Bu mekanizmaların tümü, Kubernetes'in düğümdeki podların kapanış sürecini yönetmesine, önceliklerini dikkate almasına, düzgün kapanma şansı vermesine ve mümkün olduğunca zorunlu yok etmeyi önlemesine olanak tanır.