Sobes.tech
Middle+

Əgər biz tətbiqi deployment ilə yerləşdirsək və sonra replika dəstində tətbiqin versiyasını dəyişsək, nə baş verər?

sobes.tech Süni İntellekt

AI-dan cavab

Deployment resursunda tətbiqin versiyasını dəyişdikdən sonra, ona bağlı olan ReplicaSet yenilənəcək. Deployment yeni konteyner görüntüsü versiyası ilə yeni ReplicaSet yaradacaq. Köhnə ReplicaSet tədricən aşağı salınacaq və yeni ReplicaSet yuxarıya doğru miqyaslandırılacaq. Bu proses rolling update (davamlı yeniləmə) adlanır və avtomatik olaraq həyata keçirilir.

Xüsusi addımlar:

  1. İstifadəçi və ya CI/CD sistemi Deployment-u yeniləyir.
  2. Deployment yeni görüntü versiyasını ehtiva edən spec ilə yeni ReplicaSet yaradır.
  3. Yeni ReplicaSet yeni versiya ilə podlar yaratmağa başlayır.
  4. Bəzi yeni podlar Ready vəziyyətinə keçdikdə, Deployment köhnə ReplicaSet-i aşağı salmağa başlayır və köhnə versiyadakı podları silir.
  5. Bu proses bütün podlar yeni ReplicaSet-in nəzarətinə alınana qədər davam edir.
  6. Köhnə ReplicaSet qalır, lakin istənilən replikaların sayı 0 olur.

Bu, tətbiqin yenilənməsi zamanı sıfır fasilə vaxtını təmin edir (kifayət qədər resurs və podların düzgün hazır olması şərti ilə) və Deployment yenidən yeniləməklə asanlıqla əvvəlki versiyaya qayıtmağa imkan verir.

Deployment YAML yeniləməsinin nümunəsi:

# Yenilənmiş Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25% # İstənilən saydan yuxarı yaradıla biləcək maksimum pod sayı
      maxUnavailable: 25% # Yeniləmə zamanı əlçatmaz ola biləcək maksimum pod sayı
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-registry/my-app:v1.1.0 # Dəyişdirilmiş görüntü versiyası
        ports:
        - containerPort: 80

ReplicaSet-i əl ilə dəyişdirmək çox tövsiyə edilmir və bu, gözlənilməz davranışlara səbəb ola bilər, çünki Deployment ReplicaSet-in vəziyyətini öz istədiyi vəziyyətə uyğunlaşdırmağa çalışacaq və dəyişikliklərinizi üst-üstə qoyacaq. Bütün idarə olunan tətbiq dəyişiklikləri Deployment resursu vasitəsilə edilməlidir.