Kas nutiks, jei diegiame programą naudodami deployment ir tada keičiame programos versiją replikų rinkinyje?
sobes.tech AI
Atsakymas iš AI
Po pakeitus programėlės versiją, susijęs ReplicaSet išteklius, susijęs su šiuo Deployment, bus atnaujintas. Deployment sukurs naują ReplicaSet su nauja konteinerio vaizdo versija. Senasis ReplicaSet palaipsniui mažės, o naujas ReplicaSet didės. Šis procesas vadinamas rolling update (slydimo atnaujinimas) ir vykdomas automatiškai pagal numatytuosius nustatymus.
Konkrečios žingsniai:
- Vartotojas arba CI/CD sistema atnaujina Deployment.
- Deployment sukuria naują ReplicaSet su nauja specifikacija, turinčia naują vaizdo versiją.
- Naujasis ReplicaSet pradeda kurti naujos versijos podus.
- Kai dalis naujų podų pereina į
Readybūseną, Deployment pradeda mažinti seną ReplicaSet, ištrindamas senos versijos podus. - Procesas tęsiasi, kol visi podai nebus naujo ReplicaSet valdyme.
- Senasis ReplicaSet lieka, bet su pageidaujamu replikų skaičiumi 0.
Tai užtikrina nulio laiko prastovą programėlės atnaujinimo metu (įskaitant pakankamus išteklius ir teisingą podų paruoštumą) ir leidžia lengvai grįžti prie ankstesnės versijos, tiesiog atnaujinus Deployment.
Pavyzdys Deployment YAML atnaujinimui:
# Atnaujintas 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% # Maksimalus podų skaičius, kuris gali būti sukurtas virš pageidaujamo
maxUnavailable: 25% # Maksimalus podų skaičius, kuris gali būti neprieinamas atnaujinimo metu
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-registry/my-app:v1.1.0 # Pakeista vaizdo versija
ports:
- containerPort: 80
Vykdant rankinius pakeitimus ReplicaSet, labai nerekomenduojama ir gali sukelti nenuspėjamą elgesį, nes Deployment stengsis suderinti ReplicaSet būseną su savo pageidaujama būseną, perrašydamas jūsų pakeitimus. Visi valdomi pakeitimai turi būti atliekami per Deployment išteklių.