前言
费了些时间在成功在华为云arm架构的服务器上搭建了k8s集群,期间问题不断,以下是三个关键点:
- 确保网络能正常拉取所需镜像
- 拉取的镜像需支持arm架构
否则报错:exec /pause: exec format error - 集群网络驱动要选择flannel
添加自定义集群
Rancher上的具体操作就不细说了,不懂的参考《Rancher操作指南(一):快速搭建k8s集群》,如果没用Rancher的可以用RKE部署k8s集群,遇到的问题都是类似的。
下面就说一个关键点,集群网络驱动要选择flannel,之前用默认的Cannal一直不成功。
镜像源配置
k8s集群服务器要确保能正常拉取镜像,由于我用的私有镜像仓库网络问题导致个别镜像拉取不到,翻了容器日志才发现问题。
试了好个国内镜像源都无法正常下载镜像,最后配了阿里云的镜像加速器后正常了。
开通加速器地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
需要先开通镜像服务,这个是免费的。
使用支持ARM架构的docker镜像
集群部署过程中在节点上用docker ps -a |grep Exited
和docker logs
命令观察一下那些停止运行容器的日志,如果发现exec format error
这类的报错,说明这个镜像是不支持arm架构。需要从官方仓库上获取对应arm架构的镜像,并覆盖掉原镜像。
- 例如
rancher/mirrored-pause:3.6
这个镜像是不支持arm架构的,在官方找到对应arm版本。
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