Kubernetes'te StorageClass Nedir?

Published: (February 26, 2026 at 06:49 AM EST)
3 min read
Source: Dev.to

Source: Dev.to

Storage Akışının Mantığı

Kubernetes’te storage zinciri şu şekildedir:

Pod → PVC → StorageClass → PV → Physical Storage

Persistent Volume (PV)

PV, cluster içindeki gerçek disk kaynağını temsil eder. Bu kaynak aşağıdakilerden biri olabilir:

  • Node üzerindeki local disk
  • NFS share
  • Cloud disk
  • Distributed storage

Yani PV, storage’ın kendisidir.

Persistent Volume Claim (PVC)

PVC, uygulamanın disk talebidir. Örneğin:

resources:
  requests:
    storage: 10Gi
accessModes:
  - ReadWriteOnce
storageClassName: fast-storage

PVC bir disk oluşturmaz; sadece bir disk talep eder.

StorageClass Nedir?

StorageClass, PVC oluşturulduğunda diskin nasıl sağlanacağını belirleyen bir policy katmanıdır. Örneğin:

  • Disk local mi, NFS mi, cloud block storage mı?
  • Otomatik mi üretilecek?
  • Hangi performans sınıfı kullanılacak?

Static vs Dynamic Provisioning

Static Provisioning

  • PV manuel olarak oluşturulur.
  • Önce storage kaynağı tanımlanır, ardından PVC bu PV’ye bağlanır.
  • Daha fazla kontrol sağlar ancak her yeni disk ihtiyacında manuel işlem gerekir.
  • Genellikle test ortamlarında veya local/NFS kurulumlarında tercih edilir.

Dynamic Provisioning

  • Sadece PVC oluşturulur.
  • Bağlı olduğu StorageClass, arka planda otomatik olarak uygun bir PV üretir ve PVC’ye bağlar.
  • Bu süreç CSI (Container Storage Interface) driver’ları sayesinde çalışır.
  • Production ortamlarında genellikle tercih edilir; daha otomatik ve ölçeklenebilirdir.

Disk Gerçekte Nerede?

Bu sorunun cevabı PV tanımındadır.

Local PV

PV şu path’i gösteriyorsa, örneğin /mnt/k8s/data, disk node üzerindedir. Node arızalanırsa veri kaybedilebilir; pod başka node’a taşınırsa diske erişilemez.

NFS

nfs:
  server: 192.168.1.10
  path: /srv/nfs/share

Disk NFS server üzerindedir. Pod hangi node’da olursa olsun aynı veriye erişebilir.

Cloud Storage

PV bir cloud volume’a bağlıysa, disk cloud provider tarafındadır.

Access Modes

  • ReadWriteOnce (RWO) – Sadece tek node yazabilir.
  • ReadWriteMany (RWX) – Birden fazla node yazabilir.
  • ReadOnlyMany (ROX) – Birden fazla node sadece okuyabilir.

Reclaim Policy

PVC silindiğinde disk’in nasıl davranacağını belirler. Kubernetes’te üç farklı reclaim policy vardır (birisi eski):

  • Retain – PVC silinse bile PV ve içindeki veri korunur.
  • Delete – PVC silindiğinde PV ve arkasındaki storage kaynağı silinir.
  • Recycle (Deprecated) – PV içindeki veriyi basitçe temizleyip tekrar kullanılabilir hale getirirdi.

Örneğin: MariaDB ve PostgreSQL Verisi Nerede?

MariaDB

  • Varsayılan veri dizini: /var/lib/mysql
  • Persistence yapılandırılmadıysa, bu dizin container filesystem’i üzerindedir; pod silindiğinde veri kaybolur.
  • Persistence etkinleştirildiğinde, bu path bir volumeMount ile bir PVC’ye bağlanır: PVC → PV → Physical storage. Pod silinse bile veri korunur.
kubectl describe pod <pod-name>

Yukarıdaki komutla mount edilen path’leri görebilirsiniz.

PostgreSQL

  • Varsayılan veri dizini: /var/lib/postgresql/data
  • Mantık MariaDB ile aynıdır. Persistence yoksa veri geçicidir; persistence varsa bu dizin bir PVC’ye mount edilir ve gerçek disk PV tarafındadır.

Gerçek Disk Yeri Nasıl Bulunur?

# PVC'yi bul
kubectl get pvc -n <namespace>

# Bağlı olduğu PV'yi göster
kubectl describe pvc <pvc-name>

# PV detayını incele
kubectl describe pv <pv-name>

Bu komutlar sayesinde PV’nin local path mi, NFS server mı, cloud volume mu yoksa distributed storage mı olduğunu görebilirsiniz. Gerçek disk yeri PV tanımında belirtilir.

0 views
Back to Blog

Related posts

Read more »