K3s轻量集群住宅机器搭建:用旧电脑在家搭建K3s轻量集群
家里有几台闲置的旧电脑或树莓派?
装个K3s轻量集群,就能让它们变成一个小型云平台。
K3s是专为资源受限场景设计的Kubernetes发行版,安装包不到100MB,内存占用极低,非常适合住宅机器搭建。
本文将指导你从零开始,在同一局域网内完成K3s集群的搭建和验证。
准备硬件与系统
至少需要两台机器:一台作为Master节点(控制平面),一台作为Worker节点。
如果只有一台,也可以在Master上同时运行工作负载(部署时去掉taint即可)。
硬件最低要求:1核CPU、512MB内存、2GB硬盘。
推荐使用Ubuntu 20.04/22.04 LTS(树莓派可用Ubuntu Server或Raspberry Pi OS)。
所有机器须在同一局域网,并确保彼此网络互通。
登录每台机器,先更新系统并关闭交换分区(Kubernetes要求关闭swap):
sudo apt update && sudo apt upgrade -y
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/' /etc/fstab
如果开启防火墙,需要放行相关端口:Master放行6443、10250等,Worker放行10250、30000-32767等。
为简化操作,可先临时关闭防火墙测试。
一键安装K3s Master节点
在选定作为Master的机器上执行以下命令安装K3s Server:
curl -sfL https://get.k3s.io | sh -
安装完成后,K3s会自动配置kubectl并生成节点连接令牌。
执行以下命令查看节点状态:
sudo kubectl get nodes
如果显示Master状态为Ready,则主节点安装成功。
记下Master的IP地址(可用ip a查看)。
获取连接令牌(用于Worker加入集群):
sudo cat /var/lib/rancher/k3s/server/node-token
输出一串长字符串,后面会用到。
Worker节点加入集群
在每台Worker机器上执行安装命令,并指定Master地址和令牌:
curl -sfL https://get.k3s.io | K3S_URL=https://:6443 K3S_TOKEN=<你的令牌> sh -
把换成Master的IP地址,<你的令牌>换成刚才获取的令牌。
安装完成后,回到Master节点执行sudo kubectl get nodes,你会看到Worker节点已经以Ready状态加入集群。
避坑指南与常见问题
- 端口被占用:如果Master安装失败,检查6443端口是否已被占用,可以换用
INSTALL_K3S_EXEC="--tls-san 你的IP"参数。 - 节点状态NotReady:通常是因为CNI插件未正确启动。可以查看Pod状态:
sudo kubectl get pods -n kube-system,尝试重启相关Pod。 - 内存不足:默认k3s会给每个Pod预留内存,如果机器内存只有512MB,建议安装时添加
--kubelet-arg "system-reserved=memory=100Mi"等参数。 - 使用Docker作为容器运行时:默认K3s使用containerd,若想改用Docker,安装时加上
--docker参数。 - 如何开机自启:K3s服务默认随系统启动(systemd服务),一般无需额外设置。
验证集群并部署一个测试应用
为了让新手直观感受集群的运行,我们部署一个简单的Nginx服务:
sudo kubectl create deployment nginx-test --image=nginx
sudo kubectl expose deployment nginx-test --port=80 --type=NodePort
查看服务端口:sudo kubectl get svc nginx-test,会看到类似80:31234/TCP的信息。
然后在浏览器中访问任意节点IP+该端口(例如http://192.168.1.100:31234),如果看到Nginx欢迎页,说明K3s集群正常工作。
至此,你在住宅机器上成功搭建了一个可用的K3s轻量集群。
这个集群可以用于学习Kubernetes、运行个人服务或做开发测试。
后续可以根据需要调整资源分配、添加持久化存储或启用Helm等工具。
如果在搭建过程中遇到其他问题,欢迎查阅官方文档或留言交流。