面向中小企业的一键化K3s轻量级集群部署与Helm实战
1. 背景与企业痛点
在容器化席卷 IT 界的今天,Kubernetes (K8s) 已成为不争的行业标准。然而,传统 K8s (kubeadm 部署方案) 对中小型企业极度不友好:
1. 运维门槛过高:复杂的 etcd 脑裂排障、多如牛毛的证书更新、海量的核心组件让人望而却步。
2. 资源占用惊人:传统 K8s 哪怕什么业务都不跑,单节点 Master 也会吃掉至少 2GB 内存。
作为边缘计算和物联网领域的利器,Rancher 团队推出的 K3s 是一个将全套 Kubernetes 压缩进单个 <60MB 的二进制文件中的超轻量级发行版。对于无需运维万台规模集群的中小企业,K3s 是容器化转型的最佳答案。
本文将演示如何在 3 台纯净的 Linux (Ubuntu 22.04) 服务器上,通过几条命令部署生产级的 K3s 集群,并使用 Helm 发布一个 Nginx 测试应用。
2. 节点规划与环境准备
- Server (Master 节点):
192.168.10.11 - Agent 1 (Worker 节点):
192.168.10.12 - Agent 2 (Worker 节点):
192.168.10.13
环境要求:所有节点关闭防火墙 (ufw disable),关闭交换分区 (swapoff -a 并在 /etc/fstab 中注释掉 swap 行)。
3. 一键部署 K3s 集群
K3s 默认采用内置的 SQLite 替代繁重的 etcd,极大地提升了稳定性并降低了资源占用(高可用架构可外接 MySQL/PostgreSQL)。
3.1 部署 Server 节点 (Master)
登录到 192.168.10.11,执行国内镜像源的一键安装脚本:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh |
INSTALL_K3S_MIRROR=cn
sh -s - server --cluster-init
执行完毕后,检查节点状态:
kubectl get nodes
如果看到 Ready,说明 Master 节点已部署成功。提取加入集群所必须的 Token:
cat /var/lib/rancher/k3s/server/node-token
# 记录输出的一长串 Token 字符串,例如:K10xxx...::server:xxx
3.2 部署 Agent 节点 (Worker)
分别登录到 192.168.10.12 和 192.168.10.13,执行加入集群的命令:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh |
INSTALL_K3S_MIRROR=cn
K3S_URL=https://192.168.10.11:6443
K3S_TOKEN="<在此处填入你刚才记录的Token>"
sh -
回到 Master 节点,再次执行 kubectl get nodes,您将看到一个包含 3 个节点的完整 Kubernetes 集群已经准备就绪。整个过程耗时甚至不到 2 分钟!
4. Helm 包管理器实战:发布首个服务
K3s 默认自带了非常优秀的组件:Flannel CNI 网卡、Local-Path 存储类,以及高性能的 Traefik Ingress。
我们现在使用 K8s 界的 “apt-get” —— Helm,来一键发布业务。
4.1 安装 Helm
在 Master 节点执行:
wget https://get.helm.sh/helm-v3.12.0-linux-amd64.tar.gz
tar -zxvf helm-v3.12.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
4.2 利用 Helm 部署 Bitnami Nginx
添加知名的 Bitnami 仓库并更新:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
拉取并安装 Nginx 应用,同时挂载到 LoadBalancer:
helm install my-web bitnami/nginx --set service.type=LoadBalancer --set service.port=8080
K3s 内置了一个名为 Klipper 的轻量级 LoadBalancer 控制器。执行:
kubectl get svc
你会看到 my-web-nginx 被分配了一个对外开放的 IP 和端口。直接在局域网内用浏览器访问该节点的 IP 和映射端口,就能看到熟悉的 “Welcome to nginx!” 页面。
5. 总结
K3s 完全保留了原生 Kubernetes 的 API 与语义,但在底层做了一次极为惊艳的“瘦身”。企业可以通过 K3s 在极低的硬件成本下,享受到 K8s 强大的应用编排、滚动升级和故障自愈能力。抛弃繁重的 kubeadm,K3s 是通往云原生时代最轻快的门票。