从私有 dockerhub 注册表中拉取 docker 镜像时 Kubernetes 中出现 ImagePullBackOff 错误

use*_*746 4 azure kubernetes azure-devops azure-aks

我尝试使用 Azure Devops 构建 CI/CD 管道。我的目标是

  1. 构建一个 docker 镜像并将其上传到 CI 管道内 Dockerhub 中的私有 docker 存储库

  2. 将此映像部署到 CD 管道内的 Azure Kubernetes 群集

CI 管道运行良好: 在此处输入图片说明

镜像成功推送到dockerhub 在此处输入图片说明

管道 docker push 任务:

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

之后我手动触发我的发布管道它也显示成功 在此处输入图片说明

应用管道任务:

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
Run Code Online (Sandbox Code Playgroud)

但是当我在 kubernetes 仪表板上检查部署时,会弹出一条错误消息: 在此处输入图片说明

无法拉取映像“jastechgmbh/microservice-demo:38”:rpc 错误:代码 = 未知 desc = 来自守护程序的错误响应:jastechgmbh/microservice-demo 的拉取访问被拒绝,存储库不存在或可能需要“docker 登录”:被拒绝: 请求访问资源被拒绝

我在 CI & CD 管道中使用相同的 dockerhub 服务连接。

在此处输入图片说明

我会很高兴你的帮助。

4c7*_*b41 8

我相信这个错误表明您的 kubernetes 集群无权访问 docker 注册表。您需要为此创建 docker secret。像这样:

kubectl create secret generic regcred \
  --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
  --type=kubernetes.io/dockerconfigjson
Run Code Online (Sandbox Code Playgroud)

或从命令行:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
Run Code Online (Sandbox Code Playgroud)

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