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

这是 K3s agent 无法信任 server 端 TLS 证书的典型报错,本质是 agent 拿不到或不认可 server 的 CA 证书,导致 HTTPS 握手失败。
确认 server 是否启用了 TLS(默认开启)
K3s server 默认自动生成并使用内置 CA 和证书。agent 必须通过 --server https://
检查 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 未就绪。










