Sobes.tech
Junior

Kas deployment'i ajal säilitatakse mõni olek?

sobes.tech AI

Vastus AI-lt

Kui Kuberneteses paigaldatakse Deployment, ei salvestata olekut otse Deployment kontrollijasse. Deployment juhib ReplicaSeti, mis omakorda juhib Pod'e. Pod'id on oma olemuselt efemeroidsed ja neid saab taaskäivitada või eemaldada.

Oleku salvestamine Deployment'iga paigaldatud rakenduste jaoks toimub tavaliselt teiste mehhanismide kaudu:

  • Persistent Volumes (PV) ja Persistent Volume Claims (PVC): Kasutatakse andmete salvestamiseks, mis peavad jääma kättesaadavaks isegi pärast Pod'ide kustutamist või taaskäivitamist. PV pakub salvestusruumi, ja PVC seda nõuab.
  • ConfigMaps ja Secrets: Kasutatakse konfiguratsioonandmete ja tundliku teabe (paroolid, võtmed) salvestamiseks, eraldatuna konteineri pildist.
  • StatefulSets: Spetsiaalselt loodud kontroller, mis haldab olekuga rakendusi. StatefulSets tagab stabiilse võrgulise identifikaatori ja stabiilse salvestusruumi iga Pod'i jaoks ning korraliku juurutamise ja skaleerimise.

Näide PVC nõudest Pod'i manifestis:

# Pod'i definitsioon, mis kasutab PVC-d
apiVersion: v1
kind: Pod
metadata:
  name: my-stateful-app
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: data-volume
      mountPath: /data
  volumes:
  - name: data-volume
    persistentVolumeClaim:
      claimName: my-pvc-claim # PVC nimi, mida kasutatakse

Näide StatefulSet'i definitsioonist:

# StatefulSet'i definitsioon
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  serviceName: "my-service"
  replicas: 3
  selector:
    matchLabels:
      app: my-statefulset-app
  template:
    metadata:
      labels:
        app: my-statefulset-app
    spec:
      containers:
      - name: my-container
        image: my-image
        volumeMounts:
        - name: my-volume
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: my-volume
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

Seega, ise Deployment ei salvesta olekut. Selle ülesandeks on tagada vajalik Pod'ide arv replikaid ilma nende individuaalse identiteedi või olekuta taaskäivituste vahel. Olekuvajadustega rakendused kasutavad StatefulSets, PV/PVC, ConfigMaps ja Secrets.