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

添加非Hetzner提供商节点至Rancher集群时卡在「Waiting for agent to check in and apply initial plan」阶段

添加非Hetzner提供商节点至Rancher集群时卡在「Waiting for agent to check in and apply initial plan」阶段

我最近碰到一个挺棘手的问题,先跟大家说下我的集群环境:

  • 我在Hetzner的5台服务器里,用其中一台部署了Rancher Server
  • 剩下的4台里,1台作为control plane+etcd节点,另外3台是worker节点,组成了运行Kubernetes v1.27.11+k3s1的正常集群

但当我尝试添加非Hetzner提供商的worker节点时,一直卡在「Waiting for agent to check in and apply initial plan」阶段,完全没进展。

已做的排查步骤

  1. 我从待添加节点用telnet和dig测试了Rancher域名的连通性,没发现明显的网络问题
  2. 用的添加命令是Rancher提供的标准命令:
    curl -fL https://rancher.mydomain.org/system-agent-install.sh | sudo sh -s - --server https://rancher.mydomain.org --label 'cattle.io/os=linux' --token ******* --worker
    
  3. 查看待添加节点的k3s-agent日志(sudo journalctl -u k3s-agent --no-pager),发现核心错误:
    time="2024-03-16T12:12:48Z" level=error msg="failed to get CA certs: Get \"https://127.0.0.1:6444/cacerts\": read tcp 127.0.0.1:45838->127.0.0.1:6444: read: connection reset by peer"
    

对比Hetzner成功节点的日志

同样的添加命令,Hetzner节点能正常加入,日志里虽然有CA证书信任的警告,但能继续完成初始化:

time="2024-03-15T14:57:54Z" level=warning msg="Cluster CA certificate is not trusted by the host CA bundle, but the token does not include a CA hash. Use the full token from the server's node-token file to enable Cluster CA validation."

之后就能正常加载内核模块、启动containerd等流程,完全没问题。

可能的解决方向

结合日志和环境差异,我整理了几个可能的排查点:

  • 检查IPv6连通性问题:从失败日志能看到,k3s agent自动把control plane的IPv6地址[2a01:4f8:c012:3140::1]:6443加入了本地负载均衡,但非Hetzner节点可能IPv6配置有问题(比如无法路由到该地址)。可以试试:

    • 在添加命令里指定control plane的IPv4地址,比如--server https://<control-plane-ipv4>:6443,绕开IPv6解析
    • 临时禁用待添加节点的IPv6,再重新运行添加命令
  • 使用完整的带CA Hash的Node Token:Hetzner节点的日志提示token缺少CA Hash,虽然能继续,但非Hetzner节点可能因为这个导致证书验证失败。去Rancher所在的服务器(或者control plane节点)拿完整的token:

    cat /var/lib/rancher/k3s/server/node-token
    

    把这个完整的token替换掉命令里的*******,再重新执行添加命令。

  • 排查本地负载均衡转发问题:失败日志里的连接重置是发生在本地的127.0.0.1:6444(k3s-agent-load-balancer),说明这个本地负载转发到control plane的IPv6地址失败。可以手动测试:

    • 从待添加节点直接访问control plane的IPv4地址的6443端口:curl -k https://<control-plane-ipv4>:6443/cacerts(加-k忽略证书验证),看能不能获取到证书内容
    • 如果能获取到,说明本地负载均衡的IPv6转发有问题,直接用IPv4地址指定server即可
  • 检查防火墙/安全组差异:Hetzner的服务器可能默认开放了K8s需要的端口,而非Hetzner节点的防火墙/安全组可能没开。确保待添加节点开放以下端口:

    • 6443/tcp(Kubernetes API Server)
    • 8472/udp(Flannel VXLAN 通信)
    • 10250/tcp(Kubelet API)
    • 30000-32767/tcp(NodePort 服务端口)
  • 检查系统环境配置:对比Hetzner节点,检查非Hetzner节点的以下配置:

    • 内核模块是否加载:lsmod | grep -E 'overlay|br_netfilter',如果没加载,手动执行:
      modprobe overlay
      modprobe br_netfilter
      
    • IP转发是否开启:sysctl net.ipv4.conf.all.forwarding和sysctl net.ipv6.conf.all.forwarding,确保值为1,否则执行:
      sysctl -w net.ipv4.conf.all.forwarding=1
      sysctl -w net.ipv6.conf.all.forwarding=1
      
    • 检查SELinux/AppArmor是否开启,可能需要临时禁用测试:setenforce 0(SELinux)或者systemctl stop apparmor(AppArmor)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:35:31