前言

费了些时间在成功在华为云arm架构的服务器上搭建了k8s集群,期间问题不断,以下是三个关键点:

  1. 确保网络能正常拉取所需镜像
  2. 拉取的镜像需支持arm架构
    否则报错:exec /pause: exec format error
  3. 集群网络驱动要选择flannel

添加自定义集群

Rancher上的具体操作就不细说了,不懂的参考《Rancher操作指南(一):快速搭建k8s集群》,如果没用Rancher的可以用RKE部署k8s集群,遇到的问题都是类似的。
下面就说一个关键点,集群网络驱动要选择flannel,之前用默认的Cannal一直不成功。
Rancher创建arm架构的下游k8s集群-LMLPHP

镜像源配置

k8s集群服务器要确保能正常拉取镜像,由于我用的私有镜像仓库网络问题导致个别镜像拉取不到,翻了容器日志才发现问题。
试了好个国内镜像源都无法正常下载镜像,最后配了阿里云的镜像加速器后正常了。
开通加速器地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
需要先开通镜像服务,这个是免费的。
Rancher创建arm架构的下游k8s集群-LMLPHP

使用支持ARM架构的docker镜像

集群部署过程中在节点上用docker ps -a |grep Exiteddocker logs命令观察一下那些停止运行容器的日志,如果发现exec format error这类的报错,说明这个镜像是不支持arm架构。需要从官方仓库上获取对应arm架构的镜像,并覆盖掉原镜像。

  • 例如rancher/mirrored-pause:3.6这个镜像是不支持arm架构的,在官方找到对应arm版本。
    Rancher创建arm架构的下游k8s集群-LMLPHP
  • docker pull rancher/mirrored-pause:3.6-arm64
    然后docker tag rancher/mirrored-pause:3.6-arm64 rancher/mirrored-pause:3.6替换镜像。

我遇到需要手动处理的镜像:

  • rancher/nginx-ingress-controller
  • rancher/mirrored-pause
06-22 09:00