Sobes.tech
Middle

Kubernetes kontekstida PV va PVC nima?

sobes.tech AI

AIdan javob

Kusatiladigan hajm (PV) Kubernetes klasteridagi saqlash resursidir. U iste'molchilardan saqlashning aniq amalga oshirilish tafsilotlarini abstraktsiya qiladi. PV klaster administratori tomonidan boshqariladi va har qanday podning hayot aylanishidan mustaqil ravishda mavjud bo'ladi.

Kusatiladigan hajm talabi (PVC) foydalanuvchidan saqlash uchun so'rovdir. Foydalanuvchi ma'lum xususiyatlarga (o'lcham, kirish rejimi) ega bo'lgan hajmni so'raydi. PVC mos PV bilan bog'lanadi. Agar mos PV topilmasa, mos StorageClass sozlangan bo'lsa, yangi PV uchun dinamik ta'minlash amalga oshirilishi mumkin.

Asosiy farqlar va o'zaro ta'sirlar:

  • PV: Haqiqiy saqlash resursini ifodalaydi.
  • PVC: Foydalanuvchining saqlash so'rovini ifodalaydi.
  • PVC PV bilan bog'lanadi.
  • PV statik ravishda administrator tomonidan yoki PVC talabiga javoban StorageClass yordamida dinamik ravishda yaratilishi mumkin.
  • Pod PVC ga murojaat qiladi, to'g'ridan-to'g'ri PV ga emas, bu ilova mantiqini saqlash tafsilotlaridan ajratishga imkon beradi.

Kirish modlari (Access Modes) PV va PVC uchun:

  • ReadWriteOnce (RWO): Hajm bir vaqtning o'zida faqat bitta tugun tomonidan o'qilishi va yozilishi mumkin.
  • ReadOnlyMany (ROX): Hajm bir vaqtning o'zida ko'plab tugunlar tomonidan faqat o'qilishi mumkin.
  • ReadWriteMany (RWX): Hajm bir vaqtning o'zida ko'plab tugunlar tomonidan o'qilishi va yozilishi mumkin.

YAML misoli PV va PVC uchun:

# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-pv
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain # PVC o'chirilgandan keyin hajm bilan nima qilish (Retain, Recycle, Delete)
  storageClassName: local-storage # StorageClass bilan bog'lash uchun ishlatilishi mumkin
  local:
    path: /mnt/data
  nodeAffinity: # Mahalliy saqlash uchun afinitet
    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 yoki StorageClass bilan bog'langan
# 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 ga murojaat