Налагодження контейнерів ініціалізації
Ця сторінка показує, як розвʼязувати проблеми, повʼязані з запуском контейнерів ініціалізації. Приклади команд нижче вказують на Pod як <pod-name>
та на контейнери ініціалізації як <init-container-1>
та <init-container-2>
.
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Для перевірки версії введітьkubectl version
.- Ви повинні бути знайомі з основами контейнерів ініціалізації.
- Ви повинні Налаштувати контейнер ініціалізації.
Перевірка стану контейнерів ініціалізації
Показ статусу вашого Podʼа:
kubectl get pod <pod-name>
Наприклад, статус Init:1/2
вказує на те, що один з двох контейнерів ініціалізації успішно завершено:
NAME READY STATUS RESTARTS AGE
<pod-name> 0/1 Init:1/2 0 7s
Дивіться Розуміння статусів Podʼа для отримання прикладів значень статусу та їх значень.
Отримання деталей про контейнери ініціалізації
Показ більш детальної інформації про виконання контейнерів ініціалізації:
kubectl describe pod <pod-name>
Наприклад, Pod з двома контейнерами ініціалізації може показати наступне:
Init Containers:
<init-container-1>:
Container ID: ...
...
State: Terminated
Reason: Completed
Exit Code: 0
Started: ...
Finished: ...
Ready: True
Restart Count: 0
...
<init-container-2>:
Container ID: ...
...
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 1
Started: ...
Finished: ...
Ready: False
Restart Count: 3
...
Ви також можете отримувати доступ до статусів контейнерів ініціалізації програмно, читаючи поле status.initContainerStatuses
у Pod Spec:
kubectl get pod nginx --template '{{.status.initContainerStatuses}}'
Ця команда поверне ту саму інформацію, що і вище у форматі JSON.
Отримання логів з контейнерів ініціалізації
Вкажіть імʼя контейнера ініціалізації разом з імʼям Podʼа, щоб отримати його логи.
kubectl logs <pod-name> -c <init-container-2>
Контейнери ініціалізації, що виконують скрипт оболонки, друкують команди в міру їх виконання. Наприклад, це можна зробити в Bash, запустивши set -x
на початку скрипта.
Розуміння статусів Podʼа
Статус Podʼа, що починається з Init:
, узагальнює стан виконання контейнерів ініціалізації. У таблиці нижче наведено деякі приклади значень статусу, які ви можете бачити під час налагодження контейнерів ініціалізації.
Статус | Значення |
---|---|
Init:N/M | Pod має M контейнерів ініціалізації, і N вже завершено. |
Init:Error | Контейнер ініціалізації не вдалося виконати. |
Init:CrashLoopBackOff | Контейнер ініціалізації неперервно виходить з ладу. |
Pending | Pod ще не розпочав виконувати контейнер ініціалізації. |
PodInitializing або Running | Pod вже завершив виконання контейнерів ініціалізації. |