Skip to content
Dokumentatsiya
Troubleshoot Kubernetes Pods

Kubernetes podlari bilan bog'liq muammolarni qanday hal qilish mumkin?

k8s

Ushbu blogda siz kubernetes podlari bilan bog'liq muammolarni bartaraf etish va podalar ichidagi konteynerlar bilan bog'liq muammolarni bartaraf etishni o'rganasiz. Agar siz Kubernetes ko'nikmalariga ega bo'lgan devops muhandisi bo'lishga harakat qilmoqchi bo'lsangiz, pod troubleshootingni tushunish juda muhimdir.

Aksariyat hollarda siz pod eventini tavsiflash orqali pod xatosi tafsilotlarini olishingiz mumkin. Xato xabari bilan siz pod ishdan chiqishining sababini aniqlashingiz va uni tuzatishingiz mumkin.

Pod xatolarini qanday tuzatish mumkin?

Podlardagi muammolarni bartaraf etishning birinchi bosqichi pod statusini olishdir.

kubectl get pods
# namespace bo'lsa
kubectl get pods -n my-namespace

Agar muammolar bo'lsa quyidagi chiqish holat ostidagi xato holatlarini ko'rsatadi.

NAME                            READY   STATUS                       RESTARTS   AGE
config-service                  0/1     CreateContainerConfigError   0          20s
image-service-fdf74c785-9znfd   0/1     InvalidImageName             0          30s
secret-pod                      0/1     ContainerCreating            0          15s

Endi siz xato turini bilganingizdan so'ng, keyingi qadam alohida podmi tavsiflash(describe) va pod xatosiga sabab bo'lgan sababni aniqlash uchun eventlarni ko'rib chiqishdir.

Masalan

kubectl describe pod config-service

Bu yerda config-service pod nomidir. Keling, har xil turdagi pod xatolarini qanday tuzatish va debug qilishni batafsil ko'rib chiqaylik.

k8s

Pod xatolarining turlari

Types of Pod Errors

Pod nosozliklarini tuzatishga kirishdan oldin, har xil turdagi Pod xatolarini tushunish kerak.

Container & Image Errorlar

Ushbu xato holatlarining barchasi kubernetes container package & Kubernetes image packagening bir qismidir

Quyida xato tavsiflari bilan rasmiy(official) Kubernetes pod xatolar ro'yxati keltirilgan.

Pod Xato TuriXato Tavsifi
ErrImagePullKubernetes manifestda ko'rsatilgan imageni pull qilib ololmasa.
ErrImagePullBackOffKonteyner pull qilib bo'lmadi, kubelet imageni pull qilishdan voz kechmoqda
ErrInvalidImageNameNotog'ri image nomi ko'rsatilgan.
ErrImageInspectImage tekshirib bo'lmadi.
ErrImageNeverPullNode-da kerakli image mavjud emas va PullPolicy NeverPullImage sifatida sozlangan.
ErrRegistryUnavailableRegistry serveriga ulanishda HTTP xatosi yuz berdi.
ErrContainerNotFoundKo'rsatilgan konteyner mavjud emas yoki kubelet tomonidan boshqarilmaydi, deklaratsiya qilingan pod ichida.
ErrRunInitContainerKonteyner boshlang'ich ishga tushirish muvaffaqiyatsiz bo'ldi.
ErrRunContainerPodning konteynerlari noto'g'ri sozlash tufayli muvaffaqiyatli ishga tushmaydi.
ErrKillContainerPodning hech bir konteyneri muvaffaqiyatli o'chirilmadi.
ErrCrashLoopBackOffKonteyner to'xtadi. Kubelet uni qayta ishga tushirishga urinmaydi.
ErrVerifyNonRootKonteyner yoki image ildiz (root) huquqlari bilan ishga tushirishga urindi.
ErrCreatePodSandboxPod sandbox yaratish muvaffaqiyatsiz bo'ldi.
ErrConfigPodSandboxPod sandbox konfiguratsiyasi olinmadi.
ErrKillPodSandboxPod sandbox muvaffaqiyatli to'xtatilmadi.
ErrSetupNetworkTarmoqni boshlash muvaffaqiyatsiz bo'ldi.
ErrTeardownNetworkTarmoqni buzish muvaffaqiyatsiz bo'ldi.

Keling, ba'zi eng keng tarqalgan pod xatolarini va ularni qanday tuzatishni ko'rib chiqaylik.

Troubleshoot ErrImagePullBackOff

pods kubectl get pods
NAME                                READY   STATUS             RESTARTS   AGE
nginx-deployment-599d6bdb7d-lh7d9   0/1     ImagePullBackOff   0          7m17s

Agar pod holatida ErrImagePullBackOffni ko'rsangiz, bu quyidagi sabablarga ko'ra bo'lishi mumkin.

  • Belgilangan image container registryda mavjud emas.
  • Image nomi yoki tegida xato.
  • Registry credentialslar muammolari tufayli berilgan registrdan imageni olish ruxsati rad etildi.

Agar siz pod eventlarini tekshirsangiz, ErrImagePull xatosini va undan keyin ErrImagePullBackOffni ko'rasiz. Bu shuni anglatadiki, kubelet imageni qayta-qayta tortib olishga harakat qilishni to'xtatadi.

kubectl describe pod <pod-nomi>

Xatolik

Warning  Failed     24m (x4 over 25m)    kubelet            Error: ErrImagePull
Normal   BackOff    23m (x6 over 25m)    kubelet            Back-off pulling image "ngasdinx:latest"
Warning  Failed     29s (x110 over 25m)  kubelet            Error: ImagePullBackOff

Troubleshoot Error: InvalidImageName

pods kubectl get pod
NAME                                READY   STATUS             RESTARTS   AGE
nginx-deployment-6f597fc4cd-j86mm   0/1     InvalidImageName   0          7m26s

Agar siz manifestda imagening URL manzilini noto'g'ri ko'rsatsangiz, InvalidImageName xatosini olasiz.

Misol uchun, agar sizda private container registringiz bo'lsa va siz https bilan image nomini eslatib o'tsangiz, u InvalidImageName xatosini keltirib chiqaradi. Rasm nomini httpssiz belgilashingiz kerak