Ошибка ImagePullBackOff в Kubernetes при извлечении образов докера из частного реестра dockerhub - PullRequest
2 голосов
/ 14 марта 2019

Я пытаюсь построить конвейер CI / CD с помощью Azure Devops.Моя цель состоит в том, чтобы

  1. Создать докер. Загрузите изображение в частный репозиторий Dockerhub в CI Pipeline

  2. Развернуть это изображение вкластер Azure Kubernetes в конвейере CD

Конвейер CI работает хорошо: enter image description here

Изображение успешно отправлено в dockerhub enter image description here

Задание подталкивания конвейера:

steps:
- task: Docker@1
  displayName: 'Push an image'
  inputs:
    containerregistrytype: 'Container Registry'
    dockerRegistryEndpoint: DockerHubConnection
    command: 'Push an image'
    imageName: 'jastechgmbh/microservice-demo:$(Build.BuildId)'

После этого я вручную запускаю свой конвейер освобождения, и он также показывает успех enter image description here

Задача применения конвейера:

steps:
- task: Kubernetes@0
  displayName: 'kubectl apply'
  inputs:
    kubernetesServiceConnection: MicroserviceTestClusterConnection
    command: apply
    useConfigurationFile: true
    configuration:   '$(System.DefaultWorkingDirectory)/_MicroservicePlayground-MavenCI/drop/deployment.azure.yaml'
    containerRegistryType: 'Container Registry'
    dockerRegistryConnection: DockerHubConnection

Но когда я проверяю развертывание на панели управления kubernetes, появляется сообщение об ошибке: enter image description here

Не удалось получить изображение "jastechgmbh / microservice-demo: 38": ошибка rpc: code = Unknown desc = Ответ об ошибке от демона: доступ по запросу запрещен для jastechgmbh / microservice-demo, хранилище не существует или может потребоваться 'docker login ': denied: запрошен доступ к ресурсу denied

Я использую то же служебное соединение dockerhub в конвейере CI & CD.

enter image description here

Буду очень рад вашей помощи.

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Я полагаю, что эта ошибка указывает на то, что у вашего кластера kubernetes нет доступа к реестру докеров. Для этого вам нужно создать секрет докера. вот так:

kubectl create secret generic regcred \
  --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
  --type=kubernetes.io/dockerconfigjson

или из командной строки:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

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

1 голос
/ 14 марта 2019

Ответ выше верен, просто нужно добавить, что вы должны поместить imagePullsecrets в свое развертывание. Прочитайте ссылку, приведенную на другом ответе, это подробно объясняется:

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

...