« Tüm yayınlar

AKS'te MemoryPressure Tahliyesi ve Azure Disk CSI Kilitlenmesi Nasıl Çözülür

AKS'te MemoryPressure kaynaklı pod tahliyesi ve Azure Disk CSI VolumeAttachment kilitlenmesinin kök nedeni, acil müdahale ve kalıcı çözüm adımları.

AKS node'larında MemoryPressure eşiği aşıldığında kubelet önce BestEffort podları tahliye eder; kaynak isteği tanımlanmamış stateful workload'lar genellikle ilk kurban olur. Pod zorla sonlandırıldığında Azure Disk CSI driver'ın external-attacher sidecar'ı VolumeAttachment'i temiz şekilde çözemez ve nesne Terminating durumunda takılı kalır, bu da podun yeni node'da 'Multi-Attach' hatasıyla başlamasını engeller.

Bu durum PodDisruptionBudget yoksa tüm Deployment'ı aynı anda düşürebilecek bir kademeli kesintiye dönüşebilir; autoscaler yeni node açsa bile takılı VolumeAttachment PV'nin bağlanmasını engeller. Kalıcı çözüm; her container için requests/limits tanımlamak (ideal olarak Guaranteed QoS için requests==limits), AKS KubeletConfig üzerinden soft/hard eviction eşiklerini node gerçekliğine göre ayarlamak ve PDB eklemektir.

Önleme tarafında OPA/Gatekeeper politikası ile kaynak isteği olmayan podların admission aşamasında reddedilmesi, Checkov ile IaC taramasının CI/CD'ye eklenmesi ve node pool boyutlandırmasının toplam pod memory request'inin allocatable belleğin %70'ini aşmayacak şekilde yapılması öneriliyor. Takılı VolumeAttachment'lar için finalizer'ın manuel temizlenmesi yalnızca diskin gerçekten hiçbir VM'e bağlı olmadığı Azure Portal'dan doğrulandıktan sonra yapılmalı.