Pending Pod
- Docker & Kubernetes kursu
- Orta seviye
- Ders 76/82
- 4 dk
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 yokNode 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
# buraya yazÖrnek çözüm
kubectl get pods --field-selector status.phase=Pending
kubectl get pod api-xyz -o jsonpath='{.spec.containers[0].resources.requests}'
kubectl describe node worker-1Beklenen çı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.
kubectl get pods --field-selector status.phase=____
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ı |