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

K3s无法解析registries.yaml,导致无法从非安全私有镜像仓库拉取镜像

K3s无法解析registries.yaml,导致无法从非安全私有镜像仓库拉取镜像

我看到你的问题了,核心问题出在registries.yaml的格式不符合K3s的要求——你现在的文件只是单纯的镜像仓库配置片段,但K3s期望这个文件是一个完整的Kubernetes Addon资源对象,所以才会报Object 'Kind' is missing的错误,进而导致镜像拉取时没有应用你的HTTP配置,出现http: server gave HTTP response to HTTPS client的问题。

问题根源

你看journalctl里的警告已经说得很明确了:

Parse manifest at "/root/k3s/server/manifests/registries.yaml" failed: Object 'Kind' is missing in '{"mirrors":{"registry.cube.local:5000":{"endpoint":["http://registry.cube.local:5000"]}}}'

K3s的server/manifests目录下的所有文件,都是作为Kubernetes资源清单来加载的,必须符合K8s资源的标准结构(要有apiVersion、kind、metadata这些字段),而不是单纯的配置键值对。你之前写的内容只是资源里的spec部分,缺少了外层的资源定义。

正确的registries.yaml配置

把你的文件改成下面的完整结构,就能解决解析问题:

apiVersion: k3s.cattle.io/v1
kind: Addon
metadata:
  name: registries
spec:
  mirrors:
    "registry.cube.local:5000":
      endpoint:
        - "http://registry.cube.local:5000"

后续操作

  1. 替换你的/root/k3s/server/manifests/registries.yaml文件为上面的内容
  2. 重启K3s服务生效:
    systemctl restart k3s.service
    
  3. 再次查看日志,确认没有ParseManifestFailed的警告:
    journalctl -xn -u k3s.service | less
    
  4. 尝试重新拉取镜像,应该就会使用你配置的HTTP endpoint了

额外检查点

  • 确保K3s节点能正常访问http://registry.cube.local:5000,可以用curl http://registry.cube.local:5000/v2/测试连通性
  • 确认节点防火墙/安全组允许5000端口的HTTP流量通过

备注:内容来源于stack exchange,提问作者lauksas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:08:03