Як налагодити "ImagePullBackOff"?


122

Раптом я не можу розгорнути деякі зображення, які можна було розгорнути раніше. Я отримав такий статус стручка:

[root@webdev2 origin]# oc get pods 
NAME                      READY     STATUS             RESTARTS   AGE 
arix-3-yjq9w              0/1       ImagePullBackOff   0          10m 
docker-registry-2-vqstm   1/1       Running            0          2d 
router-1-kvjxq            1/1       Running            0          2d 

Додаток просто не запуститься. Стручок не намагається запустити контейнер. На сторінці події я потрапив Back-off pulling image "172.30.84.25:5000/default/arix@sha256:d326. Я перевірив, що я можу витягнути зображення за допомогою тега docker pull.

Я також перевірив журнал останнього контейнера. Його закрили чомусь. Я думаю, що стручок повинен хоча б спробувати перезапустити його.

У мене не вистачає ідей для налагодження проблем. Що я можу перевірити ще?


Це налаштування декількох машин? Якщо так, перевірте, ви можете витягнути з усіх вузлів. Якщо ні, підключіть реєстрацію до --loglevel = 5 на вузлі та перезапустіть - ви повинні побачити інформацію, надруковану, що описує спробу витягнути зображення та будь-які помилки.
Клейтон

Що вийшло після перезавантаження з loglevel = 5?
lvthillo

2
Ви вирішили проблему? хтось може пояснити це питання "ImagePullBackOff"? (зображення існують у моїх «зображеннях докерів»)
ItayB

Я отримав це, використовуючи неправильну область для мого репо. Я забув додати eu. до --image = eu.gcr.io / $ PROJECT_ID / ...
Клеменс Толбум

У моєму випадку це неправильна назва тегу для переданого зображення. Я змінив назву TAG, яка вирішила проблему.
Тара Прасад Гурунг

Відповіді:


120

Ви можете використовувати синтаксис ' опису стручка '

Для використання OpenShift:

oc describe pod <pod-id>  

Для ванільних кубернетів:

kubectl describe pod <pod-id>  

Вивчіть події на виході. У моєму випадку це відображає зворотні зображення / coredns: найновіші

У цьому випадку зображення coredns / coredns: latest не можна витягнути з Інтернету.

Events:
  FirstSeen LastSeen    Count   From                SubObjectPath           Type        Reason      Message
  --------- --------    -----   ----                -------------           --------    ------      -------
  5m        5m      1   {default-scheduler }                        Normal      Scheduled   Successfully assigned coredns-4224169331-9nhxj to 192.168.122.190
  5m        1m      4   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal      Pulling     pulling image "coredns/coredns:latest"
  4m        26s     4   {kubelet 192.168.122.190}   spec.containers{coredns}    Warning     Failed      Failed to pull image "coredns/coredns:latest": Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your internet connection or if you are behind a proxy.
  4m        26s     4   {kubelet 192.168.122.190}                   Warning     FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your Internet connection or if you are behind a proxy."

  4m    2s  7   {kubelet 192.168.122.190}   spec.containers{coredns}    Normal  BackOff     Back-off pulling image "coredns/coredns:latest"
  4m    2s  7   {kubelet 192.168.122.190}                   Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ImagePullBackOff: "Back-off pulling image \"coredns/coredns:latest\""

Додаткові кроки налагодження

  1. спробуйте витягнути зображення докера та позначити тег вручну на комп’ютері
  2. Визначте вузол, виконавши "kubectl / oc get stru--wide"
  3. ssh у вузол (якщо ви можете), який не може витягнути зображення докера
  4. перевірте, чи може вузол вирішити DNS реєстру докера, виконавши ping.
  5. спробуйте витягнути зображення докера вручну на вузлі
  6. Якщо ви використовуєте приватний реєстр, перевірте, чи існує ваш секрет і чи секрет правильний. Ваш секрет також має бути в одному просторі імен. Дякую swenzel
  7. Деякі регістри мають брандмауери, які обмежують доступ до ip-адреси. Брандмауер може заблокувати витяг
  8. Деякі CI створюють розгортання з тимчасовими секретами докера. Тож секрет закінчується через кілька днів (Ви просите виробничих збоїв ...)

3
Крім того, якщо ви використовуєте приватне сховище зображень, переконайтесь, що у ваших зображеннях є секрети для витягування зображень, не має помилок друку, і вони знаходяться в потрібному просторі імен.
swenzel

У випадку з приватним сховищем зображень також переконайтеся, що ви посилаєтесь на секрети зображень, що тягнуть зображення у вашому стручку, використовуючи запис "imagePullSecrets".
Donato

1
Існує також довгий блог , що описує , як налагодити це в глибині тут: managedkube.com/kubernetes/k8sbot/troubleshooting / ...
гар

1

Ви намагалися редагувати, щоб побачити, що не так (у мене неправильне розташування зображення)

kubectl edit pods arix-3-yjq9w

чи навіть видалити свій стручок?

kubectl delete arix-3-yjq9w

0

Я забув натиснути зображення з тегом 1.0.8 на ECR (центр зображень AWS) ... Якщо ви використовуєте Helm та оновіть:

helm upgrade minta-user ./src/services/user/helm-chart

переконайтеся, що тег зображення всередині value.yaml натискається (наприклад, на ECR або Docker Hub тощо), наприклад: (це мій шлем-діаграма / values.yaml)

replicaCount: 1

image:
   repository:dkr.ecr.us-east-1.amazonaws.com/minta-user
   tag: 1.0.8

вам потрібно переконатися, що зображення: 1.0.8 висунуте!


0

Я зіткнувся з подібною проблемою, але замість одного всі мої стручки не були готові та показували статус готового 0/1 Щось подібне введіть тут опис зображення

Я перепробував багато речей, але нарешті виявив, що контекст не задано правильно. Будь ласка, використовуйте наступну команду і переконайтеся, що ви в правильному контексті

kubectl config get-контексти


0

На GKE, якщо стручок мертвий, краще перевірити наявність подій. Він більш детально покаже, в чому полягає помилка.

У моєму випадку у мене було:

Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
 rpc error: code = Unknown desc = error pulling image configuration: unknown blob

Виявилося, зображення було пошкоджене якось. Після повторного повторного використання та розгортання з новим хешем він знову працював.


-10

Запустити вхід докер

Натисніть на зображення док-центру

Відновіть стручок

Це вирішило для мене проблему. Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.