
K3S介绍
K3s 是一个专为资源受限环境(如 IoT 设备、边缘计算和小型集群)设计的轻量级 Kubernetes 发行版。它由 Cloud Native Computing Foundation (CNCF) 认证,并提供了完整的 Kubernetes 功能,但占用空间更小。
核心特性
- 轻量级:体积仅为典型 Kubernetes 安装的 10%。
- 易于安装:简单的安装过程,几乎不需要额外配置。
- 自动更新:内置自动更新机制,确保始终运行最新版本。
- 嵌入式数据库:默认使用 SQLite 数据库,无需外部数据库支持。
- 支持 ARM 架构:非常适合在低功耗设备(如 Raspberry Pi 或自定义 RISC-V 板)上运行。
- 极低的资源需求:专为 CPU 和内存资源有限的系统设计,运行高效。
环境准备
获取IP地址
启动好集群板之后,先获取各个板子的IP地址: 方法1:直接打开路由器的管理界面,找到各个节点IP。 方法2:用串口工具连接到集群板子调试,输入命令:
ifconfig
方法3:在另一机器上用fping扫描网段IP
没有fping的话需要先安装fping
sudo apt update
sudo apt install fping
fping -a 192.168.2.1 192.168.2.255 -g -q
192.168.2.113
192.168.2.116
192.168.2.117
192.168.2.120
再通过arp工具查看IP对应的MAC地址
arp
地址 类型 硬件地址 标志 Mask 接口
192.168.2.116 ether fe:fe:fe:12:34:58 C end1
192.168.2.117 ether fe:fe:fe:12:34:59 C end1
192.168.2.113 ether fe:fe:fe:12:34:66 C end1
192.168.2.120 ether fe:fe:fe:12:34:67 C end1
MAC 地址前面几位相同的便是我们的集群,这样就可以获取到各个K1核心板的IP了。
当前示例中集群IP为:192.168.2.113、192.168.2.116、192.168.2.117、192.168.2.120,其中120的为主节点。
安装k3s
通过ssh连接上四个节点

