You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

k3s拉取自签名Harbor镜像报x509证书错误如何解决

问题根因

你配置的testcred镜像拉取密钥仅负责提供Harbor私有仓库的身份认证凭证,不会处理TLS证书信任逻辑。报错的核心原因是k3s默认内置的containerd容器运行时不信任Harbor使用的自签名SSL证书,发起HTTPS请求拉取镜像时证书校验流程失败。

解决步骤

1. 分发Harbor自签名CA证书到所有k3s节点

提前从Harbor服务器导出签发服务端证书用的根CA证书(注意不是Harbor的服务端证书本身),在**所有k3s节点(包括server控制节点和agent工作节点,所有可能调度Pod的节点都要操作)**执行以下命令:

# 创建k3s识别私有仓库证书的专用目录,目录名必须和你镜像配置里的仓库地址完全一致
mkdir -p /etc/rancher/k3s/certs/harbor-server
# 将本地存储的Harbor根CA证书拷贝到上述目录,文件必须命名为ca.crt
cp /your/local/path/harbor-ca.crt /etc/rancher/k3s/certs/harbor-server/ca.crt

# 以下为可选操作,兼容节点上直接用ctr/crictl/docker命令拉取镜像的场景
cp /your/local/path/harbor-ca.crt /usr/local/share/ca-certificates/harbor-ca.crt
update-ca-certificates

注意:如果你的Harbor访问地址带端口,比如harbor-server:8443,那上述目录名必须改成harbor-server:8443,和镜像地址里的仓库段完全匹配,不要带https://前缀。

2. 重启k3s服务加载证书配置

所有节点执行完证书放置操作后,分别重启对应k3s服务:

  • server控制节点执行:
systemctl restart k3s
  • agent工作节点执行:
systemctl restart k3s-agent

3. 重新创建Pod验证

等待1-2分钟k3s服务恢复正常后,删除之前拉取失败的Pod重新应用配置即可:

kubectl delete -f testPod.yml
kubectl apply -f testPod.yml
常见遗漏配置检查
  • 不要只在server节点放置证书,所有agent节点必须同步配置,否则Pod调度到未配置证书的节点依然会报相同错误。
  • 不要把Harbor的服务端证书(如harbor-server.crt)当作根CA证书放入目录,必须放签发服务端证书的根CA文件。
  • 低版本k3s如果上述目录配置不生效,可以通过新增/etc/rancher/k3s/registries.yaml文件显式指定证书路径,配置内容如下,写完同样需要重启k3s服务:
mirrors:
  harbor-server:
    endpoint:
      - "https://harbor-server"
configs:
  harbor-server:
    tls:
      ca_file: /etc/rancher/k3s/certs/harbor-server/ca.crt

内容的提问来源于stack exchange,提问作者maantarng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:18:24