Kubernetes не может получить образ из частного репозитория в Docker Hub

По какой-то причине Kubernetes не может получить образ из моей личной учетной записи в Docker Hub. Я пробовал все возможные способы создания секрета (из config.json, вводя учетные данные непосредственно в командной строке), но все равно безуспешно.

В прошлый раз я сделал docker login и выполнил следующую команду для создания секрета:

kubectl create secret docker-registry dockerhub-credentials --from-file=.dockerconfigjson=/home/myuser/.docker/config.json

Также попробовал следующую команду (она такая же, но я подумал, что в kubectl может быть ошибка, которая неправильно распознает параметры:

kubectl create secret generic dockerhub-credentials --from-file=.dockerconfigjson=/home/myuser/.docker/config.json --type=kubernetes.io/dockerconfigjson

После развертывания я вижу в файле YAML модуля следующее:

spec:
  volumes:
    ...
  containers:
    - name: container-name
      image: 'username/projects:web_api_123'
      ports:
        - containerPort: 80
          protocol: TCP
      ...
      imagePullPolicy: IfNotPresent
  ...
  imagePullSecrets:
    - name: dockerhub-credentials

Имя образа правильное (я проверил), и секрет с учетными данными Docker Hub был правильно назначен моему POD. Я даже пропатчил учетную запись службы по умолчанию! Но это все еще не работает.

Вы используете Azure?

pixelbits 09.12.2020 23:54

Нет, это частный кластер Kubernetes. Я могу подключиться к index.docker.io через порт 443, используя telnet.

Volodymyr Usarskyy 10.12.2020 06:47
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
2
775
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, проблема заключается в пространствах имен: все мои развертывания, модули, службы и т. д. Живут внутри отдельного пространства имен, НО команда, которая создает секрет, делает это в пространстве имен «по умолчанию».

По какой-то причине я думал, что эти секреты в пространстве имен «по умолчанию» видны из другого пространства имен, но это не так. Итак, если вы хотите создать секрет конфигурации докера, вам придется сделать это с помощью YAML:

kind: Secret
apiVersion: v1
metadata:
  name: dockerhub-credentials
  namespace: your-namespace
data:
  .dockerconfigjson: base64-encoded-/.docker/config.json
type: kubernetes.io/dockerconfigjson

См. скрипт исправления в моем ответе по адресу: stackoverflow.com/questions/68037678/… Этот скрипт исправит все учетные записи службы во всех пространствах имен.

AAber 12.01.2022 17:04

Моей проблеме не был передан идентификатор электронной почты. Это должно быть так. kubectl create secret docker-registry regcred --docker-server=<ваш-сервер-реестра> --docker-username=<ваше-имя> --docker-password=<ваш-пароль> --docker-email=<ваш -электронная почта>

Pritam Kumar 14.10.2022 10:00

Другие вопросы по теме