下载k3s
下载社区打包好的k3s执行文件
bit-brick-desktop% ls
k3s-riscv64.gz.aa k3s-riscv64.gz.ab k3s-riscv64.gz.ac
解压可执行k3s可执行文件
由于预编译好的k3s包已被分为三个文件,因此需要将三个文件合并为一个文件并且解压加上执行权限
bit-brick-desktop% cat k3s-riscv64.gz.a* > k3s-riscv64.gz
bit-brick-desktop% gzip -d k3s-riscv64.gz
bit-brick-desktop% chmod +x k3s-riscv64
执行一下 k3s-riscv64命令,确认是否可以运行
bit-brick-desktop% ./k3s-riscv64
NAME:
k3s-riscv64 - Kubernetes, but small and simple
USAGE:
k3s-riscv64 [global options] command [command options] [arguments...]
VERSION:
v1.31.1+k3s-34f8fa8d (34f8fa8d)
COMMANDS:
server Run management server
agent Run node agent
kubectl Run kubectl
crictl Run crictl
ctr Run ctr
check-config Run config check
token Manage bootstrap tokens
etcd-snapshot
secrets-encrypt Control secrets encryption and keys rotation
certificate Manage K3s certificates
completion Install shell completion script
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--debug (logging) Turn on debug logs [$K3S_DEBUG]
--data-dir value, -d value (data) Folder to hold state default /var/lib/rancher/k3s or ${HOME}/.rancher/k3s if not root [$K3S_DATA_DIR]
--help, -h show help
--version, -v print the version
将k3s-riscv64文件复制到/usr/local/bin/下,并更名为k3s
bit-brick-desktop% sudo cp k3s-riscv64 /usr/local/bin/k3s
注意:上面的步骤在四个节点都要执行
Master节点安装k3s
我的主节点是192.168.2.120
先下载k3s.sh脚本
curl -sfL https://get.k3s.io > k3s.sh
chmod +x k3s.sh
执行k3s.sh脚本
bit-brick-desktop% INSTALL_K3S_EXEC="server --advertise-address 192.168.2.120" INSTALL_K3S_SKIP_DOWNLOAD="true" bash -x ./k3s.sh
INSTALL_K3S_SKIP_DOWNLOAD="true"
表示跳过下载k3s二进制文件,直接使用本地的k3s二进制文件。
查看服务状态
systemctl status k3s
● k3s.service - Lightweight Kubernetes
Loaded: loaded (/etc/systemd/system/k3s.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-04-22 15:25:10 CST; 1min 1s ago
Docs: https://k3s.io
Main PID: 881 (k3s-server)
Tasks: 54
Memory: 630.7M (peak: 648.7M)
CPU: 2min 22.682s
CGroup: /system.slice/k3s.service
├─ 881 "/usr/local/bin/k3s server"
└─1742 "containerd "
正常应输出 active (running)。
查看节点状态
使用命令查看节点
sudo kubectl get nodes
结果如下
spacemit-k1-x-bit-brick-board% sudo kubectl get nodes
[sudo] bit-brick 的密码:
NAME STATUS ROLES AGE VERSION
spacemit-k1-x-bit-brick-board Ready control-plane,master 2m51s v1.31.1+k3s-34f8fa8d
主节点应显示 Ready(若显示 NotReady,通常是网络插件未配置)。
获取加入令牌
sudo cat /var/lib/rancher/k3s/server/node-token
此Token用于工作节点加入集群。
Agent节点安装k3s
k3s中不允许存在相同的主机名,先把各个节点设置唯一主机名
sudo hostnamectl set-hostname node-113
当然也可以在安装K3S时指定node名称 以此类推
以192.168.2.113为例:
# 以192.168.2.113为例:
K3S_URL=https://192.168.2.120:6443 \
K3S_TOKEN="K105d480b39525f7b32cd63980819ab20284ba0f3edf4d41e9db3edc7428b205fbd::server:92e4391689e15760421cda0859751854" \
INSTALL_K3S_SKIP_DOWNLOAD="true" \
INSTALL_K3S_EXEC="agent --node-name node-113" \
bash -x ./k3s.sh
同样的在116节点安装
K3S_URL=https://192.168.2.120:6443 \
K3S_TOKEN="K105d480b39525f7b32cd63980819ab20284ba0f3edf4d41e9db3edc7428b205fbd::server:92e4391689e15760421cda0859751854" \
INSTALL_K3S_SKIP_DOWNLOAD="true" \
INSTALL_K3S_EXEC="agent --node-name node-116" \
bash -x ./k3s.sh
同样的在117节点安装
K3S_URL=https://192.168.2.120:6443 \
K3S_TOKEN="K105d480b39525f7b32cd63980819ab20284ba0f3edf4d41e9db3edc7428b205fbd::server:92e4391689e15760421cda0859751854" \
INSTALL_K3S_SKIP_DOWNLOAD="true" \
INSTALL_K3S_EXEC="agent --node-name node-117" \
bash -x ./k3s.sh
一切就绪后在主节点中执行命令查看节点状态
spacemit-k1-x-bit-brick-board% sudo kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node-113 Ready <none> 2m29s v1.31.1+k3s-34f8fa8d 192.168.2.113 <none> Bianbu 2.1 6.6.63 containerd://1.7.21-k3s2
node-116 Ready <none> 53s v1.31.1+k3s-34f8fa8d 192.168.2.116 <none> Bianbu 2.1 6.6.63 containerd://1.7.21-k3s2
node-117 Ready <none> 9s v1.31.1+k3s-34f8fa8d 192.168.2.117 <none> Bianbu 2.1 6.6.63 containerd://1.7.21-k3s2
spacemit-k1-x-bit-brick-board Ready control-plane,master 22m v1.31.1+k3s-34f8fa8d 192.168.2.120 <none> Bianbu 2.1 6.6.63 containerd://1.7.21-k3s2
至此我们就完成了在K1集群K3S集群的安装,可以通过K3S来管理我们的集群板了。^_^