武汉勇远科技
勇远科技微信二维码
微信咨询
扫一扫获取方案
24小时服务热线
177 6259 3139

面向中小企业的一键化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.12192.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 是通往云原生时代最轻快的门票。