K3s agent 加入集群失败显示 “x509: certificate signed by unknown authority”

12次阅读

K3s agent 无法信任 server TLS 证书的根本原因是 CA 证书缺失或不被认可,需通过 –server + –Token 自动获取、–ca-cert-file 显式指定或(仅测试)–insecure-skip-tls-verify 解决,并排查网络连通性、token 正确性及证书时效性。

K3s agent 加入集群失败显示 “x509: certificate signed by unknown authority”node-taint 等参数,不影响 CA 有效性,但若用 –disable-agent 或手动替换了证书,则需额外同步 CA。

检查 agent 是否正确传入 server CA 证书

agent 加入集群时,有三种常见方式提供 CA 信任:

  • 方式一(推荐):使用 –token + –server,让 agent 自动拉取 CA
    确保 agent 命令中包含完整 https 地址和有效 token:
    k3s agent –server https://192.168.1.100:6443 –token my-secret-token
    此时 agent 会通过该地址的 /v1-release 路径自动获取 server 签发的 CA 证书(要求 server 可被 agent 直连且端口开放)。
  • 方式二:显式指定 –ca-cert-file
    把 server 节点上的 /var/lib/rancher/k3s/server/tls/client-ca.crt 复制到 agent 本地(如 /tmp/ca.crt),再运行:
    k3s agent –server https://192.168.1.100:6443 –token my-secret-token –ca-cert-file /tmp/ca.crt
  • 方式三:跳过验证(仅测试环境)
    不推荐生产使用,但可用于快速定位是否为证书问题:
    k3s agent –server https://192.168.1.100:6443 –token my-secret-token –insecure-skip-tls-verify

排查网络与证书时效性问题

即使配置正确,以下情况也会触发该错误:

  • agent 无法访问 server 的 6443 端口防火墙、安全组、SElinux 或 k3s server 未监听公网 IP);
  • server 启动时用了 –cluster-init 但未等初始化完成就启动 agent;
  • server 证书已过期(K3s 内置证书有效期为 10 年,一般不在此列,但若手动替换过证书且过期则会报此错);
  • agent 使用了错误的 token(server 端 token 存于 /var/lib/rancher/k3s/server/node-token,不是 /var/lib/rancher/k3s/server/token)。

验证 server 端证书是否可被 agent 正常获取

在 agent 机器上手动测试能否拿到 CA:

curl -k https://192.168.1.100:6443/v1-release
应返回类似 {"type":"rke2","version":"v1.28.11+k3s1"}jsON;
再试带 token 的请求:
curl -k -H “Authorization: Bearer my-secret-token” https://192.168.1.100:6443/v1-release
若返回 401 或连接拒绝,说明 token 错误或 server 未就绪。

text=ZqhQzanResources