Sobes.tech
Middle+

Agar biz ilovani deployment yordamida joylashtirsak va keyin replika to'plamida ilova versiyasini o'zgartirsak, nima bo'ladi?

sobes.tech AI

AIdan javob

Deployment resursida ilova versiyasini o'zgartirgandan so'ng, unga bog'liq ReplicaSet yangilanadi. Deployment yangi konteyner tasvirining versiyasi bilan yangi ReplicaSet yaratadi. Eski ReplicaSet asta-sekin kamaytiriladi, yangi ReplicaSet esa ko'tariladi. Bu jarayon rolling update (ketma-ket yangilash) deb ataladi va avtomatik ravishda amalga oshiriladi.

Aniq bosqichlar:

  1. Foydalanuvchi yoki CI/CD tizimi Deploymentni yangilaydi.
  2. Deployment yangi tasvir versiyasini o'z ichiga olgan spec bilan yangi ReplicaSet yaratadi.
  3. Yangi ReplicaSet yangi versiya bilan podlar yaratishni boshlaydi.
  4. Ba'zi yangi podlar Ready holatiga o'tgach, Deployment eski ReplicaSetni kamaytirishni boshlaydi, eski versiyadagi podlarni o'chiradi.
  5. Bu jarayon barcha podlar yangi ReplicaSet nazorati ostiga olguncha davom etadi.
  6. Eski ReplicaSet qoladi, ammo istalgan replikalar soni 0 ga teng bo'ladi.

Bu, ilovani yangilashda nol to'xtash vaqtini ta'minlaydi (mablag'lar yetarli bo'lsa va podlar to'g'ri tayyor bo'lsa) va Deploymentni qayta yangilash orqali osongina avvalgi versiyaga qaytishni imkonini beradi.

YAML Deployment yangilash misoli:

# Yangilangan 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% # Istalgan sonning ustidan yaratilishi mumkin bo'lgan maksimal podlar soni
      maxUnavailable: 25% # Yangilash davomida mavjud bo'lmagan podlar maksimal soni
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-registry/my-app:v1.1.0 # O'zgartirilgan tasvir versiyasi
        ports:
        - containerPort: 80

ReplicaSetni qo'lda o'zgartirish juda tavsiya etilmaydi va bu oldindan ko'rilmagan xatti-harakatlarga olib kelishi mumkin, chunki Deployment ReplicaSet holatini o'zining istalgan holatiga moslashtirishga harakat qiladi va sizning o'zgartirishlaringizni yozib oladi. Barcha boshqariladigan ilova o'zgarishlari Deployment resursi orqali amalga oshirilishi kerak.