AKS kümelerinde bellek doygunluğu sorunlarını giderme
Bu makalede bellek doygunluğu sorunlarını giderme yöntemleri ele alınmaktadır. Bellek doygunluğu, en az bir uygulama veya işlemin bir kapsayıcı konağı tarafından sağlanabilir bellekten daha fazla belleğe ihtiyacı varsa veya konak kullanılabilir belleği tüketiyorsa oluşur.
Önkoşullar
- Kubernetes kubectl komut satırı aracı. Azure CLI kullanarak kubectl yüklemek için az aks install-cli komutunu çalıştırın.
Belirtiler
Aşağıdaki tabloda, bellek doygunluğunun yaygın belirtileri özetlenmiştir.
Belirti | Açıklama |
---|---|
Zamanlanamayan podlar | Düğüm ayarlanan bellek sınırına yakınsa ek podlar zamanlanamaz. |
Pod çıkarma | Bir düğümün belleği tükeniyorsa kubelet podları çıkarabilir. Denetim düzlemi, kaynakları olan diğer düğümlerde çıkarılan podları yeniden zamanlamaya çalışsa da, diğer düğümlerin bu podları çalıştırmak için yeterli belleğe sahip olduğunu garanti etmemektedir. |
Düğüm hazır değil | Bellek doygunluğu, yanıt vermemeye ve kubelet containerd sonunda düğüm hazırlığı sorunlarına neden olabilir. |
Yetersiz bellek (OOM) sonlandırma | Pod çıkarma işlemi bir düğüm sorununu önleyemiyorsa bir OOM sorunu oluşur. |
Sorun giderme denetim listesi
Bellek doygunluğunu azaltmak için etkili izleme araçlarını kullanın ve en iyi yöntemleri uygulayın.
1. Adım: Bellek doygunluğu olan düğümleri tanımlama
Bellek doygunluğu olan düğümleri tanımlamak için aşağıdaki yöntemlerden birini kullanın:
Web tarayıcısında Azure portalında AKS'nin Container Insights özelliğini kullanın.
Konsolda Kubernetes komut satırı aracını (kubectl) kullanın.
Container Insights, AKS'de kapsayıcı iş yükü performansını izleyen bir özelliktir. Daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) kümesi için Kapsayıcı içgörülerini etkinleştirme.
Kubernetes hizmetleri listesinde kümenizin adını seçin.
Kümenizin gezinti bölmesinde İzleme başlığını bulun ve İçgörüler'i seçin.
Uygun Zaman Aralığı değerini ayarlayın.
Düğümler sekmesini seçin.
Ölçüm listesinde Bellek çalışma kümesi (Allocatable'dan hesaplanır) öğesini seçin.
Yüzdebirlik dilim seçicisinde örneği En Fazla olarak ayarlayın ve ardından En Fazla % sütun etiketini iki kez seçin. Bu eylem, tablo düğümlerini kullanılan en yüksek bellek yüzdesine göre en yüksekten en düşüğe doğru sıralar.
İlk düğüm en yüksek bellek kullanımına sahip olduğundan, düğümde çalışan podların bellek kullanımını araştırmak için bu düğümü seçin.
Not
Podlar için CPU veya bellek kullanımı yüzdesi, kapsayıcı için belirtilen CPU isteğini temel alır. Düğüm için CPU veya bellek kullanımı yüzdesini temsil etmez. Bu nedenle podlar için CPU veya bellek kullanımı yüzdesi yerine gerçek CPU veya bellek kullanımına bakın.
Artık yüksek bellek kullanan podları tanımladığınıza göre, pod üzerinde çalışan uygulamaları tanımlayabilirsiniz.
2. Adım: Bellek doygunluğunu önlemek için en iyi yöntemleri gözden geçirin
Bellek doygunluğunu önlemeye yönelik en iyi yöntemleri uygulamayı öğrenmek için aşağıdaki tabloyu gözden geçirin.
En iyi uygulama | Açıklama |
---|---|
Bellek isteklerini ve sınırlarını kullanma | Kubernetes, bir kapsayıcı için en düşük bellek boyutunu (istek) ve en yüksek bellek boyutunu (sınırı) belirtme seçenekleri sağlar. Podlarda sınırlar yapılandırarak düğümdeki bellek baskısını önleyebilirsiniz. Çalışan tüm podların toplam sınırlarının düğümün kullanılabilir belleğini aşmadığından emin olun. Bu duruma aşırı uygunluk denir. Kubernetes zamanlayıcı, Hizmet Kalitesi (QoS) aracılığıyla belirli isteklere ve sınırlara göre kaynakları ayırır. Uygun sınırlar olmadan, zamanlayıcı tek düğümde çok fazla pod zamanlayabilir. Bu, sonunda düğümün çökmesine neden olabilir. Ayrıca kubelet podları çıkarsa da bellek kullanımının tanımlı isteklerini aştığı podlara öncelik verir. Bellek isteğini gerçek kullanıma yakın olarak ayarlamanızı öneririz. |
Yatay pod otomatik ölçeklendiricisini etkinleştirme | Kümeyi ölçeklendirerek, bellek doygunluğunu önlemek üzere istekleri çok sayıda pod arasında dengeleyebilirsiniz. Bu teknik, ilgili düğümdeki bellek ayak izini azaltabilir. |
Benzeşim karşıtı etiketleri kullanma | Belleğin tasarım gereği sınırsız olduğu senaryolarda, iş yükünü belirli düğümlerle sınırlandırabilen düğüm seçicileri ve benzeşim veya benzeşim karşıtı etiketleri kullanabilirsiniz. Benzeşim karşıtı etiketleri kullanarak diğer iş yüklerinin bu düğümlerde pod zamanlamasını engelleyebilirsiniz. Bu, bellek doygunluğu sorununu azaltır. |
Daha yüksek SKU VM'leri seçme | Daha fazla rastgele erişim belleğine (RAM) sahip sanal makineler (VM) yüksek bellek kullanımını işlemek için daha uygundur. Bu seçeneği kullanmak için yeni bir düğüm havuzu oluşturun, düğümleri kuşatarak zamanlanamaz duruma getirin ve mevcut düğüm havuzunu boşaltın. |
Sistem ve kullanıcı iş yüklerini yalıtma | Uygulamalarınızı bir kullanıcı düğümü havuzunda çalıştırmanızı öneririz. Bu yapılandırma, Kubernetes'e özgü podları sistem düğümü havuzuna ayırabilmenizi ve küme performansını koruyabilmenizi sağlar. |
Daha Fazla Bilgi
Azure Kubernetes Service (AKS) en iyi yöntemleri hakkında daha fazla bilgi edinin
Kapsayıcı içgörüleriyle Kubernetes kümelerinizin performansını izleyin
Üçüncü taraf bilgileri hakkında yasal uyarı
Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.
Üçüncü tarafla iletişim sorumluluk reddi
Microsoft, bu konu hakkında ek bilgi bulmanıza yardımcı olmak için üçüncü taraf iletişim bilgileri sağlar. Bu iletişim bilgileri önceden haber verilmeksizin değiştirilebilir. Microsoft, üçüncü taraf iletişim bilgilerinin doğruluğunu garanti etmez.
Yardım için bize ulaşın
Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.