Ə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:
- İstifadəçi və ya CI/CD sistemi Deployment-u yeniləyir.
- Deployment yeni görüntü versiyasını ehtiva edən spec ilə yeni ReplicaSet yaradır.
- Yeni ReplicaSet yeni versiya ilə podlar yaratmağa başlayır.
- Bəzi yeni podlar
Readyvəziyyətinə keçdikdə, Deployment köhnə ReplicaSet-i aşağı salmağa başlayır və köhnə versiyadakı podları silir. - Bu proses bütün podlar yeni ReplicaSet-in nəzarətinə alınana qədər davam edir.
- 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.