K8s从docker私有仓库拉取的问题

问题描述 投票:2回答:2

我有一个Jhipster应用程序,我想把它部署到Kubernetes。我使用了 jhipster kubernetes 命令来创建所有的 k8s 对象,我提供了一个 Docker Hub 仓库来推送它们。Docker Hub仓库是一个私有仓库。

部署对象看起来是这样的。

apiVersion: apps/v1
kind: Deployment
metadata:
    name: demodevices
    namespace: demo
spec:
    replicas: 1
    selector:
        matchLabels:
            app: demodevices
            version: 'v1'
    template:
        metadata:
            labels:
                app: demodevices
                version: 'v1'
        spec:
            initContainers:
                - name: init-ds
                  image: busybox:latest
                  command:
                      - '/bin/sh'
                      - '-c'
                      - |
                          while true
                          do
                            rt=$(nc -z -w 1 demodevices-postgresql 5432)
                            if [ $? -eq 0 ]; then
                              echo "DB is UP"
                              break
                            fi
                            echo "DB is not yet reachable;sleep for 10s before retry"
                            sleep 10
                          done
            containers:
                - name: demodevices-app
                  image: myRepo/demo:demodevices-1.0.0
                  env: ...
                  resources: ...
                  ports: ...
                  readinessProbe: ...
                  livenessProbe: ...
            imagePullSecrets:
            - name: regcred

因为我使用的是私有的Docker Hub仓库,所以我在上面添加了以下内容 imagePullSecret. 该秘密被创建并部署到k8s。

当应用该文件时,在pods中我看到以下消息。

 Warning  Failed     <invalid> (x4 over <invalid>)  kubelet, k8node1   Failed to pull image "busybox:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://registry-1.docker.io/v2/library/busybox/manifests/latest: unauthorized: incorrect username or password
 Warning  Failed     <invalid> (x4 over <invalid>)  kubelet, k8node1   Error: ErrImagePull
 Normal   BackOff    <invalid> (x6 over <invalid>)  kubelet, k8node1   Back-off pulling image "busybox:latest"
 Warning  Failed     <invalid> (x6 over <invalid>)  kubelet, k8node1   Error: ImagePullBackOff

根据我的理解,它试图用私人仓库的凭证来拉动 busybox:最新版本的镜像。预期的结果是拉出busybox:lastest而不出错,并从我的私有仓库中拉出我的自定义图像。如何解决上述问题?

kubernetes jhipster dockerhub
2个回答
0
投票

这个错误与你使用的是 imagePullSecret.

审查 你用来创建秘密的过程,这里有一个例子。

kubectl create secret docker-registry anyname \
--docker-server=docker.io \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=<email>

我重现了你的案例 当我用错误的信息创建秘密时,也出现了同样的错误。


0
投票

您是否已经将Private Repo添加到Docker In-Secure Registry中。另外,您是否尝试过使用docker登录登录到您的私有仓库?当你这样做的时候,它会创建一个条目到登录密码。试着使用docker login和docker pullrun进行手动拉取。如果这样做有效,那一定也能用K8s工作。

© www.soinside.com 2019 - 2024. All rights reserved.