Skip to main content

Command Palette

Search for a command to run...

我的解题之路:安装K8s

Updated
1 min read

我一直觉得,在安装K8s这个事情上,K3s将易用性做到了极致(仅限于我所知道的方法),当然,这里面还有我对于轻量性解决方法的偏爱,或者严谨一点,在PoC/测试场景中,没有特殊要求的话,快速部署指定的K8s版本,K3s或许是一个值得考虑的选择。

应国产化信创的需求,公司的平台需要跟华为鲲鹏服务器做适配,需要在服务上安装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上应该使用哪个版本,只能用最笨的办法,只能一个个试,

  1. k3s-selinux-1.3-1.el9.noarch.rpm 失败

  2. k3s-selinux-1.3-1.el8.noarch.rpm 失败

  3. k3s-selinux-1.3-1.el7.noarch.rpm 成功

多一点耐心,其实也就需要三次而已。虽然整个过程还是会遇到有一些琐碎的小问题,但好在总算整理出来一个可复用的版本,基本步骤如下:

  1. systemctl stop firewalld

  2. rpm -i k3s-selinux-1.3-1.el7.noarch.rpm

  3. 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

总结

这个解题过程其实相当枯燥,因为实质上并没有太多难度,部署的个中细节我也没法在短时间内完全弄明白,只是秉承着一个原则:我应该不是第一个遇到这个问题人吧(如果我是第一个吃螃蟹的,那可太棒了,工作需要,一定会进行到底的),所以只是运用了一些搜索手段罢了。但是这个事情的意义在于,它的可复用性一定会在后续的工作中给我以及同事带来例利。

ps: 对于轻量级的解决方法,俺真的是喜欢的不得了

参考:

23 views

More from this blog

2025: 祛魅 灰度 念头通达

今天是2025年的最后一天,当大家都在准备下班的时候,好巧不巧的,我刚好发现了一个不大不小的问题,大胆猜想,小心求证,向上反馈,暴露风险,作为2025年工作注解,实在是再有趣不过了。 今年的工作,从结果上看,还算平稳,至于过程,有太多不可言说的部分。厂里打镙丝的牛马,有工资可拿,理应知足了,至于其它的,与己无关,也没那么重要了。 祛魅 近距离观察大厂,才发现一些违背常识/直觉的事实:路人以为的高大

Feb 28, 20261 min read21

大厂祛魅:破碎的专注力

毁掉一个人最直接的方法,就是毁掉ta的专注力。 这句话的出处已然模糊,但放在大厂环境中,却显得格外深刻。 围城 大厂宛如一座围城。城外的人满怀憧憬,目之所及皆是光鲜;城内的人却如困笼之鸟,翅膀日渐退化,每日挣扎求生。 高大上 不可否认,大厂的硬件设施确实令人艳羡:宽敞的独立园区内,来往穿梭的人群中,几乎人人手握智能设备。这看似现代化的景象背后,却藏着一个无奈的事实:在工作时段,每台电脑都被严密监控,连听音乐都成奢望。于是,工作之余玩手机,成了许多人难得的解压方式。 大厂的品牌效应确实强大。外界对...

Jul 29, 20251 min read138

Black Swan

黑天鹅理论 是指极不可能发生,实际上却又发生的事件 来到大厂打工已经满一个月了,从一开始的手足无措,到逐渐度过不适期,也算是适应了吧。 不适应 刚入职时,不适应的地方还是挺多的。 第一次只使用台式机工作,这就限制了我一天中的绝大部分时间,都必须呆在自己的工位上,好在工位足够大。只是人与人的沟通少了很多,有问题只能在工位上通过 IM 呼对方,有种魔幻又现实的感觉 第一次只能用 Windows,也不能 WSL,这给我的工作效率带来了很大影响,不能用熟悉的软件,就连写代码用的 VSCode 的...

Jan 24, 20251 min read74

2024年: 逐渐平静

这个世界是一面镜子,会把你的感受反射给你 2024 开端: 相由心生 那时,还带着一着愤懑,因为拿到了低绩效,虽然内心知道这是公司经营困难,想让我离开的一种策略,但仍然感受到自己那可笑的自尊受到了践踏。自那之后,非必要不加班,只做份内事,尽可能地不去涉及份外之事。 2024 年中: 与人为善 组里的项目眼见不行了,我被迫去支援 AI 项目,久违地写起了 python,项目接近完成时,意外收到通知:我拿到大礼包了。在这之前,架构师因故裸辞。在我离开之后不到两周,我的 TL 也裸辞了,直到同事告诉...

Jan 9, 20251 min read92

企业软件之殇

殇 动词 未成年而死。 名词 战死者。 笔者经历了两家打着云原生旗号的企业软件/解决方案公司,都是中途加入,项目都以解(失)散(败)告终。 云原生解决方案 NB 公司:一个传统的 IDC 小厂,想着借云原生的热度,进军企业软件市场。 在加入这个项目之前,笔者考取了 CKAD 认证,彼时对 K8s 相当着迷。先简要介绍一下这个项目背景: 基于 Rancher (换皮肤)的二次开发项目,名字叫:HCaaS ,在笔者加入这个团队之前,项目已经开发近两年了,除了 TL 之外,其它人之前都...

Jul 1, 20241 min read103

just for fun

57 posts

I'm a Software Engineer

我的解题之路:安装K8s