Проблема получения изображений в Kubernetes из частного репозитория - PullRequest
0 голосов
/ 13 июля 2020

Я создал кредиты реестра, и когда я подаю заявку на модуль следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: registry.io.io/simple-node
  imagePullSecrets:
  - name: regcred

он работает успешно, вытяните изображение

Но если я попытаюсь сделать это:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node123
  namespace: node123
spec:
  replicas: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 2
      maxUnavailable: 0
  selector:
    matchLabels:
      name: node123
  template:
      metadata:
          labels:
              name: node123
      spec:
          containers:
              - name: node123
                image: registry.io.io/simple-node
                ports:
                - containerPort: 3000
          imagePullSecrets:
             - name: regcred

На модуле появится ошибка: ImagePullBackOff

, когда я описываю, что он получает

Не удалось получить изображение «registry.io.io/simple-node»: rp c error: code = Unknown des c = Ошибка в ответе от демона: Get https://registry.io.io/v2/simple-node/manifests/latest: no basi c auth credentials

Кто-нибудь знает, как решить эту проблему?

1 Ответ

3 голосов
/ 13 июля 2020

Мы всегда запускаем образы из частного реестра. И этот контрольный список может вам помочь:

  1. Поместите свои параметры в переменную env в своем терминале, чтобы иметь единый источник истины:

    export DOCKER_HOST=registry.io.io
    export DOCKER_USER=<your-user>
    export DOCKER_PASS=<your-pass>
    
  2. Убедитесь, что вы можете аутентифицироваться и образ действительно существует

    echo $DOCKER_PASS | docker login -u$DOCKER_USER --password-stdin $DOCKER_HOST
    docker pull ${DOCKER_HOST}/simple-node
    
  3. Убедитесь, что вы создали секрет Dockerconfig в том же пространстве имен pod / deployment;

    namespace=mynamespace # default
    kubectl -n ${namespace} create secret docker-registry regcred \
      --docker-server=${DOCKER_HOST} \
      --docker-username=${DOCKER_USER} \
      --docker-password=${DOCKER_PASS} \
      --docker-email=anything@will.work.com
    
  4. Исправьте учетную запись службы, используемую модулем, с секретом

    namespace=mynamespace
    kubectl -n ${namespace} patch serviceaccount default \
      -p '{"imagePullSecrets": [{"name": "regcred"}]}'
    # if the pod use another service account, 
    #     replace "default" by the relevant service account
    

    или

    Добавьте imagePullSecrets в модуле:

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