Aracılığıyla paylaş


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 -Ave İ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

  1. Pod boşaltmayı etkinleştirmek için PDB'yi ayarlayın. Genel olarak, izin verilen kesinti veya Running pods / Replicas parametresi tarafından Min Available / Max unavailable denetlener. PARAMETRESIni Min 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.
  2. 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

  1. PDB'nin kubectl get pdb <pdb-name> -n <pdb-namespace> -o yaml > pdb_backup.yamlyedeğini alın ve ARDıNDAN PDB'yi kubectl delete pdb <pdb-name> -n /<pdb-namespace>silin. Yükseltme tamamlandıktan sonra PDB'yi kubectl apply -f pdb_backup.yamlyeniden dağıtabilirsiniz.
  2. 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

  1. 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.

  2. 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.