别再折腾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的主要差异体现在特性K8SK3S安装包大小~700MB~40MB内存占用2GB512MB即可运行默认容器运行时无默认containerd学习曲线陡峭平缓准备一台满足以下条件的机器任意Linux发行版或macOSWindows可通过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.2k3s2关键文件位置备忘主配置文件/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/macOScurl http://localhost:30080浏览器访问http://服务器IP:300804. 日常管理与问题排查掌握几个高效管理命令查看集群信息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: - CriticalAddonsOnlytrue:NoExecute # 主节点专用5. 进阶配置技巧虽然单节点已能满足学习需求但了解这些技巧能让你的集群更专业使用Docker作为运行时curl -sfL https://get.k3s.io | sh -s - --docker配置私有镜像仓库创建/etc/rancher/k3s/registries.yamlmirrors: 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以下这对于资源受限的边缘设备特别有价值。有个小技巧是通过--disableservicelb参数禁用内置的LB服务能进一步减少约50MB内存消耗。