Егер біз қолданбаны орналастырсақ және содан кейін реплика жиынтығында қолданба нұсқасын өзгертсек, не болады?
sobes.tech AI
AI-дан жауап
Қолданбаның нұсқасын өзгерткеннен кейін, Deployment ресурсына байланысты ReplicaSet жаңартылады. Deployment жаңа контейнер образымен жаңа ReplicaSet құрады. Ескі ReplicaSet біртіндеп төмендейді, ал жаңа ReplicaSet жоғарылайды. Бұл процесс rolling update (жылжитын жаңарту) деп аталады және әдепкі бойынша автоматты түрде орындалады.
Нақты қадамдар:
- Пайдаланушы немесе CI/CD жүйесі Deployment-ты жаңартады.
- Deployment жаңа нұсқасымен spec-ті қамтитын жаңа ReplicaSet құрады.
- Жаңа ReplicaSet жаңа нұсқамен подтарды құра бастайды.
- Жаңа подтардың бір бөлігі
Readyкүйіне өткен кезде, Deployment ескі ReplicaSet-ті төмендетуді бастайды, ескі нұсқадағы подтарды жояды. - Бұл процесс барлық подтар жаңа ReplicaSet-тің басқаруына өткенше жалғасады.
- Ескі 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 ресурсы арқылы жүзеге асырылуы керек.