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:
- A felhasználó vagy a CI/CD rendszer frissíti a Deployment-et.
- A Deployment létrehoz egy új ReplicaSet-et, amely tartalmazza az új képverziót.
- Az új ReplicaSet elkezdi létrehozni a podokat az új verzióval.
- 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. - A folyamat addig folytatódik, amíg minden pod az új ReplicaSet irányítása alá nem kerül.
- 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.