Sobes.tech
Middle+

Mi történik, ha egy telepítéssel telepítjük az alkalmazást, majd megváltoztatjuk az alkalmazás verzióját a replikasets-ben?

sobes.tech MI

Válasz az MI-től

Az alkalmazás verziójának módosítása után a Deployment erőforráshoz kapcsolódó ReplicaSet frissül. A Deployment létrehoz egy új ReplicaSet-et az új konténerképfelvétel verziójával. A régi ReplicaSet fokozatosan leáll, míg az új ReplicaSet felfelé skálázódik. Ezt a folyamatot rolling update-nak (körkörös frissítésnek) nevezik, és alapértelmezés szerint automatikusan végrehajtódik.

Specifikus lépések:

  1. A felhasználó vagy a CI/CD rendszer frissíti a Deployment-et.
  2. A Deployment létrehoz egy új ReplicaSet-et, amely tartalmazza az új képverziót.
  3. Az új ReplicaSet elkezdi létrehozni a podokat az új verzióval.
  4. Amint néhány új pod eléri a Ready állapotot, a Deployment elkezdi csökkenteni a régi ReplicaSet-et, eltávolítva a régi verziójú podokat.
  5. A folyamat addig folytatódik, amíg minden pod az új ReplicaSet irányítása alá nem kerül.
  6. A régi ReplicaSet megmarad, de a kívánt replikák száma 0 lesz.

Ez nulla leállási időt biztosít az alkalmazás frissítése során (feltéve, hogy elegendő erőforrás áll rendelkezésre és a podok megfelelően kész vannak), és lehetővé teszi az egyszerű visszaállást az előző verzióra azáltal, hogy újra frissíti a Deployment-et.

A Deployment YAML frissítésének példája:

# Frissített 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% # Maximális pod szám, amely a kívánt felett létrehozható
      maxUnavailable: 25% # Maximális pod szám, amely nem elérhető frissítés közben
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-registry/my-app:v1.1.0 # Módosított képverzió
        ports:
        - containerPort: 80

A ReplicaSet manuális módosítása erősen nem ajánlott, és kiszámíthatatlan viselkedést eredményezhet, mivel a Deployment megpróbálja összehangolni a ReplicaSet állapotát a kívánt állapottal, felülírva a változtatásokat. Minden alkalmazáskezelést a Deployment erőforrásán keresztül kell végrehajtani.