Kubernetes podlari bilan bog'liq muammolarni qanday hal qilish mumkin?
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.
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 Turi | Xato Tavsifi |
---|---|
ErrImagePull | Kubernetes manifestda ko'rsatilgan imageni pull qilib ololmasa. |
ErrImagePullBackOff | Konteyner pull qilib bo'lmadi, kubelet imageni pull qilishdan voz kechmoqda |
ErrInvalidImageName | Notog'ri image nomi ko'rsatilgan. |
ErrImageInspect | Image tekshirib bo'lmadi. |
ErrImageNeverPull | Node-da kerakli image mavjud emas va PullPolicy NeverPullImage sifatida sozlangan. |
ErrRegistryUnavailable | Registry serveriga ulanishda HTTP xatosi yuz berdi. |
ErrContainerNotFound | Ko'rsatilgan konteyner mavjud emas yoki kubelet tomonidan boshqarilmaydi, deklaratsiya qilingan pod ichida. |
ErrRunInitContainer | Konteyner boshlang'ich ishga tushirish muvaffaqiyatsiz bo'ldi. |
ErrRunContainer | Podning konteynerlari noto'g'ri sozlash tufayli muvaffaqiyatli ishga tushmaydi. |
ErrKillContainer | Podning hech bir konteyneri muvaffaqiyatli o'chirilmadi. |
ErrCrashLoopBackOff | Konteyner to'xtadi. Kubelet uni qayta ishga tushirishga urinmaydi. |
ErrVerifyNonRoot | Konteyner yoki image ildiz (root) huquqlari bilan ishga tushirishga urindi. |
ErrCreatePodSandbox | Pod sandbox yaratish muvaffaqiyatsiz bo'ldi. |
ErrConfigPodSandbox | Pod sandbox konfiguratsiyasi olinmadi. |
ErrKillPodSandbox | Pod sandbox muvaffaqiyatli to'xtatilmadi. |
ErrSetupNetwork | Tarmoqni boshlash muvaffaqiyatsiz bo'ldi. |
ErrTeardownNetwork | Tarmoqni 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 ErrImagePullBackOff
ni 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 ErrImagePullBackOff
ni 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