私有镜像仓库+自签名证书

问题描述:

使用本地的docker registry作为镜像仓库,而且配置了https证书,但是在k8s一定会报x509错误,镜像拉取不下来。

失败的尝试方案:

  • 将运行时换成docker:

    • 观察到将虚拟机上的docker服务启动之后,配置docker的insecure-registries属性,之后在该虚拟机上执行docker login <registry>可以成功,而一旦关闭docker服务,同样的命令却会失败,因此考虑将底层运行时换成docker

    • 另一个考虑时,相比k8s,本人对docker更熟悉,因此能够更好的观察k8s的执行情况

    • 但最终结果是失败,因为更换底层运行时成本太高,导致k8s集群搭建失败。

    • 阅读k8s的官网后,发现使用docker作为运行时需要先安装一个名为cri-dockerd适配器,因此可能导致遭遇新的问题,故而放弃

  • 经过思考,既然直接使用docker没问题,而当前k8s底层使用的时containerd,于是便向chatgpt询问containerd是否存在类似的机制,但是根据chatgpt给出的方案,无效果,问题依然存在

  • 尝试了使用SAN证书,但是依然失败,原因可能是因为证书配置错误,对于SSL了解过于匮乏,openssl命令产生的文件数量过多,进而导致配置出错,但与原始的错误不同,错误提示信息出现了变化:

    tls: failed to verify certificate: x509: certificate signed by unknown authority

最终解决方案:

直接放弃私有仓库,使用aliyun提供的仓库服务,问题得以避免。

registry.cn-hangzhou.aliyuncs.com

最后更新于