İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • DevOps
  • Kubernetes PVC Unused Condition ile Atıl Volume Tespiti
Bulut Altyapı DevOps feature gate, Kubernetes, PVC, storage object in use protection, Unused condition Aşkın KILIÇ 22/09/2026 0 Yorumlar

Kubernetes PVC Unused Condition ile Atıl Volume Tespiti

Kubernetes PVC Unused Condition ile Atıl Volume Tespiti
📑 İçindekiler
  1. Neden PVC kullanımını izlemek gerekiyor?
  2. Unused condition nasıl çalışıyor?
  3. lastTransitionTime ile boşta kalma süresini ölçmek
  4. Alpha'dan Beta'ya ne değişti?
  5. Kullanım: adım adım doğrulama
  6. Küme genelinde atıl PVC'leri bulmak
  7. Sırada ne var?
  8. İlgili İçerikler
  9. Kaynaklar ve İleri Okuma

⏱️ 4 dk okuma📅 22 Eylül 2026

Kubernetes v1.37 ile PersistentVolumeClaimUnusedSinceTime özellik kapısı (feature gate) Beta aşamasına geçti ve varsayılan olarak açık geliyor. Artık PersistentVolumeClaim (PVC) koruma denetleyicisi her PVC’ye Unused adında bir condition ekliyor. “Bu volume’u gerçekten kullanan bir pod var mı?” sorusunun yanıtı da ek bir izleme hattı ya da özel script gerekmeden doğrudan PVC’nin status alanında duruyor.

Neden PVC kullanımını izlemek gerekiyor?

Pod silindiğinde Kubernetes ona bağlı PVC’yi otomatik olarak silmez. Kasıtlı bir davranış bu, amacı veri kaybını önlemek. Ama büyük ölçekli kümelerde kullanıcılar PVC oluşturup ilgili pod’ları sildikçe geride sahipsiz kalmış (orphaned) PVC’ler birikiyor, bu volume’lar sessiz sedasız depolama kapasitesi tüketmeye ve bulut maliyetlerini artırmaya devam ediyor.

Kubernetes v1.37 öncesinde kullanılmayan bir PersistentVolume’u tespit etmek görece kolaydı, zor olan bir PVC’nin hala kullanımda olup olmadığını anlamaktı. Bunun için pod’ları, PersistentVolume’ları ve PVC’leri geniş bir zaman aralığında çapraz karşılaştırmak gerekiyordu. Yöneticiler basit görünen bu soruyu yanıtlamak için çoğu zaman özel izleme boru hatları veya script’ler kuruyordu.

Kaynakta iki tipik kullanım senaryosu öne çıkıyor:

  • Depolama yöneticisi, hiçbir pod tarafından kullanılmayan PVC’leri görüp sahipsiz volume’ları güvenle tespit ediyor ve silme planına alıyor.
  • DevOps mühendisi, Unused condition’ı True olan PVC’leri listeleyip geliştirme ortamlarında temizliği otomatikleştiriyor.

Unused condition nasıl çalışıyor?

PVC koruma denetleyicisi pod’ları zaten izliyordu; “storage object in use protection” mekanizması bunun için var. Aynı denetleyici artık PVC üzerindeki Unused condition’ını da yönetiyor. Durum mantığı şöyle:

Senaryo Condition durumu Reason
PVC’ye referans veren terminal olmayan pod yok Unused=True NoPodsUsingPVC
En az bir çalışan veya beklemedeki pod PVC’ye referans veriyor Unused=False PodUsingPVC

Davranışın ayrıntılarında dikkat edilecek birkaç nokta var:

  • Sonlanmış pod’lar sayılmıyor. Succeeded veya Failed fazındaki bir pod PVC’yi kullanımda göstermeye devam etmiyor, yani restartPolicy: Never ile çalışan batch işleri tamamlandıktan sonra PVC’nin Unused=True olmasını engellemiyor.
  • Pending pod’lar sayılıyor. Karşılanması imkansız bir node selector yüzünden zamanlanamayan bir pod bile PVC’yi kullanıyor kabul ediliyor, volume’u kullanma niyeti yeterli.
  • Aynı PVC’ye birden çok pod referans veriyorsa condition, sonlanmamış son pod kaldırılana veya sonlanana kadar Unused=True durumuna geçmiyor.

lastTransitionTime ile boşta kalma süresini ölçmek

