Sobes.tech
Junior

Ar diegiant išlaikomas tam tikras būsenas?

sobes.tech AI

Atsakymas iš AI

Kubernetes'e Deployment įdiegus, būsena nėra saugoma pačiame Deployment kontroleryje. Deployment valdo ReplicaSet, kuris savo ruožtu valdo Pod'us. Pod'ai savo prigimtimi yra efemeriški ir gali būti perkraunami arba ištrinti.

Būsena, reikalinga Deployment diegiamoms programoms, dažniausiai įgyvendinama naudojant kitus mechanizmus:

  • Persistent Volumes (PV) ir Persistent Volume Claims (PVC): Naudojami duomenims saugoti, kurie turi būti pasiekiami net ir po Pod'ų ištrynimo ar perkrovimo. PV teikia saugyklą, o PVC jos prašo.
  • ConfigMaps ir Secrets: Naudojami konfigūracijos duomenims ir jautrioms informacijoms (slaptažodžiams, raktams) saugoti, atskirti nuo konteinerio vaizdo.
  • StatefulSets: Specialiai sukurtas valdyti būsenos turinčias programas. StatefulSets garantuoja stabilų tinklo identifikavimą ir stabilų saugyklą kiekvienam Pod'ui, taip pat tvarkingą diegimą ir mastelio keitimą.

Pavyzdys PVC užklausos Pod manifest'e:

# Pod apibrėžimas, naudojantis 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 # Naudojamas PVC pavadinimas

StatefulSet apibrėžimas:

# StatefulSet apibrėžimas
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

Taigi, pats Deployment nesaugo būsenos. Jo užduotis — užtikrinti reikiamą Pod'ų replikos skaičių be jų individualios tapatybės ar būsenos tarp perkrovų. Būsenos turinčias programas naudoja StatefulSets, PV/PVC, ConfigMaps ir Secrets.