Sobes.tech
Middle+

Kas notiks, ja mēs izvietosim lietotni ar deployment un pēc tam mainīsim lietotnes versiju replikasē?

sobes.tech AI

Atbilde no AI

Pēc programmas versijas maiņas, ar šo Deployment saistītais ReplicaSet resursu tiks atjaunināts. Deployment izveidos jaunu ReplicaSet ar jaunu konteineru attēla versiju. Vecais ReplicaSet pakāpeniski samazināsies, bet jauns ReplicaSet palielināsies. Šo procesu sauc par rolling update (griešanas atjauninājums) un tas tiek veikts automātiski pēc noklusējuma.

Konkrēti soļi:

  1. Lietotājs vai CI/CD sistēma atjaunina Deployment.
  2. Deployment izveido jaunu ReplicaSet ar jaunu specifikāciju, kas satur jaunu attēla versiju.
  3. Jaunais ReplicaSet sāk izveidot jaunās versijas podus.
  4. Kad daļa jauno podu pāriet uz Ready stāvokli, Deployment sāk samazināt veco ReplicaSet, dzēšot vecās versijas podus.
  5. Process turpinās, līdz visi podi ir jaunā ReplicaSet pārvaldībā.
  6. Vecais ReplicaSet paliek, bet ar vēlamo repliku skaitu 0.

Tas nodrošina nulles dīkstāves laiku programmas atjaunināšanā (ņemot vērā pietiekamus resursus un pareizu podu gatavību) un ļauj viegli atgriezties pie iepriekšējās versijas, vienkārši atjauninot Deployment.

Deployment YAML piemērs atjaunināšanai:

# Atjaunināts 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% # Maksimālais podu skaits, kas var tikt izveidots virs vēlamā skaita
      maxUnavailable: 25% # Maksimālais podu skaits, kas var būt nepieejami atjaunināšanas laikā
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app-container
        image: my-registry/my-app:v1.1.0 # Mainīta attēla versija
        ports:
        - containerPort: 80

Viss pārvaldāmais izmaiņas jāveic caur Deployment resursu, manuālas izmaiņas ReplicaSet ir ļoti nevēlamas un var novest pie neparedzamas uzvedības, jo Deployment mēģinās saskaņot ReplicaSet stāvokli ar savu vēlamo stāvokli, pārrakstot jūsu izmaiņas. Visas pārvaldāmās izmaiņas jāveic caur Deployment resursu.