Внезапно я не могу развернуть некоторые образы, которые можно было развернуть раньше. Получил следующий статус стручка:

[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 

Приложение просто не запускается. Модуль не пытается запустить контейнер. На странице «Событие» у меня есть Отрывное изображение "172.30.84.25:5000/default/arix@sha256:d326. Я подтвердил, что могу вытащить изображение с тегом с вытягивание докера.

Я также проверил журнал последнего контейнера. Его почему-то закрыли. Я думаю, что поду стоит хотя бы попытаться перезапустить его.

У меня закончились идеи по устранению проблем. Что еще проверить?

Ответы (11)

Вы можете использовать синтаксис 'описать pod'

Для использования OpenShift:

oc describe pod   

Для ванильного Kubernetes:

kubectl describe pod   

Изучите события вывода. В моем случае это показывает Back-off pulling image unreachableserver / nginx: 1.14.22222

В этом случае образ unreachableserver / nginx: 1.14.22222 не может быть извлечен из Интернета, потому что нет недоступного сервера реестра Docker, а образ nginx: 1.14.22222 делает не существует.

NB: если вы не видите никаких интересных событий и модуль некоторое время находился в состоянии ImagePullBackOff (кажется, более 60 минут), вам нужно удалить модуль и посмотреть на события из нового модуля.

Для использования OpenShift:

oc delete pod 
oc get pods
oc get pod 

Для ванильного Kubernetes:

kubectl delete pod   
kubectl get pods
kubectl get pod 

Пример вывода:

  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  32s                default-scheduler  Successfully assigned rk/nginx-deployment-6c879b5f64-2xrmt to aks-agentpool-x
  Normal   Pulling    17s (x2 over 30s)  kubelet            Pulling image "unreachableserver/nginx:1.14.22222"
  Warning  Failed     16s (x2 over 29s)  kubelet            Failed to pull image "unreachableserver/nginx:1.14.22222": rpc error: code = Unknown desc = Error response from daemon: pull access denied for unreachableserver/nginx, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     16s (x2 over 29s)  kubelet            Error: ErrImagePull
  Normal   BackOff    5s (x2 over 28s)   kubelet            Back-off pulling image "unreachableserver/nginx:1.14.22222"
  Warning  Failed     5s (x2 over 28s)   kubelet            Error: ImagePullBackOff

Дополнительные шаги отладки

  1. попробуйте вытащить образ докера и пометить вручную на вашем компьютере
  2. Определите узел, выполнив команду 'kubectl / oc get pods -o wide'
  3. ssh в узел (если можно) который не может вытащить образ докера
  4. проверьте, что узел может разрешить DNS реестра докеров, выполнив эхо-запрос.
  5. попробуйте вручную вытащить образ докера на ноду
  6. Если вы используете частный реестр, убедитесь, что ваш секретный существует и секрет правильный. Ваш секрет также должен находиться в том же пространстве имен. Спасибо swenzel
  7. В некоторых реестрах есть брандмауэры, ограничивающие доступ к IP-адресам. Брандмауэр может блокировать извлечение
  8. Некоторые CI создают развертывания с временными секретами докеров. Таким образом, секрет истекает через несколько дней (вы запрашиваете производственные сбои ...)

Я столкнулся с аналогичной проблемой, но вместо одного все мои поды не были готовы и отображали статус готовности 0/1

Примерно так:

Enter image description here

Я много чего пробовал, но в конце концов обнаружил, что контекст установлен неправильно.

Используйте следующую команду и убедитесь, что вы находитесь в правильном контексте:

kubectl config get-contexts

Я столкнулся с похожей ситуацией, и оказалось, что с актуализацией Docker Desktop я вышел из системы. После того, как я снова вошел в систему, все снова заработало.

  1. kubectl get pod -n kube-system

  2. Показывает, какие поды ImagePullBackOff kube-system

  3. kubectl delete pod -n kube-system (перезапустить модуль и воссоздать контейнер)

  4. kubectl get pod -n

Попробуйте отредактировать, чтобы увидеть, что не так (у меня неправильное расположение изображения):

kubectl edit pods arix-3-yjq9w

Или даже удалите свой под:

kubectl delete arix-3-yjq9w

В моем случае, используя профиль Fargate, я неправильно настроил сеть в моем VPC. Контейнеры Fargate требуют доступа к ECR, для чего требуется маршрут к общедоступному Интернету.

У меня были шлюзы NAT для моих частных подсетей, расположенные в тех же частных подсетях, тогда как они должны были быть расположены в общедоступных подсетях. Это сообщение об ошибке было результатом неправильной конфигурации в моем случае.

Выполните следующую команду:

eval $(minikube -p minikube docker-env)

Теперь создайте свои изображения. Затем используйте те же изображения в Kubernetes. Делайте это каждый раз, когда открываете новое окно командной строки.

Шаги:

  • Запуск вход в докер.

  • Отправьте образ в Docker Hub

  • Восстановить пакет

Это решило проблему для меня.

Я забыл отправить изображение с тегом 1.0.8 в ECR (центр образов AWS) ... Если вы используете Helm и обновляетесь с помощью:

обновление руля minta-user ./src/services/user/helm-chart

убедитесь, что тег изображения внутри файла values.yaml помещен (в ECR или Docker Hubи т. Д.). Например (это мой * helm-chart / values.yaml):

replicaCount: 1

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

Вы должны убедиться, что изображение : 1.0.8 запушено!

I ran into this issue on Google Kubernetes Engine (GKE), and the reason was no credentials for Docker.

Запуск разрешил это:

gcloud auth configure-docker

На GKE, если сд сдох pod, лучше проверить на события. Он более подробно покажет, в чем ошибка.

В моем случае было:

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

Оказалось, образ как-то испорчен. После повторной очистки и развертывания с новым хешем он снова заработал.

Оглядываясь назад, я думаю, что изображения были повреждены, потому что для корзины в GCP, в которой размещены изображения, была установлена ​​политика очистки, которая в основном удаляла изображения. В результате сообщение, подобное приведенному выше, можно увидеть в событиях.

Другими распространенными проблемами являются неправильное имя (gcr.io vs eu.gcr.io), а также может быть, что реестр каким-то образом не может быть достигнут. Опять же, подсказки есть в событиях, сообщение должно сказать вам достаточно.

Более общую информацию можно найти здесь (например, для аутентификации):

Вытягивание и вытягивание изображений

2022 WebDevInsider