Microk8s не может вытащить из частного реестра - PullRequest
0 голосов
/ 18 июня 2019

Я использую Microk8s на экземпляре EC2.Я не могу вытащить контейнеры из нашего частного реестра.При попытке запустить такой контейнер kubectl describe pod показывает:

Не удалось получить изображение "docker.xxx.com/import:v1": ошибка rpc: code = Unknown desc = Не удалось разрешить изображение "docker.xxx.com/import:v1 ": нет доступной конечной точки реестра: не удалось получить анонимный токен: неожиданный статус: 401 Не авторизован

Я могу docker login и docker pull с этого компьютера.Yaml, который я использовал для развертывания контейнера, работает нормально на другом (не в контейнере) кластере.Это относится к секрету извлечения, который идентичен тому, который используется в другом кластере и работает там нормально.

Я добавил следующую запись в containerd-template.toml из Microk8s:

   [plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        ...
        [plugins.cri.registry.mirrors."docker.xxx.com"]
          endpoint = ["https://docker.xxx.com"]

Понятия не имею, что еще мне не хватает.

1 Ответ

1 голос
/ 27 июня 2019

Если вы получаете сообщение об ошибке 401, вероятно, что-то не так с аутентификацией. Например. вам не хватает учетных данных в вашем личном реестре.

Чтобы убедиться, что microk8s будет использовать правильные учетные данные, в дополнение к mirrors разделам в конфигурации, вы должны указать auths раздел, в который вы поместите свои учетные данные реестра Docker.

[plugins.cri.registry.auths]
  [plugins.cri.registry.auths."https://gcr.io"]
    username = ""
    password = ""
    auth = ""
    identitytoken = ""

Атрибуты в этом разделе совместимы с конфигурацией, которую вы можете найти в вашем .docker/config.json.

Обратите внимание, что это раздел на том же уровне, что и mirrors, он не должен быть частью записи mirrors, а добавлен как новый раздел. Другая важная часть - убедиться, что хосты auth соответствуют вашему хосту реестра (например, https vs http).

Для более подробной информации проверьте ссылку: https://github.com/containerd/cri/blob/master/docs/registry.md

p.s. Имейте в виду, что containerd поддерживается microk8s [1] v1.14. Если вы используете более старую версию, вы должны проверить другие параметры, такие как официальная документация kubernates [2]

[1] https://microk8s.io/docs/working

[2] https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

...