AWS实例部署K3s时agent节点无法连接master节点问题
故障根因
Agent加入集群的命令存在语法错误:--server参数传入的API Server地址中,$MASTER_IP变量和端口段:6443之间多了1个多余空格,导致Agent实际请求的地址格式非法,无法正常连通Master节点的6443端口,自然拉取不到集群CA证书,触发failed to get CA CERTS报错。
修复操作步骤
- 清理所有Agent节点上之前安装失败的残留数据,逐台执行:
systemctl stop k3s-agent /usr/local/bin/k3s-agent-uninstall.sh rm -rf /var/lib/rancher/k3s
- 校验Agent到Master的网络连通性,在每台Agent节点执行端口测试:
nc -zv 3.93.220.207 6443
- 测试返回
succeeded!类提示再继续后续操作,如果连通失败先检查安全组、防火墙是否放通6443端口入方向规则。
- 使用修正后的命令执行Agent加入操作,去掉URL中的多余空格,推荐直接用官方环境变量传参的写法,避免参数拼接错误:
export MASTER_IP=3.93.220.207 export K3S_TOKEN=替换为你从Master节点/var/lib/rancher/k3s/server/node-token读取到的实际token值 curl -sfL https://get.k3s.io | K3S_URL=https://$MASTER_IP:6443 K3S_TOKEN=$K3S_TOKEN sh -
注意:标准URL格式中,IP/域名和端口之间直接用冒号连接,不能加任何空格,否则会被识别为非法地址。
- 加入操作执行完成后等待15秒左右,回到Master节点执行
kubectl get nodes,即可看到对应Agent节点注册成功,状态逐步变为Ready。
避坑提示
- 复制Master节点的token时不要夹带多余的换行、空格,否则会出现token校验失败的问题。
- 如果你安装Master时自定义过API Server的监听端口,需要把命令里的
6443替换为你实际配置的端口,默认K3s的API Server监听端口为6443。 - 不要重复写功能一致的安装参数,比如你Master安装命令里同时写了
--no-deploy traefik和--disable traefik,二者效果完全一致,保留一个即可,多余参数不会影响功能但会增加命令排错成本。
内容的提问来源于stack exchange,提问作者Ayush
相关产品推荐
相关产品推荐

