[英]ErrImagePull: x509: certificate signed by unknown authority
当我尝试在 kubernetes 中使用我的 Harbor 注册表中的图像创建一个 pod 时,我收到了 ErrImagePull 错误,如下所示:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 10s default-scheduler Successfully assigned test/test-pod to ubuntu-s-2vcpu-2gb-ams3-01-slave01
Normal Pulling 9s kubelet Pulling image "my.harbor.com/test/nginx:1.18.0"
Warning Failed 9s kubelet Failed to pull image "my.harbor.com/test/nginx:1.18.0": rpc error: code = Unknown desc = failed to pull and unpack image "my.harbor.com/test/nginx:1.18.0": failed to resolve reference "my.harbor.com/test/nginx:1.18.0": failed to do request: Head https://my.harbor.com/v2/test/nginx/manifests/1.18.0: x509: certificate signed by unknown authority
Warning Failed 9s kubelet Error: ErrImagePull
Normal BackOff 8s kubelet Back-off pulling image "my.harbor.com/test/nginx:1.18.0"
Warning Failed 8s kubelet Error: ImagePullBackOff
我认为关键问题是'x509: certificate signed by unknown authority
但我真的不知道出了什么问题,因为我将我的 CA 复制到 kubernetes 主节点和从节点,它们都可以登录到Harbor 并运行docker pull my.harbor.com/test/nginx:1.18.0
拉取镜像成功。
我为此困扰了几天,任何答复将不胜感激。
我将 ca.crt 复制到 /etc/docker/certs.d/my.harbor.com/
这将使它适用于您展示的 docker 引擎。
连同 my.harbor.cert 和 my.harbor.com.key
我认为这是一种安全违规行为,不再信任您的港口主机的密钥。 永远不需要从主机复制私钥。
我还将 ca.crt 复制到 /usr/local/share/ca-certificates/ 并运行命令 update-ca-certificates 进行更新。
这是应该解决这个问题的步骤。
您可以验证您是否加载了证书:
openssl s_client -connect my.harbor.com:443 -showcerts </dev/null
如果 output 不包含类似Verification: OK
的消息,那么您没有正确配置主机证书,需要仔细检查 Linux 分发的步骤。 在每个节点上检查这一点很重要。 如果您只更新管理器并从工作人员那里提取图像,该工作人员仍会遇到 TLS 错误。
如果openssl
显示验证成功,则检查您的 Kubernetes 节点。 根据 CRI,它可能正在缓存旧证书数据,需要重新启动以检测主机上的更改。
至于CRI,我不知道是什么
容器运行时接口,Kubernetes 安装的一部分。 默认情况下,这是在许多 Kubernetes 发行版中containerd
的。 containerd
和其他 CRI(除了 docker docker-shim
)不会查看 docker 配置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.