rke部署k8s集群-在ARM64机器上无法创建worker

部署环境

$ hostnamectl
         Icon name: computer
  Operating System: Kylin Linux Advanced Server V10 (Tercel)
            Kernel: Linux 4.19.90-17.5.ky10.aarch64
      Architecture: arm64
$ rke version
INFO[0000] Running RKE version: v1.3.12
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.16", GitCommit:"e37e4ab4cc8dcda84f1344dda47a97bb1927d074", GitTreeState:"clean", BuildDate:"2021-10-27T16:20:18Z", GoVersion:"go1.15.15", Compiler:"gc", Platform:"linux/arm64"}

问题描述

  • rke up执行异常中断
  • 192.168.0.42是唯一的worker
  • 查看已加入集群的状态
    kubectl describe node 192.168.0.140
    rke还未执行到部署网络插件部分 异常中断,kubelet因插件缺失初始化失败,不能上报Node Ready信息

排查过程

  • 查看worker节点的kubelet日志
    kubelet无法访问api-server以获取本节点信息
  • 查看kube-proxy日志
    kube-proxy同样无法访问api-server以获取本节点信息
  • 监听6443端口进程
    在master节点根据端口查找进程,发现6443对应kube-apiserver,但是在worker节点6443端口并未被占用
  • 对比正常的worker节点

对比分析x86_64环境正常运行的k8s集群的worker节点,发现监听6443的是个代理转发-Nginx进程,最终发现此进程是rke创建的nginx-proxy 容器启动的,容器镜像是rancher/rke-tools

  • 追踪nginx-proxy启动失败原因

搜索rke-tools代码库源码发现代理转发进程由的启动程序是/usr/bin/nginx-proxy

https://github.com/rancher/rke-tools/tree/v0.1.78

创建临时容器,直接尝试启动/usr/bin/nginx-proxy ,出现强力线索:二进制可执行文件confd格式错误,最终发现该二进制文件针对32位机器编译,无法在ARM64机器上运行

解决方案

自编译可执行文件,替换镜像中的错误文件

  • 编译confd-0.16.1-linux-arm64
git clone https://github.com/rancher/confd.git
cd confd/
git checkout -b v0.16.4 v0.16.4

make release
  • 重建镜像替换confd
FROM rancher/rke-tools:v0.1.78

COPY confd-0.16.1-linux-arm64 /usr/bin/confd
RUN chmod +x /usr/bin/confd
docker build -t rancher/rke-tools:v0.1.78-arm64 .

总结

rancher-rke部署架构中,worker节点的kubelet访问locahost的6443端口,通过nginx-proxy 这个代理转发服务与master节点的kube-apiserver通信。

因为confd平台不适配,导致worker节点的nginx-proxy 不能正常运行,kubelet无法与apiserver通信上报节点信息。这就是是rke up执行失败,报错Can't find node by name [192.168.0.42], error "192.168.0.42" not found. 的原因。


debug

docker logs kubelet &> kubelet.log
docker logs kube-proxy &> kube-proxy.log

sudo netstat -lntup | grep 6443

docker run --rm -it rancher/rke-tools:v0.1.78 -- bash
# ls /usr/bin/confd
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容