K3s轻量集群搭建实战:零基础也能上手
为什么你需要一个K3s轻量集群
如果你刚接触容器化部署,又不想被完整的Kubernetes集群复杂度劝退,K3s是最好的起点。
它是Rancher团队开发的轻量级Kubernetes发行版,二进制文件不到100MB,内存占用极低,特别适合小团队、个人开发者或边缘计算场景。
本文会带你从零开始,在两台Linux服务器上搭建一个K3s轻量集群,并验证它能否正常工作。
准备工作:两台能联网的Linux机器
你需要准备两台服务器(可以是云服务器、虚拟机或树莓派),都安装Ubuntu 20.04/22.04或CentOS 7/8。
假设它们的IP分别是:
- 主节点(Server):192.168.1.10
- 工作节点(Agent):192.168.1.11
确保两台机器都能正常访问互联网,并且防火墙允许下列端口:
- 主节点:TCP 6443(Kubernetes API)、UDP 8472(Flannel VXLAN)、TCP 10250(kubelet)
- 工作节点:TCP 10250、UDP 8472
如果用的是云服务器,记得在安全组中放行这些端口。
另外,所有操作都使用root用户或具有sudo权限的用户执行。
第一步:在主节点上安装K3s服务端
登录到主节点(192.168.1.10),执行以下命令一键安装K3s server版本:
curl -sfL https://get.k3s.io | sh -
安装完成后,检查服务状态:
sudo systemctl status k3s
你应该看到 active (running) 的字样。
接着查看节点的Token,后续工作节点需要用它来加入集群:
sudo cat /var/lib/rancher/k3s/server/node-token
输出类似 K10764... 的一串字符,请记下来。
第二步:在工作节点上加入集群
登录到工作节点(192.168.1.11),执行加入命令。
注意将下面的 SERVER_IP 替换为主节点的实际IP,NODE_TOKEN 替换为你刚获取的token:
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.1.10:6443 K3S_TOKEN=K10764... sh -
安装完成后,回到主节点,运行以下命令查看所有节点:
sudo kubectl get nodes
如果看到两个节点都处于 Ready 状态,说明工作节点成功加入。
常见问题与避坑指南
问题1:安装时卡住或报错“Failed to connect to github.com”
国内网络访问GitHub可能不稳定,建议使用镜像安装:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
问题2:工作节点加入后状态一直是NotReady
通常是因为Flannel网络插件未正确通信。
检查主节点防火墙是否放行了UDP 8472,并确保工作节点能ping通主节点。
问题3:默认的Traefik ingress占用80/443端口
如果这些端口已经被其他Web服务占用,可以在安装时禁用默认ingress:
curl -sfL https://get.k3s.io | sh -s - --disable=traefik
验证集群能否真正运行容器
部署一个简单的Nginx测试Pod来验证:
sudo kubectl create deployment nginx-test --image=nginx
sudo kubectl expose deployment nginx-test --port=80 --type=NodePort
sudo kubectl get svc nginx-test
你会看到类似 NodePort: 的端口映射。
然后在浏览器中访问主节点IP加该端口,比如 http://192.168.1.10:30080,如果出现Nginx欢迎页,说明你的K3s轻量集群已经可以正常调度容器了。
总结
通过以上步骤,你拥有了一个最小可用的K3s轻量集群。
它占用资源极少,但具备完整的Kubernetes核心能力。
后续你可以尝试部署Web应用、数据库,或者集成Helm来管理更复杂的服务。
如果遇到任何问题,回看“常见问题与避坑指南”部分,通常都能找到解决办法。
祝你集群稳定运行!