Sobes.tech
Middle

Ի՞նչ են PV և PVC-ը Kubernetes-ի համատեքստում։

sobes.tech AI

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

Տևական հզորություն (PV) — դա պահեստավորման ռեսուրս է Kubernetes խմբում: Այն ամփոփում է կոնկրետ պահեստավորման իրականացման մանրամասները օգտագործողներից: PV-ը կառավարում է խմբի ադմինիստրատորը և գոյություն ունի անկախ ցանկացած պոդի կյանքի ցիկլից:

Տևական հզորություն պահանջ (PVC) — դա օգտագործողի պահանջն է պահեստավորման համար: Օգտագործողը պահանջում է պահեստավորման ծավալ որոշ հատկանիշներով (չափ, մուտքի ռեժիմ): PVC-ը կապված է համապատասխան PV-ի հետ: Եթե համապատասխան PV չի գտնվել, կարող է դինամիկ ստեղծվել նոր PV՝ եթե համապատասխան StorageClass-ը կարգավորել է:

Հիմնական տարբերությունները և փոխազդեցությունները:

  • 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-ին