k3s 无法解析 registries.yaml

k3s 无法解析 registries.yaml

我已经设置了一个带有不安全私有注册表的 k3s Kubernetes 独立服务器,但 k3s 无法从中提取镜像。该registries.yaml文件的设置与文档所述一致。如下所示。

mirrors:
  "registry.cube.local:5000":
    endpoint:
      - "http://registry.cube.local:5000"

该图像位于注册表中,但 k3s pod 不会推送它们,并显示以下错误:

failed to do request: Head "https://registry.cube.local:5000/v2/batch/manifests/v0.9": http: server gave HTTP response to HTTPS client

根据registries.yaml配置,这种情况不应该发生,因为它配置为使用 http。我去检查日志以journalctl -xn -u k3s.service | less发现错误,我可以看到以下警告:

Oct 17 21:51:20 local k3s[25571]: I1017 21:51:20.401763   25571 event.go:294] "Event occurred" object="kube-system/registries" fieldPath="" kind="Addon" apiVersion="k3s.cattle.io/v1" type="Warning" reason="ParseManifestFailed" message="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\"]}}}'"

我确实对 yaml 文件进行了 lint,并且根据日志,转换为 JSON 似乎是正确的,所以我不认为这是一个文件格式化的问题。

我尝试设置一个安全的私人注册表,但没有成功,因为它也依赖于registries.yaml文件配置才能工作,而且出现了同样的错误。

我很好奇在我向他们的 github 提交 bug 之前,是否有人看到了这个问题。这对我来说真的毫无意义。

答案1

一位 Github 贡献者帮助了我:https://github.com/k3s-io​​/k3s/issues/8677#issuecomment-1768569901

我把文件放在了错误的位置。尽管将安装位置设置为其他位置,registries.yaml 仍按/etc/rancher/k3s/registries.yaml文档所述读取。

相关内容