Sobes.tech
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