无法通过从外部私有registry中提取图像来启动minikube中的窗格

我的笔记本电脑上安装了一个ubuntu。

我开始了一个私人dockerregistry(ssl启用+ htpasswd安全),并将其添加到覆盖networking(所以它可以从其他主机/ vms访问)

这里是代码(docker-compose.yaml):

version: "3" services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt REGISTRY_HTTP_TLS_KEY: /certs/domain.key REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm volumes: - /certs:/certs - ~/caas_rd/workspace/ci_cd_pipeline/registry_setup:/auth networks: - overlaynetwork networks: overlaynetwork: 

所以我的registry运行在以下链接(与DNS,我可以validation它在浏览器中): https:// home-thinkpad-t420s:5000 / v2 / _catalog

现在我在笔记本电脑上安装了“Minikube”。 &&ssh它由“minikube ssh”。

我在minikube vm上创build了一个文件夹“/etc/docker/certs.d”,按照说明添加了证书:

https://docs.docker.com/engine/security/certificates/#understanding-the-configuration

我还在/etc/ssl/certs/ca-certificates.crt上修改了/ etc / hosts && ca.cert。

并通过以下命令重启minikube vm上的docker服务:sudo systemctl restart docker.service

在这之后,我可以通过“docker login&docker pull”在“minikube vm”上拖动图像,并且通过上面的“curce with(cacert + username / password)”工作得非常好,意味着我可以成功访问/里面minikube vm。

然后我试图创build一个秘密(在我的笔记本电脑上用kubectl create -f)定义如下:

 apiVersion: "v1" kind: "Secret" metadata: name: "ssl-proxy-secret" namespace: "default" data: proxycert: "LS0..." proxykey: "LS0t..." htpasswd: "YWRt..." 

并创build了一个荚(在我的笔记本上用kubectl create -f)定义如下:

 apiVersion: v1 kind: Pod metadata: name: private-jenkins spec: containers: - name: private-jenkins-container image: home-thinkpad-t420s:5000/my-jenkins volumeMounts: - name: secrets mountPath: /etc/secrets volumes: - name: secrets secret: secretName: ssl-proxy-secret 

但是当我尝试运行这个吊舱时,会抛出错误:

无法拉图像“home-thinkpad-t420s:5000 / my-jenkins”:rpc错误:code = 2 desc =错误:图像my-jenkins未find错误同步pod,跳过:未能“StartContainer”为“private-jenkins “容器”ErrImagePull:“rpc错误:代码= 2 desc =错误:图像my-jenkins未find”

如果我能够通过curl和docker login / pull成功在minikube vm中拉取图像,那么为什么创buildpod时出现上述错误?

你可以从secret.yml文件中删除那些双引号escpecially,然后再试一下吗?

您需要创build一个分离的kubernetes registry secret 。 可以使用这个命令:

 kubectl create secret docker-registry <secret-name> \ --docker-email=<your-email> --docker-username=<registry-user> \ --docker-password=<registry-password> --docker-server=<registry-server-domain> 

之后,您可以更新pod configuration ,如下所示:

 apiVersion: v1 kind: Pod metadata: name: private-jenkins spec: containers: - name: private-jenkins-container image: home-thinkpad-t420s:5000/my-jenkins imagePullSecrets: - name: <secret-name> 

参考: 链接

希望能帮助到你!