Sobes.tech
Middle

DevOps bağlamında 'eviction' veya 'evict' terimi ne anlama geliyor?

sobes.tech yapay zeka

AI'dan gelen yanıt

DevOps bağlamında, özellikle Kubernetes gibi konteyner orkestrasyon sistemleriyle çalışırken, "eviction" (veya "evict" süreci), bir Pod'un zorla bir düğümden çıkarılması anlamına gelir.

Bu genellikle düğümdeki kaynakların yetersizliği nedeniyle olur, örneğin:

  • Disk alanı: Düğüm, Pod'lar, günlükler, konteyner görüntüleri vb. için gerekli disk alanını tüketmek üzere yakın.
  • Bellek: Düğümdeki sistem, RAM yetersizliği ile karşı karşıya.

Düğüm belirli bir kaynak kullanım eşiğine ulaştığında (Kubelet'te yapılandırılmıştır), düğüm tamamen çökmesini önlemek ve kararlılığını korumak için evictions (taşmalar) başlatır. Eviction sırasında öncelik, daha düşük önceliğe sahip Pod'lara (PriorityClass) ve daha fazla kaynak tüketen, belirlenen limitleri aşan Pod'lara verilir (burstable veya best-effort QoS).

// Belirli kaynaklara sahip Pod örneği
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  priorityClassName: high-priority // PriorityClass kullanımı örneği

Taşınan Pod, Evicted durumuna getirilir ve ardından kontrolcü (örneğin, Deployment), başka bir düğümde yeterli kaynaklara sahip yeni bir Pod örneği oluşturur.

Eviction eşiklerinin yönetimi (eviction thresholds), kümenin kararlılığını korumak için önemli bir parçadır. Bu, Kubelet parametreleri aracılığıyla yapılandırılır, örneğin:

  • --eviction-hard
  • --eviction-soft
  • --eviction-pressure-transition-period

Kaynak kullanımı izleme ve yapılandırılmış eviction politikaları, performans düşüşlerini ve uygulama hatalarını önlemeye yardımcı olur.