Sobes.tech
Middle+

Егер біз қолданбаны орналастырсақ және содан кейін реплика жиынтығында қолданба нұсқасын өзгертсек, не болады?

sobes.tech AI

AI-дан жауап

Қолданбаның нұсқасын өзгерткеннен кейін, Deployment ресурсына байланысты ReplicaSet жаңартылады. Deployment жаңа контейнер образымен жаңа ReplicaSet құрады. Ескі ReplicaSet біртіндеп төмендейді, ал жаңа ReplicaSet жоғарылайды. Бұл процесс rolling update (жылжитын жаңарту) деп аталады және әдепкі бойынша автоматты түрде орындалады.

Нақты қадамдар:

  1. Пайдаланушы немесе CI/CD жүйесі Deployment-ты жаңартады.
  2. Deployment жаңа нұсқасымен spec-ті қамтитын жаңа ReplicaSet құрады.
  3. Жаңа ReplicaSet жаңа нұсқамен подтарды құра бастайды.
  4. Жаңа подтардың бір бөлігі Ready күйіне өткен кезде, Deployment ескі ReplicaSet-ті төмендетуді бастайды, ескі нұсқадағы подтарды жояды.
  5. Бұл процесс барлық подтар жаңа ReplicaSet-тің басқаруына өткенше жалғасады.
  6. Ескі ReplicaSet қалды, бірақ қалаулы репликалар саны 0-ге тең.

Бұл жаңарту кезінде нөлдік уақыттық тоқтау қамтамасыз етеді (қолайлы ресурстар мен подтардың дұрыс дайындалуы жағдайында) және Deployment-ты қайта жаңарту арқылы алдыңғы нұсқаға оңай қайтуға мүмкіндік береді.

Deployment YAML жаңарту мысалы:

# Жаңартылған 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% # Қажетті саннан артық подтар саны
      maxUnavailable: 25% # Жаңарту кезінде қол жетімсіз болуы мүмкін подтар саны
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-registry/my-app:v1.1.0 # Образ нұсқасы өзгертілді
        ports:
        - containerPort: 80

ReplicaSet-ті қолмен өзгерту өте ұсынылмайды және күтпеген мінез-құлыққа әкелуі мүмкін, себебі Deployment ReplicaSet жағдайын өзінің қалаулы жағдайына сәйкестендіруге тырысады, ал сіздің өзгерістеріңізді қайта жазып тастайды. Барлық басқарылатын қолданба өзгерістері Deployment ресурсы арқылы жүзеге асырылуы керек.