应国产化信创的需求,公司的平台需要跟华为鲲鹏服务器做适配,需要在服务上安装K8s,
# uname -r
4.19.90-52.15.v2207.ky10.aarch64
# uname -m
aarch64
虽然官方有提供安装K8s的文档及部署工具,但是支持的K8s版本太老了,有同事部署在华为云鲲鹏服务器上部署过K8s 1.18的版本,但是不太巧,最近团队在使用K8s高版本的适配,最高支持到K8s 1.26,这时再使用1.18的版本怎么也说不过去。最重要,我问部署过K8s的同事,对方直接甩给我华为官方文档链接,看着那离线安装脚本就头大,也没有想改的欲望了,可复用性也高,于是决定想其它办法,另辟蹊径。
鉴于又前用使用K3s的经历,而且K3s还是K8s的认证发行版,又非常轻量,于是我决定用K3s的自动化部署工具来安装。
安装过程也非常简洁:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_VERSION=v1.22.10+k3s1 INSTALL_K3S_MIRROR=cn sh -
初步验证后发现部署过程会中断,在K3s的issue中找到了对于这个问题的描述
Installation scripts can't handle
VERSION_ID
on Kylin V10 OS #8206
原来K3s官方也没有做过kylin v10的适配,可能脚本需要做一些改动。顺着这条issue我以找到了对应的PR: Make the install script support kylin v10, 然后又遇到selinux的问题,
[ERROR] Failed to find the k3s-selinux policy, please install
幸好有人也遇到过这个问题,通过排查发现k3s有一个叫做k3s-selinux的项目,但我并不知道在kylin v10上应该使用哪个版本,只能用最笨的办法,只能一个个试,
- k3s-selinux-1.3-1.el9.noarch.rpm 失败
- k3s-selinux-1.3-1.el8.noarch.rpm 失败
- k3s-selinux-1.3-1.el7.noarch.rpm 成功
多一点耐心,其实也就需要三次而已。虽然整个过程还是会遇到有一些琐碎的小问题,但好在总算整理出来一个可复用的版本,基本步骤如下:
- systemctl stop firewalld
- rpm -i k3s-selinux-1.3-1.el7.noarch.rpm
- INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh # 离线安装可以加快部署速度,这里容器运行时是containerd
获取token
cat /var/lib/rancher/k3s/server/token
添加agent
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://k3s-server-ip:6443 K3S_TOKEN=K3S-SEVER-TOKEN install.sh
配置私有镜像中心:/etc/rancher/k3s/registries.yaml
# cat /etc/rancher/k3s/registries.yaml
mirrors:
# 内网harbor
172.3.4.5:
endpoint:
- "http://172.3.4.5"
configs:
"172.3.4.5":
auth:
username: XXX # 这是私有镜像仓库的用户名
password: XXX # 这是私有镜像仓库的密码
k3s server:
systemctl restart k3s
k3s agent
systemctl restart k3s-agent
总结
其实整个过程并没有太多难度,因为部署的个中细节我也没法在短时间内完全弄明白,只是秉承着一个原则:我应该不是第一个遇到这个问题人吧(如果我是第一个吃螃蟹的,那可太棒了,工作需要,一定会进行到底的),所以只是运用了一些搜索和github社区而已。这个事情的意义在于,它的可复用性一定会在后续的工作中给我和同事带来便利。
参考:
- https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/ecosystemEnable/Kubernetes/kunpengk8s_04_0007.html
- https://github.com/k3s-io/k3s/issues/8206
- https://slack-archive.rancher.com/t/12312628/hello-i-have-problem-doing-air-gapped-install-of-k3s-v1-26-3
- https://docs.rancher.cn/docs/k3s/installation/airgap/_index/
- https://docs.rancher.cn/docs/k3s/installation/private-registry/_index