Kubernetes ortamlarında karşılaşılan en yaygın 100 hatayı, sebeplerini ve çözümlerini bu içerikte bulabilirsiniz.
Aşşağıdaki kategorileri kapsamaktadır.
- Pod Yaşam Döngüsü Hataları: CrashLoopBackOff, ImagePullBackOff, OOMKilled
- Kaynak ve Zamanlama: PodUnschedulable, NodeNotReady, FailedScheduling
- Depolama Sorunları: PVC Pending, VolumeMountError, Multi-Attach hatası
- Ağ ve Servis: DNS çözümleme, Service endpoints, Ingress ve 404
- Güvenlik ve Erişim: RBAC, Secret/ConfigMap bulunamama, PSP ihlalleri
- Yapılandırma: YAML hataları, geçersiz etiketler, probe başarısızlıkları
- Ölçeklendirme: HPA sorunları, quota aşımları, node pressure
- İleri Düzey: CNI problemleri, webhook hataları, sertifika sorunları
| # | Hata | Sebep | Çözüm |
|---|---|---|---|
| 01 | CrashLoopBackOff | Uygulama çökmesi veya yanlış komut | Logları kontrol et, entrypoint veya config’i düzelt |
| 02 | ImagePullBackOff | Yanlış image adı veya secret sorunu | Image adını, registry bilgilerini doğrula |
| 03 | ErrImagePull | Image yok veya erişilemiyor | Image URL’ini veya kimlik bilgilerini düzelt |
| 04 | CreateContainerConfigError | Geçersiz env veya config | ConfigMap/Secret referanslarını kontrol et |
| 05 | CreateContainerError | Container oluşturma sırasında sorun | Image durumunu, volume mount’ları kontrol et |
| 06 | RunContainerError | Uygulama oluşturma sonrası çalışamadı | Logları, entrypoint’leri, izinleri incele |
| 07 | OOMKilled | Container memory limitini aştı | Limitleri ayarla, memory kullanımını optimize et |
| 08 | Back-off restarting failed container | Container sürekli başarısız oluyor | Logları kontrol et, backoff’u artır, hatayı düzelt |
| 09 | NodeNotReady | Node down veya erişilemiyor | Node’u yeniden başlat, kubelet’i kontrol et, altyapı sorunlarını incele |
| 10 | PodUnschedulable | Yetersiz kaynak veya kısıtlamalar | Node pool’ları, affinity’leri, quota’ları ayarla |
| 11 | NodeAffinity conflict | Pod’un affinity’si karşılanamıyor | Node etiketlerini veya affinity’leri yeniden yapılandır |
| 12 | PVC Pending | Eşleşen PV yok | PV’yi manuel oluştur veya dynamic provisioning’i etkinleştir |
| 13 | VolumeMountError | Mount path veya volume sorunu | Erişim modlarını, volume spec’leri kontrol et |
| 14 | DeadlineExceeded | Job deadline’ı aştı | Deadline’ı artır veya mantığı optimize et |
| 15 | InvalidImageName | Hatalı image referansı | Geçerli, versiyonlu image adları kullan |
| 16 | Secret not found | Eksik secret referansı | Gerekli secret’ı oluştur |
| 17 | ConfigMap not found | Eksik config map referansı | Oluştur veya referansı düzelt |
| 18 | NodeSelector mismatch | Selector için eşleşen node yok | Etiketleri/selector’ları ayarla |
| 19 | Invalid container port | Tanımlanan port expose edilmemiş | Container ve service port’unu eşleştir |
| 20 | FailedScheduling | Pod uygun node bulamıyor | Taint’leri, kaynakları, affinity’yi kontrol et |
| 21 | Liveness probe failed | Health check endpoint’i başarısız | Probe’u veya uygulama mantığını düzelt |
| 22 | Readiness probe failed | Pod servis vermeye hazır değil | Uygulamayı veya probe tanımını düzelt |
| 23 | Service not reachable | Yanlış selector veya port | Service spec’ini veya hedef etiketleri düzelt |
| 24 | DNS resolution failed | CoreDNS çökmesi veya config sorunu | CoreDNS’i yeniden başlat, DNS config’i düzelt |
| 25 | LoadBalancer pending | Cloud LB oluşturulmamış | Cloud entegrasyonunu ve izinleri kontrol et |
| 26 | RBAC access denied | Yetersiz kullanıcı izni | RoleBinding ile uygun roller ekle |
| 27 | Crash in InitContainer | Init script başarısız | Init container mantığını veya script’i düzelt |
| 28 | ImagePullSecrets error | Geçersiz registry secret | Secret’ı düzelt veya yeniden ekle |
| 29 | Invalid PVC access mode | PV modu ile uyumsuzluk | ReadWriteOnce vs Many’yi eşleştir |
| 30 | Unbound PersistentVolumeClaim | PVC, PV’ye bağlanamıyor | Eşleşen PV oluştur |
| 31 | Pod evicted | Node baskısı (memory, disk) | Node’ları scale et, kaynak limitlerini ayarla |
| 32 | Unauthorized error | Token veya cert süresi dolmuş | Kimlik bilgilerini yenile |
| 33 | Admission webhook denied pod | Policy validation başarısız | Policy’yi veya admission config’i düzelt |
| 34 | PodSecurityPolicy violation | Spec PSP tarafından engellenmiş | Policy’yi veya pod spec’ini ayarla |
| 35 | Pod quota exceeded | Namespace kaynak quota’sına ulaşıldı | Limitleri artır veya pod’ları temizle |
| 36 | API throttling | Çok fazla API isteği | Client-side throttling veya retry kullan |
| 37 | Invalid label format | Etiket geçersiz karakterler içeriyor | Etiketi regex’e uygun düzelt |
| 38 | Service endpoints not populated | Eşleşen pod yok | Pod selector’larını kontrol et |
| 39 | Helm release failed | Chart veya values hatası | Template’leri doğrula, dry-run kullan |
| 40 | Helm rollback failed | Önceki durum bozuk | Manuel olarak sil veya kaynakları düzelt |
| 41 | Node disk full | Pod logları veya volume’ler node’u doldurmuş | Log rotation kullan, temizleme job’ları |
| 42 | Invalid YAML | Manifest’te syntax hatası | YAML’ı lint ve validate et |
| 43 | Container exits immediately | Çalışan komut yok | Uygun entrypoint veya CMD kullan |
| 44 | Job doesn’t complete | Sessizce asılı kalıyor veya başarısız oluyor | backoffLimit ayarla, alerting ekle |
| 45 | DaemonSet pods not scheduled | Taint’ler tolere edilmiyor | Spec’e toleration ekle |
| 46 | Pod can’t mount ConfigMap | Volume doğru tanımlanmamış | volumeMount’ları ve volume’leri düzelt |
| 47 | Invalid node port range | Cluster port aralığının dışında | 30000-32767 arası portlar kullan |
| 48 | Pod terminated with exit code 137 | OOM veya SIGKILL | Logları kontrol et, memory’yi artır |
| 49 | Job history limits too high | Job’lar API server’ı tıkıyor | History limitlerini ayarla |
| 50 | Pod never terminates | Container sonsuza kadar çalışıyor | Timeout veya readiness check ekle |
| 51 | Invalid annotation key | Anahtar isimlendirme kurallarını ihlal ediyor | Annotation formatını düzelt |
| 52 | Deployment rollout stuck | Kullanılamayan replica’lar > threshold | Pod sağlığını ve quota’ları kontrol et |
| 53 | Service without selector | Endpoint oluşturulmamış | Manuel endpoint tanımla veya selector ekle |
| 54 | Container can’t write logs | Log path yok veya izin sorunu | Doğru path ayarla veya volume mount et |
| 55 | HorizontalPodAutoscaler not scaling | Metrics-server eksik | Metrics-server’ı kur |
| 56 | Deployment loops without change | Yanlış etiket eşleşmesi veya template hash | Doğru selector’ları kullan |
| 57 | Pod IP not reachable | CNI plugin sorunu | CNI loglarını kontrol et ve plugin’i yeniden başlat |
| 58 | ClusterIP service unreachable | IPTables sorunu | kube-proxy’yi yeniden başlat veya kuralları kontrol et |
| 59 | Controller-manager crashloop | Cert’ler veya leader election config | Config ve logları kontrol et |
| 60 | Too many open files | File descriptor limitine ulaşıldı | Container üzerinde ulimit’i artır |
| 61 | Pod fails DNS resolution inside cluster | kube-dns svc.cluster.local’ı çözemiyor | CoreDNS’i yeniden başlat ve config’i doğrula |
| 62 | HPA flapping up/down | Threshold’lar çok dar | Cool-down ve buffer aralıkları ekle |
| 63 | Node cordoned unexpectedly | Drift veya manuel işlem | Uncordon et veya script ile otomatize et |
| 64 | Evicted due to node reboot | Pod disruption budget yok | Kritik workload’lara PDB ekle |
| 65 | Service has no endpoints | Pod’lar selector’larla eşleşmiyor | Etiketleri veya selector’ları düzelt |
| 66 | Service has wrong targetPort | Service portu container ile eşleşmiyor | Service spec’ini düzelt |
| 67 | Pod fails due to image tag latest |
Eski image cache’lenmiş | Versiyonlu tag’ler kullan |
| 68 | Kubelet not registering node | Firewall veya DNS bloğu | Portları aç, DNS’i doğrula |
| 69 | API server not reachable | Network veya cert sorunu | Control plane ve network’ü kontrol et |
| 70 | Pod takes too long to start | Init gecikmesi, ağır image | Image boyutunu ve probe’ları optimize et |
| 71 | Pod fails due to PodToleratesNodeTaints | Node üzerindeki taint’ler pod tarafından tolere edilmiyor | Pod spec’ine uygun toleration’lar ekle |
| 72 | failed to pull image but image exists | Image pull secret’ları yanlış yapılandırılmış | imagePullSecrets’ı doğrula ve düzelt |
| 73 | Ingress returns 404 despite healthy service | Yanlış path veya eksik backend kuralı | Ingress path config ve backend mapping’i kontrol et |
| 74 | Persistent Volume stuck in Terminating | Finalizer silmeyi engelliyor | Finalizer’ı manuel kaldır veya force delete |
| 75 | Readiness probe fails but container healthy | Probe path veya port yanlış | Readiness probe URL/port’unu düzelt |
| 76 | Pods stuck due to affinity rules | Aşırı katı affinity/anti-affinity | Affinity kurallarını gevşet veya toleration ekle |
| 77 | Node pressure eviction | DiskPressure veya MemoryPressure durumu | Diski temizle, node pool’u scale et veya limitleri ayarla |
| 78 | No routes found in Calico networking | BGP yanlış yapılandırılmış veya bozuk | Calico node’larını yeniden başlat veya BGP config’i resetle |
| 79 | rpc error: code = Unknown on API calls | Controller’dan gRPC çağrısı beklenmedik şekilde başarısız | API’ye bağımlı controller’ları yeniden başlat |
| 80 | Failed attaching volume: Multi-Attach error | Volume başka bir pod tarafından kullanılıyor | Volume’un ReadWriteMany desteklediğinden emin ol veya ayır |
| 81 | sysctl not allowed | Pod desteklenmeyen sysctl’ler kullanıyor | Kubelet config’ine allowed sysctl’leri ekle |
| 82 | hostname unknown errors in containers | DNS çözümlemesi eksik veya CoreDNS çökmüş | CoreDNS’i yeniden başlat, resolv.conf’u doğrula |
| 83 | CrashLoopBackOff due to failed initContainer | Init container başarısız, ana asla başlamıyor | initContainer mantığını düzelt veya kaldır |
| 84 | volumeMount fails due to read-only mode | Mount readOnly olarak tanımlanmış ama yazma deneniyor | Yazma gerekiyorsa readOnly: false yap |
| 85 | NetworkPolicy blocks egress to internet | Deny-all policy mevcut | Gerekli CIDR’leri veya belirli FQDN’leri izin ver |
| 86 | Secret not found during deploy | Namespace uyumsuzluğu veya race condition | Secret’ın doğru namespace’te olduğundan emin ol |
| 87 | ConfigMap is immutable error | Immutable ConfigMap’i güncellemeye çalışılıyor | ConfigMap’i sil ve yeniden oluştur |
| 88 | Pod stuck Pending due to NoVolumeZoneConflict | PVC, node’da mevcut olmayan bir zone talep etti | Zonal PVC’ler kullan veya eşleşen zone’lara schedule et |
| 89 | API server connection refused | Bozuk kubeconfig veya API çalışmıyor | kubeconfig context’ini ve cluster durumunu doğrula |
| 90 | Sidecar container causes pod to never terminate | Ana container çıkıyor, sidecar sonsuza kadar çalışıyor | Terminate için sidecar lifecycle hook’ları kullan |
| 91 | HPA not scaling pods | Metrics server raporlama yapmıyor | metrics-server’ı kur/doğrula |
| 92 | kubectl get hangs indefinitely | API server yüklenmiş veya DNS yanlış yapılandırılmış | CoreDNS’i yeniden başlat veya master node sağlığını kontrol et |
| 93 | Logs not available after pod crash | Ephemeral storage dolu veya log rotation yok | Merkezi logging kullan veya persistent log’lar |
| 94 | cert expired on Kubelet or API server | Cluster sertifikası rotate edilmemiş | kubeadm certs renew veya otomasyon ile yenile |
| 95 | Webhook validation timeout | Webhook backend yavaş veya yanlış yapılandırılmış | Webhook servisini düzelt veya timeout’u artır |
| 96 | PodDisruptionBudget blocks rollout | Disrupt edilmesine izin verilen pod sayısı çok az | Rollout sırasında PDB threshold’larını ayarla |
| 97 | Pod stuck due to unresolved hostPath mount | Host path node’da eksik | Host path’in var olduğundan emin ol veya PV kullan |
| 98 | containerCreating forever with sandbox issue | Containerd veya Docker sandbox takılmış | Container runtime’ı veya node’u yeniden başlat |
| 99 | Kube-proxy fails on startup | IPTables kuralları bozuk | iptables’ı flush ve restore et veya node’u reboot et |
| 100 | QoS mismatch causes unexpected eviction | Yanlış limits/requests kombinasyonu | Guaranteed/burstable sınıflarını bilinçli kullan |