别再折腾K8S了!用K3S在5分钟内搞定你的第一个轻量级Kubernetes集群(单Master版)
5分钟极速搭建K3S单节点集群:开发者的轻量级Kubernetes初体验
当你想学习Kubernetes却对着官方文档里复杂的组件列表和配置步骤望而却步时,K3S就像一位贴心的向导,为你打开容器编排世界的大门。这个由Rancher实验室专为边缘计算和简易部署设计的轻量级发行版,保留了K8S的核心功能,却将安装包缩小到40MB左右,内存占用仅为传统K8S的1/4。更妙的是,它内置了containerd、Flannel网络插件和Traefik入口控制器,让初学者无需纠结组件选型就能获得完整功能。
1. 环境准备与核心概念
在开始之前,我们先理清几个关键点。K3S采用"单二进制"架构,这意味着:
- All-in-One设计 :kube-apiserver、kube-controller-manager等核心组件被编译进单个二进制文件
- 简化网络 :默认集成Flannel作为CNI插件,省去网络配置烦恼
- 内置工具链 :自动包含kubectl、crictl等常用工具
与标准K8S相比,K3S的主要差异体现在:
| 特性 | K8S | K3S |
|---|---|---|
| 安装包大小 | ~700MB | ~40MB |
| 内存占用 | 2GB+ | 512MB即可运行 |
| 默认容器运行时 | 无默认 | containerd |
| 学习曲线 | 陡峭 | 平缓 |
准备一台满足以下条件的机器:
- 任意Linux发行版或macOS(Windows可通过WSL2运行)
- 1核CPU/1GB内存(最低配置)
- 开放6443端口(单节点模式下仅本地访问)
提示:生产环境建议至少2核CPU/4GB内存,本文演示使用个人笔记本即可完成
2. 一键安装Master节点
让我们用最简命令启动集群。打开终端执行:
curl -sfL https://get.k3s.io | sh -
这个魔法般的命令完成了以下操作:
- 下载最新稳定版K3S二进制文件
- 自动安装为systemd服务并启动
-
生成kubeconfig文件于
/etc/rancher/k3s/k3s.yaml -
创建
kubectl别名指向k3s
安装完成后验证集群状态:
sudo kubectl get nodes
# 应看到类似输出:
# NAME STATUS ROLES AGE VERSION
# localhost Ready control-plane,master 45s v1.24.2+k3s2
关键文件位置备忘:
-
主配置文件:
/etc/rancher/k3s/k3s.yaml -
服务日志:
journalctl -u k3s -f -
数据存储:
/var/lib/rancher/k3s/
3. 部署你的第一个应用
让我们用经典的Nginx来检验集群。创建
nginx.yaml
文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port: 80
nodePort: 30080
selector:
app: nginx
应用配置并验证:
kubectl apply -f nginx.yaml
kubectl get pods -o wide
kubectl get svc
访问应用(根据环境选择):
-
Linux/macOS:
curl http://localhost:30080 -
浏览器访问:
http://<服务器IP>:30080
4. 日常管理与问题排查
掌握几个高效管理命令:
查看集群信息
kubectl cluster-info
k3s check-config # 验证系统配置
资源监控
kubectl top nodes # 需metrics-server组件
kubectl top pods
常见问题处理
- 端口冲突解决:
sudo systemctl stop k3s
sudo k3s server --https-listen-port 8443 # 修改API端口
- 重置集群:
/usr/local/bin/k3s-uninstall.sh
- 查看组件日志:
journalctl -u k3s -f # Master节点
journalctl -u k3s-agent -f # Worker节点
性能优化参数
在
/etc/rancher/k3s/config.yaml
中添加:
write-kubeconfig-mode: "0644"
disable:
- traefik # 如果不需要Ingress控制器
node-taint:
- "CriticalAddonsOnly=true:NoExecute" # 主节点专用
5. 进阶配置技巧
虽然单节点已能满足学习需求,但了解这些技巧能让你的集群更专业:
使用Docker作为运行时
curl -sfL https://get.k3s.io | sh -s - --docker
配置私有镜像仓库
创建
/etc/rancher/k3s/registries.yaml
:
mirrors:
"myreg.com":
endpoint:
- "https://myreg.com:5000"
configs:
"myreg.com:5000":
auth:
username: xxxxxx
password: xxxxxx
启用Traefik Dashboard
编辑
/var/lib/rancher/k3s/server/manifests/traefik.yaml
,在valuesContent部分添加:
dashboard:
enabled: true
domain: "traefik.local"
持久化存储配置 K3S默认提供local-path-provisioner,创建PVC示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-path-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-path
resources:
requests:
storage: 1Gi
我在实际测试中发现,当在树莓派集群上运行K3S时,内存占用可以控制在300MB以下,这对于资源受限的边缘设备特别有价值。有个小技巧是通过
--disable=servicelb
参数禁用内置的LB服务,能进一步减少约50MB内存消耗。
更多推荐
所有评论(0)