Diğer Kubernetes condition’ları gibi Unused da standart lastTransitionTime alanını taşıyor. Condition False‘tan True‘ya geçtiğinde bu alan, PVC’nin tam olarak ne zaman atıl hale geldiğini kaydediyor. “Bu PVC ne kadar süredir kullanılmıyor?” sorusunu böylece ek bir veri kaynağına başvurmadan yanıtlayabiliyorsunuz.

Alpha’dan Beta’ya ne değişti?

Özellik Kubernetes v1.36’da Alpha olarak tanıtılmıştı, PersistentVolumeClaimUnusedSinceTime feature gate’ini açıkça etkinleştirmek gerekiyordu. v1.37’deki Beta aşamasında feature gate varsayılan olarak açık geliyor, özellik de tam uçtan uca test kapsamına sahip.

Kullanım: adım adım doğrulama

Özellik v1.37’de varsayılan etkin olduğundan Unused condition’ı PVC’lerde kendiliğinden görünüyor. Önce bir PVC oluşturun:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi

Kısa bir süre sonra PVC condition’larını inceleyin:

kubectl get pvc my-data -o jsonpath='{.status.conditions[*]}' | jq.

Çıktıda durumu True, reason değeri NoPodsUsingPVC olan bir Unused condition görmelisiniz:

{
"lastProbeTime": null,
"lastTransitionTime": "2026-09-14T12:03:11Z",
"message": "No pods are currently referencing this PVC",
"reason": "NoPodsUsingPVC",
"status": "True",
"type": "Unused"
}

Ardından bu PVC’yi kullanan bir pod oluşturun:

apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: my-data

Condition’ı tekrar kontrol ettiğinizde Unused=False görmelisiniz:

kubectl get pvc my-data -o jsonpath='{.status.conditions[?(@.type=="Unused")].status}'

Çıktı: False

Pod’u silin, condition’ın yeniden Unused=True durumuna dönmesini bekleyin:

kubectl delete pod my-app
kubectl get pvc my-data -o jsonpath='{.status.conditions[?(@.type=="Unused")]}'

Condition yeniden NoPodsUsingPVC reason’ı ile Unused=True göstermeli.

Küme genelinde atıl PVC’leri bulmak

30 günden uzun süredir kullanılmayan tüm PVC’leri listelemek için aşağıdaki komutu kullanabilirsiniz. Komut, JSON işleme için jq aracına dayanıyor:

kubectl get pvc -A -o json | jq -r '
.items[]
| select(.status.conditions[]? | select(.type=="Unused" and.status=="True"))
| select(
(.status.conditions[] | select(.type=="Unused") |.lastTransitionTime) as $t
| (now - ($t | fromdateiso8601)) > (30 * 86400)
)
| "\(.metadata.namespace)/\(.metadata.name) unused since \(.status.conditions[] | select(.type=="Unused") |.lastTransitionTime)"
'

Sırada ne var?

Kubernetes projesi, geri bildirim ve benimsenme oranına bağlı olarak özelliği ileriki bir sürümde Genel Kullanıma (GA) taşımayı hedefliyor. Geri bildirimlerinizi kubernetes/kubernetes deposunda issue açarak iletebilirsiniz, tasarım ayrıntıları için de KEP-5541 belgesi referans alınabilir.

Özelliğin tasarım ve uygulamasına katkı veren isimler (alfabetik sırayla): Arvind Parekh (ArvindParekh), Hemant Kumar (gnufied), Jan Šafránek (jsafrane), Kevin Hannon (kannon92), Roman Bednář (RomanBednar). Katkı vermek isteyenler SIG Storage üzerinden topluluğa katılabilir, geri bildirim için genel Slack kanalı da kullanılabiliyor.

İlgili İçerikler

  • Kubernetes v1.36: Volume Group Snapshots Sonunda GA Oldu
  • Azure Kubernetes Fleet Manager’da Ağ Sınırı Kalkıyor: Benim Notlarım
  • Kubernetes v1.36: Haru ile Gelen Sakin Güç

