Middle
Kubernetes bağlamında PV ve PVC nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kalıcı Hacim (PV), Kubernetes kümesinde bir depolama kaynağıdır. Bu, tüketicilerin depolama uygulamasının belirli detaylarını soyutlar. PV, küme yöneticisi tarafından yönetilir ve herhangi bir podun yaşam döngüsünden bağımsızdır.
Kalıcı Hacim Talebi (PVC), kullanıcıdan depolama için bir istektir. Kullanıcı, belirli özelliklere (boyut, erişim modu) sahip bir depolama hacmi talep eder. PVC, uygun bir PV ile ilişkilendirilir. Uygun bir PV bulunamazsa, ilgili StorageClass yapılandırılmışsa yeni bir PV'nin dinamik olarak sağlanması mümkündür.
Ana farklar ve etkileşimler:
- PV: Gerçek depolama kaynağını temsil eder.
- PVC: Kullanıcının depolama talebini temsil eder.
- PVC, PV ile ilişkilendirilir.
- PV, yöneticinin statik olarak oluşturabileceği veya PVC talebine yanıt olarak StorageClass kullanılarak dinamik olarak oluşturulabilir.
- Pod, doğrudan PV yerine PVC'ye referans verir, bu da uygulama mantığını depolama detaylarından ayırmaya olanak tanır.
Erişim Modları (Access Modes) PV ve PVC için:
ReadWriteOnce(RWO): Hacim, aynı anda yalnızca bir düğüm tarafından okunup yazılabilir.ReadOnlyMany(ROX): Hacim, aynı anda birçok düğüm tarafından yalnızca okunabilir.ReadWriteMany(RWX): Hacim, aynı anda birçok düğüm tarafından okunup yazılabilir.
PV ve PVC için YAML örneği:
# persistent-volume.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain # PVC silindikten sonra hacimle ne yapılacağı (Retain, Recycle, Delete)
storageClassName: local-storage # StorageClass ile ilişkilendirilebilir
local:
path: /mnt/data
nodeAffinity: # Yerel depolama için uygunluk
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 veya StorageClass ile ilişkilendirilir
# 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'ye referans