Sobes.tech
Middle

DevOps kontekstində 'eviction' və ya 'evict' termini nə deməkdir?

sobes.tech Süni İntellekt

AI-dan cavab

DevOps kontekstində, xüsusən Kubernetes kimi konteyner orkestrasiya sistemləri ilə işləyərkən, "eviction" (və ya "evict" prosesi) bir Pod-un zorla bir noddan çıxarılması deməkdir.

Bu adətən nodda resursların çatışmazlığı səbəbindən baş verir, məsələn:

  • Disk sahəsi: Node, Podlar, loglar, konteyner şəkilləri və s. üçün lazım olan disk sahəsini tükətmək üzrədir.
  • Yaddaş: Node üzərindəki sistem RAM çatışmazlığı ilə üzləşir.

Node müəyyən bir resurs istifadəsi həddinə çatdıqda (Kubelet-də konfiqurasiya olunub), node tamamilə çökməsinin qarşısını almaq və stabilliyi saxlamaq üçün eviction prosesinə başlayır. Eviction zamanı aşağı prioritetli Podlar (PriorityClass) və daha çox resurs istifadə edən, təyin olunmuş limitləri aşan Podlar üstünlük təşkil edir.

// Resurslarla təyin olunmuş Pod nümunəsi
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 istifadə nümunəsi

Evicted edilən Pod Evicted vəziyyətinə gətirilir və sonra idarəedici (məsələn, Deployment) başqa bir nodda kifayət qədər resurslara malik yeni Pod nümunəsi yaradır.

Eviction hədlərinin idarə olunması (eviction thresholds) klasterin stabilliyini qorumaq üçün vacib hissədir. Bu, Kubelet parametrləri vasitəsilə konfiqurasiya olunur, məsələn:

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

Resurs istifadəsinin monitorinqi və konfiqurasiya olunmuş eviction siyasətləri performansın aşağı düşməsinin və tətbiqlərin uğursuzluqlarının qarşısını almağa kömək edir.