Sobes.tech
Middle+

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:

  1. Vartotojas arba CI/CD sistema atnaujina Deployment.
  2. Deployment sukuria naują ReplicaSet su nauja specifikacija, turinčia naują vaizdo versiją.
  3. Naujasis ReplicaSet pradeda kurti naujos versijos podus.
  4. Kai dalis naujų podų pereina į Ready būseną, Deployment pradeda mažinti seną ReplicaSet, ištrindamas senos versijos podus.
  5. Procesas tęsiasi, kol visi podai nebus naujo ReplicaSet valdyme.
  6. 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ų.