PDB'lerin neden olduğu çıkarma hatalarından kaynaklanan UpgradeFailed hatalarını giderme
Bu makalede, bir Azure Kubernetes Service (AKS) kümesini yükseltmeye çalıştığınızda oluşan Pod Kesinti bütçelerinin (PDB) neden olduğu çıkarma hatalarından kaynaklanan UpgradeFailed hatalarını tanımlama ve çözme işlemi açıklanır.
Önkoşullar
Bu makale Için Azure CLI sürüm 2.0.65 veya sonraki bir sürüm gerekir. Sürüm numarasını bulmak için komutunu çalıştırın az --version
. Azure CLI'yı yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.
Yükseltme işlemi hakkında daha ayrıntılı bilgi için Azure Kubernetes Service (AKS) kümesini yükseltme bölümündeki "AKS kümesini yükseltme" bölümüne bakın.
Belirtiler
AKS kümesi yükseltme işlemi aşağıdaki hata iletisiyle başarısız oluyor:
Kod: UpgradeFailed
İleti: Pod <pod> adı> çıkarılırken düğüm <düğüm adı boşaltılamadı. Çıkarma işlemi Çok Fazla İstek hatasıyla başarısız oldu. Bunun nedeni genellikle kısıtlayıcı pod kesinti bütçesi (PDB) ilkesidir. Bkz.http://aka.ms/aks/debugdrainfailures
. Özgün hata: Kubernetes API Sunucusuna API çağrısı başarısız oldu.
Neden
Pod, Pod Kesinti Bütçesi (PDB) ilkesi tarafından korunuyorsa bu hata oluşabilir. Bu durumda pod boşaltılmaya karşı koyuluyor.
Bu durumu test etmek için komutunu çalıştırın kubectl get pdb -A
ve İzin Verilen Kesinti değerini denetleyin. Değer 1 veya daha büyük olmalıdır. Daha fazla bilgi için bkz. Pod kesintisi bütçelerini kullanarak kullanılabilirliği planlama.
İzin Verilen Kesinti değeri 0 ise, yükseltme işlemi sırasında düğüm boşaltma işlemi başarısız olur.
Bu sorunu çözmek için aşağıdaki çözümlerden birini kullanın.
Çözüm 1: Podların boşaltılabilmesini sağlama
- Pod boşaltmayı etkinleştirmek için PDB'yi ayarlayın. Genel olarak, izin verilen kesinti veya
Running pods / Replicas
parametresi tarafındanMin Available / Max unavailable
denetlener. PARAMETRESIniMin Available / Max unavailable
PDB düzeyinde değiştirebilir veya İzin Verilen Kesinti değerini 1 veya daha büyük bir değere göndermek için sayısınıRunning pods / Replicas
artırabilirsiniz. - AKS kümesini daha önce yükseltmeye çalıştığınız sürüme yükseltmeyi yeniden deneyin. Bu işlem bir mutabakatı tetikler.
Çözüm 2: PDB'yi yedekleme, silme ve yeniden dağıtma
- PDB'nin
kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yaml
yedeğini alın ve ARDıNDAN PDB'yikubectl delete pdb <pdb-name> -n /<pdb-namespace>
silin. Yükseltme tamamlandıktan sonra PDB'yikubectl apply -f pdb_backup.yaml
yeniden dağıtabilirsiniz. - AKS kümesini daha önce yükseltmeye çalıştığınız sürüme yükseltmeyi yeniden deneyin. Bu işlem bir mutabakatı tetikler.
Çözüm 3: Boşaltılabilen podları silme
Boşaltılabilen podları silin.
Not
Podlar bir dağıtım veya StatefulSet tarafından oluşturulduysa, bir ReplicaSet tarafından denetlenecektir. Bu durumda dağıtımı veya StatefulSet'i silmeniz gerekebilir. Bunu yapmadan önce bir yedekleme yapmanızı öneririz:
kubectl get <kubernetes-object> <name> -n <namespace> -o yaml > backup.yaml
.AKS kümesini daha önce yükseltmeye çalıştığınız sürüme yükseltmeyi yeniden deneyin. Bu işlem bir mutabakatı tetikler.
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin