Mis juhtub, kui me rakendame rakenduse koos deploymentiga ja seejärel muudame rakenduse versiooni replikasetes?
sobes.tech AI
Vastus AI-lt
Pärast rakenduse versiooni muutmist uuendatakse sellega seotud ReplicaSet ressurssi. Deployment loob uue ReplicaSet uue konteineripildi versiooniga. Vana ReplicaSet väheneb järk-järgult, samal ajal kui uus ReplicaSet suureneb. Seda protsessi nimetatakse rolling update (liikuva uuenduse) ning see toimub automaatselt vaikimisi.
Spetsiifilised sammud:
- Kasutaja või CI/CD süsteem uuendab Deployment.
- Deployment loob uue ReplicaSet, mille spetsiifikatsioon sisaldab uut versiooni.
- Uus ReplicaSet hakkab looma uusi pod'e.
- Kui osa uutest pod'idest jõuab olekusse
Ready, alustab Deployment vana ReplicaSeti vähendamist, eemaldades vana versiooni pod'id. - Protsess jätkub, kuni kõik pod'id on uue ReplicaSeti hallata.
- Vana ReplicaSet jääb alles, kuid soovitud replika arv on 0.
See tagab nulli ajalise seisaku rakenduse uuendamisel (arvestades piisavaid ressursse ja pod'ide õiget valmisolekut) ning võimaldab lihtsat tagasipöördumist eelmisele versioonile, lihtsalt uuendades Deployment'i.
Näide Deployment YAML-i uuendamiseks:
# Uuendatud 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% # Maksimaalne pod'ide arv, mis võib olla loodud üle soovitud arvu
maxUnavailable: 25% # Maksimaalne pod'ide arv, mis võib olla kättesaamatu uuendamise ajal
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app-container
image: my-registry/my-app:v1.1.0 # Muudetud pildi versioon
ports:
- containerPort: 80
Kõik hallatavad muudatused tuleb teha Deployment ressursi kaudu, käsitsi muudetud ReplicaSet ei ole soovitatav ning võib põhjustada ettearvamatut käitumist, kuna Deployment püüab kohandada ReplicaSeti olekut oma soovitud olekuga, kirjutades üle teie muudatused. Kõik hallatavad muudatused tuleb teha Deployment ressursi kaudu.