Kubernetes K8s问题从docker私有存储库中提取

Kubernetes K8s问题从docker私有存储库中提取,kubernetes,jhipster,dockerhub,Kubernetes,Jhipster,Dockerhub,我有一个Jhipster应用程序,我想部署到Kubernetes。我使用jhipster kubernetes命令创建了所有的k8s对象,并提供了一个Docker Hub存储库来推送它们。Docker Hub存储库是一个私有存储库 部署对象看起来像: apiVersion: apps/v1 kind: Deployment metadata: name: demodevices namespace: demo spec: replicas: 1 selector:

我有一个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 repo,所以我添加了
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
警告失败(x4结束)kubelet,k8node1未能从守护进程获取映像“busybox:latest”:rpc错误:code=Unknown desc=错误响应:Gethttps://registry-1.docker.io/v2/library/busybox/manifests/latest: 未经授权:用户名或密码不正确
警告失败(x4超过)kubelet,k8node1错误:ErrImagePull
正常退避(x6以上)kubelet,k8node1退避拉图像“busybox:最新”
警告失败(x6超过)kubelet,k8node1错误:ImagePullBackOff

据我所知,它尝试使用私有存储库的凭据拉取busybox:latest映像。预期的结果是无错误地提取busybox:latest,并从我的私有repo中提取我的自定义映像。如何解决上述问题?

您是否已将私有回购添加到Secure Registry中的Docker中。您是否也尝试过使用docker登录登录您的私人回购协议?当您这样做时,它会在登录凭据中创建一个条目。

尝试使用docker登录和docker pull/run进行手动拉取。如果这起作用,它也必须适用于K8s。

此错误与您正在使用的事实无关。
imagePullSecret

您用于创建机密的过程,以下是一个示例:

kubectl create secret docker-registry anyname \
--docker-server=docker.io \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=<email>
kubectl创建秘密docker注册表anyname\
--docker服务器=docker.io\
--docker用户名=\
--docker密码=\
--docker电子邮件=

我复制了你的案例,当我用错误的信息创造秘密时,我也犯了同样的错误

我不知道什么是安全注册表中的Docker。我可以在docker登录后手动拉取并运行图像,所以这方面没有问题。有一件事:在创建秘密时,我需要提供一些参数。我不确定的是
--docker server
,因为我不知道这个参数的docker hub格式。现在我已经设置了repository这里有一个关于如何创建秘密的示例:
kubectl创建秘密docker注册表anyname--docker server=docker.io--docker用户名=--docker密码=--docker电子邮件=
你在公司代理后运行吗?@SriniM不,我没有任何代理。请看一下这个。请注意,如果您的密码包含$,则必须使用\$