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