Sobes.tech
Junior

Da li se tokom deploy-a čuva neko stanje?

sobes.tech АИ

Одговор од АИ

При развоју Deployment у Kubernetes-у стање не чувати у самом Deployment контролеру. Deployment управља ReplicaSet-ом, који, пак, управља Pod-овима. Pod-ови су по својој природи эфемерни и могу бити поново покренути или уклоњени.

Чување стања за апликације које развија Deployment обично се реализује помоћу других механизама:

  • Persistent Volumes (PV) и Persistent Volume Claims (PVC): Користе се за чување података која треба да остану доступна чак и након уклањања или поновног покретања Pod-ова. PV пружа складиште, а PVC га захтева.
  • ConfigMaps и Secrets: Користе се за чување конфигурационих података и осетљивих информација (лозинки, кључева), одвојених од слике контејнера.
  • StatefulSets: Контролер, специјално дизајниран за управљање апликацијама са стањем. StatefulSets гарантује стабилну мрежну идентификацију и стабилно складиште за сваки Pod, као и уредно развијање и скалирање.

Пример захтева за PVC у манифесту Pod-а:

# Дефиниција Pod-а који користи 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 # Назив PVC који се користи

Пример дефиниције StatefulSet-а:

# Дефиниција StatefulSet-а
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

Дакле, сам Deployment не чува стање. Његов задатак је да обезбеди потребан број реплика Pod-ова без чувања њихове индивидуалне идентификације или стања између рестарта. За stateful апликације користе се StatefulSets, PV/PVC, ConfigMaps и Secrets.