CodeBlanks Logo Icon CodeBlanks

Pending Pod

Pending durumundaki Pod'ları incelemeyi öğrenirsin.

Pending pod

Pendingde kalan pod, zamanlayıcının onu hiçbir node'a yerleştiremediğini (ya da image'ın indiriliyor olduğunu) gösterir. Olaydaki FailedScheduling mesajı nedeni söyler:

0/3 nodes are available:
  3 Insufficient cpu.                                  # requests çok büyük
  1 node(s) had untolerated taint {node-role...}       # taint
  2 node(s) didn't match Pod's node affinity/selector  # nodeSelector
  pod has unbound immediate PersistentVolumeClaims     # depolama yok

Node kapasitesini incelemek

kubectl describe node, ayrılabilir kaynakları ve node'daki pod'ların toplam isteklerini yüzde olarak gösterir. Pod'un istediği kaynak boş kapasiteden büyükse ya istek küçültülür, ya node eklenir:

$ kubectl describe node worker-1 | grep -A6 "Allocated resources"
Allocated resources:
  Resource           Requests      Limits
  cpu                1850m (92%)   3 (150%)
  memory             3200Mi (81%)  4Gi (104%)
$ kubectl get pod api-xyz -o jsonpath='{.spec.containers[0].resources.requests}'
{"cpu":"500m","memory":"1Gi"}

Uygulama Neden yerleşmiyor?

Üç komut yaz: Pending fazındaki pod'ları listele; api-xyz pod'unun isteklerini jsonpath='{.spec.containers[0].resources.requests}' ile yazdır; worker-1 node'unu ayrıntılı göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get pods --field-selector status.phase=Pending
kubectl get pod api-xyz -o jsonpath='{.spec.containers[0].resources.requests}'
kubectl describe node worker-1

Beklenen çıktı

NAME      READY   STATUS    RESTARTS   AGE
api-xyz   0/1     Pending   0          4m
{"cpu":"500m","memory":"1Gi"}
Name:               worker-1
Allocated resources:
  memory             3200Mi (81%)  4Gi (104%)

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 "3 Insufficient memory" mesajı için doğru ilk adım hangisidir?

  • Namespace'i değiştirmek
  • Pod'un requests.memory değerini ve node'ların ayrılabilir belleğini karşılaştırmak Doğru cevap
  • Pod'u silip yeniden oluşturmak
  • Image'ı küçültmek

Açıklama: Zamanlayıcı kullanıma değil, isteklere (requests) bakar.

2 Yalnızca Pending pod'ları listele.

Soru
kubectl get pods --field-selector status.phase=____
Cevap
kubectl get pods --field-selector status.phase=Pending

Açıklama: status.phase pod fazıdır.

3 Mesajları eşleştir.

Kavram Anlamı
Insufficient cpu İstek kapasiteden büyük
untolerated taint Node itiyor
node affinity/selector Uygun etiketli node yok
unbound PersistentVolumeClaims Depolama bağlanmadı

Orta seviye bölümündeki tüm dersler