Kaynaklar ve İleri Okuma

  • kubernetes.io
  • github.com
  • github.com
  • github.com
  • Kubernetes v1.37: Tracking When a PersistentVolumeClaim Was Last Used (Beta)
  • PersistentVolumeClaim API referansı
  • Persistent Volumes dokümantasyonu
  • KEP-5541: PersistentVolumeClaim last used time
  • kubernetes/kubernetes deposu
  • SIG Storage ve #sig-storage Slack kanalı (davet için slack.k8s.io)
  • jq komut satırı JSON işleyicisi
  • Kubernetes v1.37 Memory QoS Beta: Ne Değişti?
  • Kubernetes v1.37’de Rootless Mod Beta Aşamasına Geldi
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Azure App Service Linux'ta FastAPI Dağıtımı Sadeleşti
Azure App Service Linux'ta FastAPI Dağıtımı Sadeleşti9 Ağu 2026
BACPAC ve DACPAC: Benzerlikler ve Temel Farklar
BACPAC ve DACPAC: Benzerlikler ve Temel Farklar31 Ağu 2026
Azure SDK Release (July 2026)
Azure SDK Release (July 2026)29 Tem 2026
Microsoft.Testing.Platform ile Test Raporlama Rehberi
Microsoft.Testing.Platform ile Test Raporlama Rehberi17 Ağu 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket feature gate Kubernetes PVC storage object in use protection Unused condition
Önceki yazı

SQL Server datetime2 ve datetimeoffset: PG’den Geçiş

İlginizi Çekebilir

SQL Server datetime2 ve datetimeoffset: PG'den Geçiş
Aşkın KILIÇ 0

SQL Server datetime2 ve datetimeoffset: PG’den Geçiş

22/09/2026
Kota ile kapasite arasindaki farki vurgulayan kapak gorseli: kota yeterli gorunurken kapasite tahsis edilmemis
Aşkın KILIÇ 0

Azure West Europe’a Kaynak Açılamıyor: Vaka Analizi

21/09/2026
.NET 11 Performans: JIT Deabstraction ve Escape Analysis
Aşkın KILIÇ 1

.NET 11 Performans: JIT Deabstraction ve Escape Analysis

21/09/2026

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Kubernetes PVC Unused Condition ile Atıl Volume Tespiti
    22/09/2026 Kubernetes PVC Unused Condition ile Atıl Volume Tespiti
  • SQL Server datetime2 ve datetimeoffset: PG'den Geçiş
    22/09/2026 SQL Server datetime2 ve datetimeoffset: PG’den Geçiş
  • Silinen Synapse workspace ile hala rezerve kalan isim arasindaki iliskiyi gosteren kapak gorseli
    21/09/2026 Azure Synapse: Silinen Workspace Adı Serbest Kalmadı
  • Kota ile kapasite arasindaki farki vurgulayan kapak gorseli: kota yeterli gorunurken kapasite tahsis edilmemis
    21/09/2026 Azure West Europe’a Kaynak Açılamıyor: Vaka Analizi
  • Power Platform ortami ile Azure aboneligi arasindaki asenkron yetki yayilimini gosteren kapak gorseli
    21/09/2026 Power Platform PAYG: Kredi Hatası Kendiliğinden Düzeldi
  • Microsoft 365 Copilot Agent Evaluations: Ajan Kalitesi Ölçümü
    09/05/2026 Microsoft 365 Copilot Agent Evaluations: Ajan Kalitesi Ölçümü
  • Node.js Addon'larını .NET Native AOT ile Yazmak
    21/04/2026 Node.js Addon’larını .NET Native AOT ile Yazmak
  • GitHub Copilot Build Performance: Proje Bazlı Analiz Geldi
    08/05/2026 GitHub Copilot Build Performance: Proje Bazlı Analiz Geldi
  • GitHub Actions Nisan 2026 Güncellemeleri: Üç Küçük Ama Etkili Hamle
    03/04/2026 GitHub Actions Nisan 2026 Güncellemeleri: Üç Küçük Ama Etkili Hamle
  • Entra External ID'de Sosyal Giriş: Native Auth GA Oldu
    05/04/2026 Entra External ID’de Sosyal Giriş: Native Auth GA Oldu
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL bulut bilişim CI/CD CodeQL code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans Pull Request RAG SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 467 yazı 🏗️ Bulut Altyapı 375 yazı 🤖 Yapay Zeka 314 yazı 🔧 DevOps 259 yazı ☁️ Microsoft Azure 254 yazı 🔒 Güvenlik & Kimlik 214 yazı 🏢 Kurumsal Teknoloji 96 yazı 📊 Veri & Analitik 66 yazı 🐳 Konteyner & Kubernetes 61 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← SQL Server datetime2 ve dateti...
    →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS