Sobes.tech
Middle

PV ва PVC дар контексти Kubernetes чӣ мебошанд?

sobes.tech AI

Ҷавоб аз AI

Ҳоҷатхона (PV) — ин манбаи нигоҳдории дар кластер Kubernetes мебошад. Он тафсилоти иҷрои махсуси нигоҳдорииро аз истеъмолкунандагон пинҳон мекунад. PV аз ҷониби администратори кластер идора мешавад ва мустақил аз ҳаёти ҳар як pod вуҷуд дорад.

Даъвои нигоҳдории доимӣ (PVC) — ин дархости корбар барои нигоҳдории маълумот мебошад. Корбар ҳаҷмро бо хусусиятҳои муайян (андоза, режими дастрасӣ) талаб мекунад. PVC бо PV мувофиқ пайваст мешавад. Агар PV мувофиқ ёфтан натавонад, метавонад дар асоси StorageClass мувофиқ, PV нав ба таври динамикӣ эҷод шавад.

Тафовутҳо ва ҳамкориҳо:

  • PV: Манбаи воқеии нигоҳдории маълумотро намояндагӣ мекунад.
  • PVC: Дархости корбар барои нигоҳдории маълумотро намояндагӣ мекунад.
  • PVC бо PV пайваст мешавад.
  • PV метавонад статикӣ аз ҷониби администратор эҷод ё дар асоси дархости PVC бо истифода аз StorageClass динамикӣ эҷод шавад.
  • Pod ба PVC ишора мекунад, на ба PV мустақиман, ки имкон медиҳад логикаи барнома аз тафсилоти нигоҳдории маълумот ҷудо шавад.

Режимҳои дастрасӣ (Access Modes) барои PV ва PVC:

  • ReadWriteOnce (RWO): Тома метавонад ҳам барои хондан ва ҳам барои навиштани як узел дар як вақт пайваст шавад.
  • ReadOnlyMany (ROX): Тома метавонад танҳо барои хондан аз ҷониби бисёр узелҳо дар як вақт пайваст шавад.
  • ReadWriteMany (RWX): Тома метавонад ҳам барои хондан ва ҳам барои навиштани бисёр узелҳо дар як вақт пайваст шавад.

Маслиҳат YAML барои PV ва PVC:

# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain # Чӣ кор кардан бо том пас аз хориҷ кардани PVC (Retain, Recycle, Delete)
  storageClassName: local-storage # Мумкин аст барои пайвастшавӣ бо StorageClass истифода шавад
  local:
    path: /mnt/data
  nodeAffinity: # Афинитет барои нигоҳдории маҳаллӣ
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - my-node
# persistent-volume-claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: local-storage # Пайвастшавӣ бо PV ё StorageClass
# pod-using-pvc.yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: nginx
      volumeMounts:
        - name: app-storage
          mountPath: /usr/share/nginx/html
  volumes:
    - name: app-storage
      persistentVolumeClaim:
        claimName: my-pvc # Пайванд ба PVC