Sobes.tech
Middle

Kubernetes контекстинде PV жана PVC эмне?

sobes.tech AI

AIден жооп

Туруктуу көлөм (PV) — бул Kubernetes кластериндеги сактоо ресурсу. Ал сактоо боюнча конкреттүү ишке ашыруу деталдарын керектөөчүлөрдөн абстракциялайт. PV кластердин администратору тарабынан башкарылат жана кез келген поддун жашоосу менен байланышы жок.

Туруктуу көлөм талап (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ге шилтеме