Когда статус рабочей нагрузки показывает "Pod not ready: Back-off pulling image "xxxxx", в Kubernetes будет зарегистрировано событие Failed to pull image или Failed to re-pull image. Подробную информацию о том, как просматривать события Kubernetes, см. Viewing Pod Events.
Определите причину на основе событий, перечисленных в Table 1.
Событие | Причина и решение |
|---|---|
Failed to pull image "xxx": rpc error: code = Unknown desc = Error response from daemon: Get xxx: denied: You may not login yet | Вы не вошли в репозиторий образов. Пункт проверки 1: Указан ли imagePullSecret при использовании kubectl для создания рабочей нагрузки |
Failed to pull image "nginx:v1.1": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host | Адрес образа настроен неверно. Пункт проверки 2: Корректен ли адрес образа при использовании стороннего образа Пункт проверки 3: Используется ли неверный secret при использовании стороннего образа |
Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "nginx-6dc48bf8b6-l8xrw": Error response from daemon: mkdir xxxxx: no space left on device | Недостаточно места на диске. Check Item 4: Является ли пространство диска узла недостаточным |
Failed to pull image "xxx": rpc error: code = Unknown desc = error pulling image configuration: xxx x509: certificate signed by unknown authority | Неизвестный или небезопасный сертификат используется сторонним репозиторием образов, из которого загружается образ. Check Item 5: Использует ли удалённый репозиторий образов неизвестный или небезопасный сертификат |
Failed to pull image "xxx": rpc error: code = Unknown desc = context canceled | Размер образа слишком велик. |
Failed to pull image "docker.io/bitnami/nginx:1.22.0-debian-11-r3": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) | Check Item 7: Можно ли получить доступ к репозиторию образов |
ERROR: toomanyrequests: Too Many Requests. Или Вы превысили лимит загрузки образов, вы можете увеличить лимит, аутентифицировавшись и обновив | Скорость ограничена, потому что количество загрузок образов достигает верхнего предела. Пункт проверки 8: Достигает ли количество публичных загрузок образов верхнего предела |
Если рабочая нагрузка аномальна и отображается событие Kubernetes, указывающее, что pod не может загрузить образ, вы можете проверить, существует ли поле imagePullSecrets в файле YAML.
Элементы для проверки
apiVersion: extensions/v1beta1kind: Deploymentmetadata:name: nginxspec:replicas: 1selector:matchLabels:app: nginxstrategy:type: RollingUpdatetemplate:metadata:labels:app: nginxspec:containers:- image: nginximagePullPolicy: Alwaysname: nginximagePullSecrets:- name: default-secret
При использовании kubectl для создания рабочей нагрузки из стороннего образа укажите поле imagePullSecret, где name указывает имя секрета, используемого для загрузки образа.
CCE позволяет создавать рабочие нагрузки, используя образы, загружаемые из сторонних репозиториев образов.
Необходимо ввести адреса сторонних образов в соответствии с конкретными требованиями. Адрес образа должен быть в формате domainname/organization/imagename:tag. Если версия не указана, по умолчанию используется latest.
Если загрузка образа не удалась из‑за указания неверного адреса образа, в событиях Kubernetes отображается информация, аналогичная следующей:
Failed to pull image "nginx:v1.1": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host
Решение
Измените адрес образа, отредактировав файл YAML, или войдите в консоль CCE и замените образ на вкладке Upgrade на странице сведений о рабочей нагрузке.
Обычно к стороннему репозиторию образов можно получить доступ только после аутентификации (с использованием вашей учётной записи и пароля). CCE использует режим аутентификации secret для загрузки образов, поэтому необходимо создать secret для репозитория образов перед загрузкой образов из репозитория.
Решение
Если ваш secret неверен, загрузка образов завершится неудачей. В этом случае создайте новый secret.
Если в событиях Kubernetes отображается информация, аналогичная следующей, это означает, что на диске не осталось места для хранения образа. В результате загрузка образа завершится неудачей. В этом случае очистите образ или расширьте место на диске, чтобы решить проблему.
Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "nginx-6dc48bf8b6-l8xrw": Error response from daemon: mkdir xxxxx: no space left on device
Вы можете получить объём места на диске для хранения образов на узле, выполнив следующую команду:
lvs

Решение 1: Очистка образов
Выполните следующие действия для очистки неиспользуемых образов: Не удаляйте системные образы, такие как образ cce-pause. В противном случае создание pod может завершиться неудачей.
Решение 2: Расширение ёмкости диска
Чтобы расширить ёмкость диска, выполните следующие операции:
Расширяется только ёмкость хранилища дисков EVS. Для расширения ёмкости логических томов и файловых систем необходимо выполнить следующие операции.
Диск с данными делится в зависимости от контейнерного хранилища Rootfs:
Если pod пытается загрузить образ из стороннего репозитория с неизвестным или небезопасным сертификатом, загрузка образа завершится неудачей на узле. События pod содержат "Failed to pull the image" с причиной "x509: certificate signed by unknown authority".
Безопасность образов EulerOS 2.9 была повышена за счёт удаления небезопасных или просроченных сертификатов из системы. Хотя некоторые сторонние образы на отдельных узлах могут не сообщать об ошибках, такой тип ошибки часто встречается в EulerOS 2.9. Чтобы устранить проблему, выполните следующие действия.
Решение
Вы можете увидеть IP‑адрес и номер порта стороннего сервера образов, для которого ошибка зафиксирована в событии "Failed to pull image".
IP‑адрес стороннего сервера образов — production.cloudflare.docker.com, а номер порта HTTPS по умолчанию — 443.
Выполните следующую команду на узле EulerOS или CentOS, заменив {server_url}:{server_port} на IP‑адрес и номер порта, полученные на предыдущем шаге, например, production.cloudflare.docker.com:443.
Если среда выполнения контейнеров на узле — containerd, замените systemctl restart docker на systemctl restart containerd.
Выполните следующую команду на узле Ubuntu:
События Под содержат "Failed to pull image". Это может быть вызвано большим размером образа.
Failed to pull image "XXX": rpc error: code = Unknown desc = context canceled
Однако образ можно загрузить вручную, выполнив команду docker pull на узле.
Возможная причина
В кластерах Kubernetes существует период ожидания по умолчанию для загрузки образов. Если прогресс загрузки образа не обновляется в течение определённого времени, загрузка будет отменена. При низкой производительности узла или слишком большом размере образа загрузка может завершиться неудачей, и рабочая нагрузка может не запуститься.
Решение
crictl pull <image-address>
docker pull <image-address>
Симптом
Во время создания рабочей нагрузки отображается сообщение об ошибке, похожее на следующее:
Failed to pull image "docker.io/bitnami/nginx:1.22.0-debian-11-r3": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Возможная причина
Из‑за сетевых проблем невозможно получить доступ к репозиторию образов. SWR позволяет загружать образы только из официального репозитория Docker. Чтобы загружать образы из других репозиториев, необходимо иметь доступ к Интернету.
Решение
Симптом
Во время создания нагрузки отображается сообщение об ошибке, похожее на следующее:
ERROR: toomanyrequests: Too Many Requests.
Или
you have reached your pull rate limit, you may increase the limit by authenticating an upgrading: https://www.docker.com/increase-rate-limits.
Возможная причина
Docker Hub устанавливает ограничения на максимальное количество запросов на загрузку образов контейнеров. Для подробностей см. Docker Hub pull usage and limits.
Решение
Перенесите часто используемые образы в SWR, а затем загружайте их из SWR на ваши узлы.