Sobes.tech
Junior

Zachováva sa pri nasadení nejaký stav?

sobes.tech AI

Odpoveď od AI

Pri nasadení Deployment v Kubernetes sa stav neuchováva priamo v samotnom kontroléri Deployment. Deployment riadi ReplicaSet, ktorý následne riadi Pod-ov. Pod-ové sú svojou podstatou efemérne a môžu byť reštartované alebo odstránené.

Ukladanie stavu pre aplikácie nasadzované Deploymentom sa zvyčajne realizuje pomocou iných mechanizmov:

  • Persistent Volumes (PV) a Persistent Volume Claims (PVC): Slúžia na ukladanie dát, ktoré musia zostať dostupné aj po odstránení alebo reštarte Pod-ov. PV poskytuje úložisko, zatiaľ čo PVC ho žiada.
  • ConfigMaps a Secrets: Slúžia na ukladanie konfiguračných dát a citlivých informácií (heslá, kľúče), oddelených od obrazu kontajnera.
  • StatefulSets: Kontrolér špeciálne navrhnutý na správu aplikácií so stavom. StatefulSets garantuje stabilnú sieťovú identifikáciu a stabilné úložisko pre každý Pod, ako aj usporiadané nasadzovanie a škálovanie.

Príklad požiadavky na PVC v manifeste Pod-u:

# Definícia Pod-u využívajúceho PVC
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 # Názov PVC, ktorý sa používa

Príklad definície StatefulSet-u:

# Definícia StatefulSet-u
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

Takže, samotný Deployment ne uchováva stav. Jeho úlohou je zabezpečiť požadovaný počet replík Pod-ov bez uchovávania ich individuálnej identity alebo stavu medzi reštartmi. Pre stateful aplikácie sa používajú StatefulSets, PV/PVC, ConfigMaps a Secrets.