cattle-cluster-agent连接Rancher server失败

Rancher Server 设置

  • Rancher 版本:v2.5.12
  • 安装选项 (Docker install/Helm Chart): Helm Chart
    • 如果是 Helm Chart 安装,需要提供 Local 集群的类型(RKE1, RKE2, k3s, EKS, 等)和版本:k3sv1.20.14+k3s1
  • 在线或离线部署:在线

下游集群信息

  • Kubernetes 版本: v1.20.15-eks-a64ea69
  • Cluster Type (Local/Downstream):
    • 如果 Downstream,是什么类型的集群?(自定义/导入或为托管 等): 导入的AWS EKS集群

问题描述:
我在k3s安装Rancher server,导入EKS集群,将cattle-cluster-agent配置中的CATTLE_SERVER修改为https://aps1-rancher-internal-test.beta.tplinknbu.com,该域名是一个内部域名,路由到k3s其中一个节点。启动cattle-cluster-agent后报不可达错误,无法联通集群。agent日志如图。

重现步骤:

结果:

预期结果:

截图:

其他上下文信息:
域名可以准确解析,Rancher server所在主机将安全组调到最大依然出现这个问题

日志


你可以按照日志提示的内容去测试下连通性

curl测试连通性,返回404
我尝试curl http://A/ping, 发现返回404。

那你检查下为什么连不通

我尝试curl http://A/ping, 发现返回200。
agent访问rancher的url怎么设置

setting 里有个 server-url 选项,在那改,然后重新导入

1.agent的配置文件有一个CATTLE_SERVER环境变量,表示agent要去连接的域名,是修改这个吧?
2. “agent访问rancher的url怎么设置”。我这个是想问CATTLE_SERVER应设置成http还是https

之前采用单docker部署rancher,在setting 里的 server-url配置https://a.com,在集群agent的CATTLE_SERVER也配置https://a.com,https://a.com配置解析为rancher所在主机的私有内部ip,可以正常访问集群。
但是切换到K3s部署rancher后,和单docker一样设置,https://a.com配置解析为rancher集群其中一台主机的私有内部ip,但是出现上面的情况,agent启动不了。
请问K3s部署rancher的配置和单docker是否有不同的地方?

看起来rancher server只能识别helm install安装时指定的hostname,即上述case中域名aps1-rancher-internal-test.beta.tplinknbu.com,这个域名其实是指向rancher server某个节点的公网IP,我尝试在cluster-agent pod添加域名劫持,将aps1-rancher-internal-test.beta.tplinknbu.com劫持到内网IP,然后将rancher server节点安全组限制为内网网段访问,看起来这种方案是可行的:
hostAliases:
- hostnames:
- aps1-rancher-test.beta.tplinknbu.com
ip: 内网IP
cluster-agent pod日志:

INFO: https://aps1-rancher-test.beta.tplinknbu.com/ping is accessible
INFO: aps1-rancher-test.beta.tplinknbu.com resolves to 内网IP

麻烦跟进下原因,跟SSL解析有关?

如果你要修改 rancher server 的 ip 地址,你可以参考:

server-url处我填入的是内部域名。
主要疑惑来自于单节点安装和k3s安装的表现不同。
单节点安装:server-url处填内部域名,解析到rancher服务器的内部地址。agent可以正常访问集群
k3s集群安装:仿照单节点安装方案,server-url处填内部域名,解析到rancher其中一个节点的内部地址,结果如上,agent起不来。
在使用helm安装rancher时,hostname指定了外部域名,自己生成的证书也包含外部域名。
想知道不同的原因。