Сбой при извлечении из частного реестра - неподдерживаемый запрос хранилища docker v1 - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь запустить контейнер в моем кластере Kubernetes (1.9.7-gke.6), используя личный реестр (Artifactory).

Failed to pull image "myrepo.myartifactory.mycompany.com/org/image:latest": rpc error: code = Unknown desc = Error: Status 400 trying to pull repository org/image: "{
\"errors\" :[ {
    \"status\" : 400,
    \"message\" : \"Unsupported docker v1 repository request for 'myrepo'\"\n  } ]
}"

Я предполагаю, что это означает, что клиент docker пытается выполнить запрос реестра v1, который, кажется, не поддерживается нашей установкой Artifactory.

Я проверил докерверсия узлов моего кластера:

$ kubectl describe nodes | grep docker
 Container Runtime Version:  docker://17.3.2
 Container Runtime Version:  docker://17.3.2
 Container Runtime Version:  docker://17.3.2

Я обнаружил флаг Docker --disable-legacy-registry=true, но я не уверен, как лучше настроить мой кластер GKE таким образом.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Фактическая проблема заключалась в том, что наши учетные данные реестра изменились.Обновление учетных данных извлечения в нашем кластере устранило проблему.

Я предполагаю, что проблема может возникнуть при определенных обстоятельствах, когда API-интерфейс реестра возвращает ошибку, такую ​​как ошибка аутентификации или авторизации.В этом случае докер-клиент пытается перейти на более старую версию API, которая недоступна в Artifactory.

Это приведет к тому, что Artifactory вернет упомянутую ошибку Unsupported docker v1 repository request for 'myrepo', которая, к сожалению, маскирует действительную ошибку.

0 голосов
/ 10 октября 2018

К счастью, вы можете подключиться по SSH к своим узлам GKE (вы не можете подключиться к мастерам GKE).Таким образом, вы можете добавить этот флаг в файл /etc/docker/daemon.json на всех ваших узлах.Примерно так:

{
  ...
  "disable-legacy-registry": true,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "1g",
    "max-file": "3"
  }
  ...
}

Затем перезапустите докер на всех ваших узлах.В каждом узле:

sudo docker systemctl restart docker

Обратите внимание, что этот флаг был полностью удален из Docker 17.12 и более поздних версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...