Arm64 建立不了worker节点

Rancher Server 设置

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

下游集群信息

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

用户信息

  • 登录用户的角色是什么? (管理员/集群所有者/集群成员/项目所有者/项目成员/自定义):
    • 如果自定义,自定义权限集:

主机操作系统:
Kylin Linux Advanced Server release V10 (Sword) arm64

问题描述:
同一个节点,创建不了worker节点,全角色节点是可以的

重现步骤:
网络驱动 : flannel

# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS         PORTS     NAMES
c44a48df9279   rancher/rke-tools:v0.1.80            "nginx-proxy CP_HOST…"   2 minutes ago   Up 2 minutes             nginx-proxy
a6615df27e82   rancher/hyperkube:v1.23.6-rancher1   "/opt/rke-tools/entr…"   2 minutes ago   Up 2 minutes             kubelet
14b5405acfca   rancher/hyperkube:v1.23.6-rancher1   "/opt/rke-tools/entr…"   2 minutes ago   Up 2 minutes             kube-proxy
6e1ed6754ceb   rancher/rancher-agent:v2.6.5         "run.sh --server htt…"   3 minutes ago   Up 3 minutes             relaxed_raman

kubelet 日志
https://github.com/rancher/rancher/files/10358941/kubelet.log

结果:

预期结果:

截图:

其他上下文信息:

日志


没明白啥意思,你的具体重现步骤是?

@ksd 就是在UI界面选角色 只选worker,复制命令执行,kubelet 会报错,加入集群失败。全选角色就可以成功加入这个集群。。。每次执行创建命令都已经先清理过节点

具体的log在上面的链接

而且也试过其他节点(同样系统的),也是报一样的错。只能加全节点,不能加worker

你在单独加 worker 节点之前,集群中有其他节点么?已经添加了 etcd 和 controlplane 么?

@ksd 已经有一个全角色的节点正常运行

大概知道原因了,看到 nginx-proxy rancher/rke-tools:v0.1.80 这个镜像有问题但是不知道怎么修复。。。。

docker logs -f nginx-proxy
/usr/bin/nginx-proxy: line 4: /usr/bin/confd: cannot execute binary file: Exec format error
2023/01/09 02:47:22 [notice] 9#9: using the "epoll" event method
2023/01/09 02:47:22 [notice] 9#9: nginx/1.21.0
2023/01/09 02:47:22 [notice] 9#9: built by gcc 10.2.1 20201203 (Alpine 10.2.1_pre1) 
2023/01/09 02:47:22 [notice] 9#9: OS: Linux 4.19.90-24.4.v2101.ky10.aarch64
2023/01/09 02:47:22 [notice] 9#9: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/01/09 02:47:22 [notice] 9#9: start worker processes
2023/01/09 02:47:22 [notice] 9#9: start worker process 10
2023/01/09 02:47:22 [notice] 9#9: start worker process 11
2023/01/09 02:47:22 [notice] 9#9: start worker process 12
2023/01/09 02:47:22 [notice] 9#9: start worker process 13
2023/01/09 02:47:22 [notice] 9#9: start worker process 14
2023/01/09 02:47:22 [notice] 9#9: start worker process 15
2023/01/09 02:47:22 [notice] 9#9: start worker process 16
2023/01/09 02:47:22 [notice] 9#9: start worker process 17
2023/01/09 02:47:22 [notice] 9#9: start worker process 18
2023/01/09 02:47:22 [notice] 9#9: start worker process 19

有可能是拉下来的这个镜像不是 arm 的导致没起来,你可以试试直接在主机上 pull 一个 arm 版本的 rke-tools:v0.1.80 的镜像:docker pull rancher/rke-tools:v0.1.80-linux-arm64,然后 通过 docker tag 打包成默认的 rancher/rke-tools:v0.1.80,然后看看能起来不。

找到解决方案了,貌似是rke-tool一个存在已久且影响久远的bug ,这个基本所有arm64的都创建不了worker节点 https://github.com/rancher/rancher/issues/37762

看了下那个组件的PR https://github.com/rancher/confd/pull/8 快一年都不merge 牛

感觉rancher社区对于issue都是放任自流的状态,都是机器人自动close。对此感到失望。。。

Rancher 在 arm 方面的支持,之前确实力度不够。但后续的规划上来看,会加大 arm 的支持。

非常抱歉!不过,这其实也是无法避免的,因为有限的工程资源和资金不可能解决所有的开源社区issue。
我们会关注其中很重要的部分,但是更多精力依然是支持商业客户的需求。
这是生存问题,开源软件的厂商也需要生存。开源社区也没有给用户承诺解决所有问题,这完全无法完成。

目前,尚未有客户为ARM64支持而买单,因为生产环境靠ARM支撑还有些差距。这使得很多ARM支持的相关issue很难推动。
但是,最近也看到了一些变化,2023年在ARM方向推动会更快一些。

分享一个有趣的测试,我在AWS上使用同样的ARM实例规格,但是两种OS的执行confd的差异:
Ubuntu 22.04 ,confd可以运行;
openEuler 22.03 SP1,confd不可以运行;

尽管这个confd在编译时没有指定到arm64,但是主流操作系统其实完全可以兼容。

看到你使用的也是国产OS,应该和openEuler类似。我看到大量类似这种confd的ARM兼容问题issue,都是国内用户报的,也许国产OS层面的兼容性本身就存在巨大问题。