應(yīng)國產(chǎn)化信創(chuàng)的需求,公司的平臺需要跟華為鯤鵬服務(wù)器做適配,需要在服務(wù)上安裝K8s寂嘉,
# uname -r
4.19.90-52.15.v2207.ky10.aarch64
# uname -m
aarch64
雖然官方有提供安裝K8s的文檔及部署工具,但是支持的K8s版本太老了布近,有同事部署在華為云鯤鵬服務(wù)器上部署過K8s 1.18的版本垫释,但是不太巧,最近團(tuán)隊(duì)在使用K8s高版本的適配撑瞧,最高支持到K8s 1.26棵譬,這時(shí)再使用1.18的版本怎么也說不過去。最重要预伺,我問部署過K8s的同事订咸,對方直接甩給我華為官方文檔鏈接,看著那離線安裝腳本就頭大酬诀,也沒有想改的欲望了脏嚷,可復(fù)用性也高,于是決定想其它辦法瞒御,另辟蹊徑父叙。
鑒于又前用使用K3s的經(jīng)歷,而且K3s還是K8s的認(rèn)證發(fā)行版肴裙,又非常輕量趾唱,于是我決定用K3s的自動化部署工具來安裝。
安裝過程也非常簡潔:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_VERSION=v1.22.10+k3s1 INSTALL_K3S_MIRROR=cn sh -
初步驗(yàn)證后發(fā)現(xiàn)部署過程會中斷蜻懦,在K3s的issue中找到了對于這個(gè)問題的描述
Installation scripts can't handle
VERSION_ID
on Kylin V10 OS #8206
原來K3s官方也沒有做過kylin v10的適配甜癞,可能腳本需要做一些改動。順著這條issue我以找到了對應(yīng)的PR: Make the install script support kylin v10, 然后又遇到selinux的問題宛乃,
[ERROR] Failed to find the k3s-selinux policy, please install
幸好有人也遇到過這個(gè)問題悠咱,通過排查發(fā)現(xiàn)k3s有一個(gè)叫做k3s-selinux的項(xiàng)目,但我并不知道在kylin v10上應(yīng)該使用哪個(gè)版本征炼,只能用最笨的辦法析既,只能一個(gè)個(gè)試,
- k3s-selinux-1.3-1.el9.noarch.rpm 失敗
- k3s-selinux-1.3-1.el8.noarch.rpm 失敗
- k3s-selinux-1.3-1.el7.noarch.rpm 成功
多一點(diǎn)耐心谆奥,其實(shí)也就需要三次而已眼坏。雖然整個(gè)過程還是會遇到有一些瑣碎的小問題,但好在總算整理出來一個(gè)可復(fù)用的版本雄右,基本步驟如下:
- systemctl stop firewalld
- rpm -i k3s-selinux-1.3-1.el7.noarch.rpm
- INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh # 離線安裝可以加快部署速度空骚,這里容器運(yùn)行時(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:
# 內(nèi)網(wǎng)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
總結(jié)
其實(shí)整個(gè)過程并沒有太多難度纺讲,因?yàn)椴渴鸬膫€(gè)中細(xì)節(jié)我也沒法在短時(shí)間內(nèi)完全弄明白,只是秉承著一個(gè)原則:我應(yīng)該不是第一個(gè)遇到這個(gè)問題人吧(如果我是第一個(gè)吃螃蟹的囤屹,那可太棒了熬甚,工作需要,一定會進(jìn)行到底的)肋坚,所以只是運(yùn)用了一些搜索和github社區(qū)而已乡括。這個(gè)事情的意義在于,它的可復(fù)用性一定會在后續(xù)的工作中給我和同事帶來便利智厌。
參考:
- 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