Sobes.tech
Junior

Կա՞ որևէ վիճակ, երբ մենք իրականացնում ենք deployment։

sobes.tech AI

Պատասխան AI-ից

Երբ 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-երի ռեպլիկներ՝ առանց նրանց անհատական նույնականության կամ վիճակի պահպանման։ Վիճակով ծրագրերի համար օգտագործվում են StatefulSets, PV/PVC, ConfigMaps և Secrets։