Kubernetes Changed Block Tracking Beta'da: Artımlı Yedeklemede Ne Değişti?
Kubernetes'in CSI Changed Block Tracking (CBT) API'si, external-snapshot-metadata v1.0.0 ile Beta'ya geçti. SnapshotMetadataService CRD'si v1beta1 oldu, v1alpha1 ise kaldırıldı. Yazıda CBT'nin ne işe yaradığını, gereksinimleri ve Alpha kullanıcılarının geçiş adımlarını anlatıyoruz.
Kubernetes'te kalıcı hacimlerin yedeklenmesi uzun süre aynı sorunla boğuştu: Bir hacimde neyin değiştiğini bilmenin standart bir yolu olmadığı için yedekleme araçları ya tüm hacmi yeniden okuyor ya da depolama sağlayıcısına özel API'lere bağımlı kalıyordu. CSI Changed Block Tracking (CBT) API'si bu boşluğu doldurmak için geliştirildi. Eylül 2025'te Alpha olarak duyurulan özellik, Mart 2026'da yayınlanan external-snapshot-metadata v1.0.0 sürümüyle Beta'ya geçti. Kubernetes blogunda 14 Eylül 2026'da yayınlanan yazı ise iki sürüm arasındaki farkları özetliyor.
CBT ne işe yarıyor?
CBT, depolama sistemlerinin iki snapshot arasında blok düzeyinde hangi verinin değiştiğini raporlamasını sağlıyor. Kubernetes'in Alpha duyurusuna göre amaç, yedekleme sırasında tüm hacmin taranması ihtiyacını ortadan kaldırmak. Tam yedeklemeler; uzun yedekleme pencereleri, yüksek bant genişliği ve I/O kullanımı ile tekrar eden veri yüzünden büyüyen depolama maliyetleri anlamına geliyor. CBT ile yedekleme araçları yalnızca değişen blokları aktararak gerçek anlamda artımlı yedekleme yapabiliyor.
Mimarinin parçaları
CBT üç bileşenden oluşuyor:
- CSI SnapshotMetadata servisi: Snapshot ve değişen blok verilerini sunan gRPC API'si.
- SnapshotMetadataService CRD'si: CSI sürücüsünün metadata servisinin var olduğunu ve bağlantı bilgilerini küme içindeki istemcilere duyuran özel kaynak tanımı.
- external-snapshot-metadata sidecar'ı: CSI sürücüsü ile yedekleme uygulamaları arasında standart gRPC arayüzünü sağlayan yardımcı konteyner.
API iki RPC sunuyor ve ikisi de sunucu taraflı akış (server-side streaming) kullanıyor:
GetMetadataAllocated: Tek bir snapshot'ta ayrılmış blokları listeler. İlk tam yedek için kullanılır.GetMetadataDelta: Aynı hacmin iki snapshot'ı arasında değişen blokları listeler. Artımlı yedeklerin temelidir.
Yanıtlar SnapshotMetadataResponse mesajları halinde parça parça geliyor; bu yüzden istemcilerin büyük akışları verimli işleyecek şekilde yazılması gerekiyor. Kimlik doğrulama tarafında yedekleme uygulaması bir Kubernetes ServiceAccount token'ı kullanıyor ve bu token'ları alabilmesi için uygulamanın ServiceAccount'ına RBAC RoleBinding'ler ile yetki verilmesi gerekiyor.
Beta'da ne değişti?
Beta'nın en önemli değişikliği API sürümü:
- SnapshotMetadataService CRD'si
v1alpha1sürümündenv1beta1sürümüne yükseltildi. Şema değişmedi. v1alpha1iki sürümün birlikte sunulduğu bir geçiş dönemi olmadan doğrudan kaldırıldı.- İki sürüm arasında otomatik dönüşüm yok.
Yeni API grubu ve sürümü manifestlerde şöyle görünüyor:
apiVersion: cbt.storage.k8s.io/v1beta1
kind: SnapshotMetadataServiceGereksinimler
Kubernetes blogundaki Beta yazısına göre:
- En düşük Kubernetes sürümü: 1.33
- CSI spesifikasyonu: 1.10 veya üzeri
- Sidecar imajı:
registry.k8s.io/sig-storage/csi-snapshot-metadata:v1.0.0
Bunlara ek olarak CSI sürücünüzün volume snapshot'ları desteklemesi ve external-snapshot-metadata sidecar'ını birlikte dağıtması gerekiyor.
Alpha kullanıcıları için geçiş adımları
Otomatik dönüşüm olmadığı için Alpha'yı denemiş ekiplerin geçişi elle yapması gerekiyor:
- v1.0.0 ile gelen CRD tanımını yeniden uygulayın.
- SnapshotMetadataService manifestlerinizi
apiVersion: cbt.storage.k8s.io/v1beta1olarak güncelleyin. - CRD ile konuşan istemci veya controller kodunuzu yeni sürüme göre güncelleyin.
Sıfırdan kurulum
Beta ile CBT'yi ilk kez kullanacaklar için adımlar şöyle özetleniyor: Sürücünün snapshot desteğini ve sidecar'ı doğrulayın, v1beta1 CRD'sini kurun, sürücünüz için bir SnapshotMetadataService kaynağı oluşturun ve RPC'leri çağırmak için snapshot-metadata-lister örnek istemcisini ya da kendi istemcinizi kullanın. Uçtan uca bir örnek için blog yazısı csi-driver-host-path sürücüsünü işaret ediyor.
Sınırlamalar
- CBT yalnızca blok hacimleri kapsıyor. Dosya tabanlı hacimler ve ağ dosya paylaşımları için değişiklik takibi bu API'nin kapsamında değil; dosya tabanlı CSI sürücüleri bu API'yi uygulayamıyor.
- Özellik Beta aşamasında, henüz GA değil. Proje ekibi GA öncesinde daha geniş CSI sürücüsü desteği ve operasyonel geri bildirim topluyor.
Sonuç
CBT'nin Beta'ya geçmesi, Kubernetes'te sağlayıcıdan bağımsız artımlı blok yedeklemenin olgunlaştığını gösteriyor. Asıl belirleyici, CSI sürücünüzün bu API'yi ne zaman desteklediği olacak. Alpha'yı deneyen ekipler için en kritik nokta, v1alpha1'in uyarı vermeden kaldırılmış olması: Yükseltmeden önce CRD'yi, manifestleri ve istemci kodunu birlikte güncellemeyi planlayın. Ayrıntılar için Kubernetes blogundaki Beta yazısına ve KEP-3314 belgesine bakabilirsiniz.
Benzer İçerikler
CI/CD Nedir? Sürekli Entegrasyon ve Sürekli Teslim
CI/CD, kodun yazımından yayına kadar olan süreci otomatikleştiren uygulamalar bütünüdür. Continuous Integration sık birleştirme ve otomatik testle hataları erken yakalar; Continuous Delivery/Deployment yayını güvenli bir rutine dönüştürür. Merkezinde derleme-test-dağıtım aşamalarından oluşan pipeline vardır.
27 Eki 20262 kaynakOPS2 DKMikroservis Mimarisi Nedir? Monolitten Dağıtık Sistemlere
Mikroservis mimarisi, bir uygulamayı bağımsız çalışan küçük servislere bölen bir tasarım yaklaşımıdır. Her servis tek bir işten sorumludur, ayrı dağıtılır ve API ile haberleşir. Monolite göre esneklik ve ölçeklenme kazandırır ama dağıtık sistem karmaşıklığı getirir; çoğu proje monolit olarak başlamalıdır.
27 Eki 20262 kaynakOPS2 DKLinux Nedir? Çekirdek, Dağıtım ve Temel Kavramlar
Linux, sunucuların, bulut altyapısının ve Android'in temelinde çalışan açık kaynaklı işletim sistemi çekirdeğidir. 'Linux' çoğunlukla çekirdeği bir paket yöneticisi ve araçlarla birleştiren dağıtımları (Ubuntu, Debian, Fedora) ifade eder. Komut satırı, dosya sistemi hiyerarşisi ve izinler temel kavramlardır.
27 Eki 20262 kaynak