我的笔记本电脑上安装了ubuntu .
我启动了私有docker注册表(ssl启用了htpasswd安全)并将其添加到覆盖网络上(因此可以从其他主机/ 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:
所以我的注册表在以下链接中运行(使用dns,我可以在浏览器中验证它):https://home-thinkpad-t420s:5000/v2/_catalog
现在我在笔记本电脑上安装了“Minikube” . && ssh通过“minikube ssh” .
我在minikube vm上创建了一个文件夹“/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 service:sudo systemctl restart docker.service
在此之后,我能够通过“docker login&docker pull”以及“curl with(cacert用户名/密码)”上面的minikube vm上的图像拉动工作完全正常,意味着我可以成功访问/拉出私有注册表图像里面minikube vm .
然后我尝试创建一个秘密(在我的笔记本电脑上使用kubectl create -f)定义如下:
apiVersion: "v1"
kind: "Secret"
metadata:
name: "ssl-proxy-secret"
namespace: "default"
data:
proxycert: "LS0..."
proxykey: "LS0t..."
htpasswd: "YWRt..."
并创建了一个pod(在我的笔记本电脑上使用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
但是当我尝试运行这个pod时,它会抛出错误:
未能拉形象“家庭的ThinkPad-的T420s:5000 /我 - 詹金斯”:没有发现错误同步荚,跳过图像我 - 詹金斯:RPC错误:代码= 2 DESC =错误,无法“StartContainer”为“私人詹金斯-container“with ErrImagePull:”rpc error:code = 2 desc = Error:image my-jenkins not found“
如果我能够通过curl和docker登录/拉动成功地在minikube vm中拉出图像......那么为什么pod创建失败并出现上述错误?
2 回答
你可以从secret.yml文件中的凭据中删除那些双引号并尝试再次旋转pod吗?
您需要创建一个单独的
kubernetes registry secret
. 可以使用此命令:之后你可以更新
pod configuration
如下:参考:link
希望能帮助到你!