Sobes.tech
Junior

Megmarad-e valamilyen állapot, amikor deployment-et hajtunk végre?

sobes.tech MI

Válasz az MI-től

Kubernetesben a Deployment telepítésekor a állapot nem tárolódik a Deployment vezérlőn belül. A Deployment egy ReplicaSet-et kezel, amely viszont a Podokat irányítja. A Podok természetüknél fogva múlandóak, és újraindíthatók vagy törölhetők.

Az állapot megőrzése a Deployment segítségével telepített alkalmazások esetén általában más mechanizmusok segítségével történik:

  • Persistent Volumes (PV) és Persistent Volume Claims (PVC): Ezeket az adatok tárolására használják, amelyeknek akkor is elérhetőnek kell maradniuk, ha a Podokat törlik vagy újraindítják. A PV tárolást biztosít, a PVC pedig igényli.
  • ConfigMaps és Secrets: Ezek a konfigurációs adatok és érzékeny információk (jelszavak, kulcsok) tárolására szolgálnak, elkülönítve a konténer képétől.
  • StatefulSets: Egy kifejezetten állapotkezelésre tervezett vezérlő. A StatefulSets garantálja minden Pod számára a stabil hálózati azonosítást és a tartós tárolást, valamint az összerendezett telepítést és skálázást.

Példa PVC kérésre Pod manifestben:

# Pod definíció PVC használatával
apiVersion: v1
kind: Pod
metadata:
  name: állapot-alkalmazásom
spec:
  containers:
  - name: konténerem
    image: képem
    volumeMounts:
    - name: adat-volumen
      mountPath: /adatok
  volumes:
  - name: adat-volumen
    persistentVolumeClaim:
      claimName: pvc-m

StatefulSet definíció példája:

# StatefulSet definíció
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: állapot-állítmányom
spec:
  serviceName: "szolgáltatásom"
  replicas: 3
  selector:
    matchLabels:
      app: állapot-alkalmazásom
  template:
    metadata:
      labels:
        app: állapot-alkalmazásom
    spec:
      containers:
      - name: konténerem
        image: képem
        volumeMounts:
        - name: volumenem
          mountPath: /adatok
  volumeClaimTemplates:
  - metadata:
      name: volumenem
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

Tehát, a Deployment maga nem tárol állapotot. Feladata, hogy a szükséges számú Pod-replikát biztosítsa anélkül, hogy azok egyéni azonosítóját vagy állapotát megőrizné a újraindások között. Állapotkezelő alkalmazásokhoz a StatefulSets, PV/PVC, ConfigMaps és Secrets használata ajánlott.