Sobes.tech
Middle

Kubernetes კონტექსტში PV და PVC რა არის?

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