使用 sealos 一键部署 k8s 集群

📝 背景

随着微服务架构的普及,越来越多的应用被打包成容器交付上线。

最初都是使用 Docker 手动运行容器,但当容器数量快速增长时,如何调度、管理、扩缩容和服务发现成为一个巨大挑战。

为了解决这些问题,容器编排工具应运而生,其中两个较早的方案是:

  • 🐳 Docker Swarm:Docker 官方推出的编排工具,轻量简单,但生态较弱。
  • ☸️ Kubernetes(K8s):Google 开源的大型容器编排系统,拥有庞大生态和强大社区支持。

随着时间的发展,Kubernetes 凭借其可扩展性、稳定性和社区活跃度最终脱颖而出,成为业界默认选择,如今已成为事实上的标准。

但是由于 Kubernetes(以下简称k8s) 的复杂性,部署始终是一个难点,我们应该更关注如何去使用,而不是被其部署拦住。

因此本文介绍一个开源的 sealos 工具,可以快速一键部署 k8s 集群,降低上手难度。

PS:个人站点的 docker 服务也越来越多了,计划后续逐渐迁移到 k8s。

🧩 使用场景

  • 想快速部署一个用于测试、开发或学习的 Kubernetes 集群,

PS:生产环境有条件建议使用公有云提供的 k8s 托管服务,私有化部署可以使用该工具。

  • 不想手动配置 kubeadm、kubelet、containerd、etcd 等组件
  • 希望部署过程可复用、可定制、自动化程度高

🔍 什么是 sealos?

Sealos 是一个基于 Kubernetes 构建的云操作系统,也是一个一站式云原生操作平台

它不仅支持一键部署 Kubernetes 集群,还能构建和管理上层 PaaS 资源,例如:

  • 🌐 云应用(CloudApp)打包与分发
  • 📦 离线镜像管理与分发
  • 💾 存储、网络等基础设施自动化部署
  • ☁️ 多云、裸金属、本地环境统一支持

核心亮点包括:

特性 描述
🪄 一条命令安装 K8s sealos run 即可部署完整 Kubernetes 集群
🧱 模块化封装 使用镜像封装 Kubernetes、Helm Charts、插件等组件
🔁 可重复部署 完整声明式配置,支持持续交付和 GitOps
🌍 跨平台支持 支持 x86 / ARM,适配云服务商和边缘设备

⚙️ 前提条件

在开始之前,请准备好以下环境:

  • 至少 1 台 Linux 服务器(推荐 Ubuntu 20.04+ 或 CentOS 7+)

PS:建议使用干净的操作系统来创建集群,不要自己装 Docker!

  • 服务器需开放以下端口:22(SSH)、6443(K8s API)、10250

PS:建议直接关闭服务器的防火墙。

  • 已安装并配置好 ssh,节点之间能互通。
  • 每个集群节点应该有不同的主机名。主机名不要带下划线。
  • 所有节点的时间需要同步(ntp或chrony)。
  • 在公有云上安装请使用私有 IP

🚀 部署步骤

1️⃣ 下载并安装 sealos(二进制)

1
2
3
4
5
6
7
8
# 自动下载安装
curl -sfL https://raw.githubusercontent.com/labring/sealos/main/scripts/install.sh | sh -s v5.0.1

# 若无法正常访问 github 可选择手动下载安装
# 离线安装包请关注公众号【青萍叙事】,回复:sealos ,即可获取下载链接
# 下载后上传到服务器,执行以下命令手动安装
tar zxvf sealos_5.0.1_linux_amd64.tar.gz sealos \
&& chmod +x sealos && mv sealos /usr/bin

PS:其他安装方式可参看官方文档《下载 Sealos 命令行工具》

2️⃣ 一键部署集群

需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令,目前集群外的节点不支持集群安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# All-in-One(本地单节点)适用于学习、验证功能、本地开发使用。
# 由于默认是使用的 containerd 作为运行时,命令跟原有的docker不太一样
# 以下示例改为 Docker 作为运行时,若想保持默认,去掉镜像后面的-docker即可
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
--single

# 单 Master 集群部署(轻量集群)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
--masters 192.168.32.1 \
--nodes 192.168.32.2,192.168.32.3 -p [your-ssh-passwd]

# 多 Master 高可用集群(推荐生产使用)
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
--masters 192.168.32.1,192.168.32.2,192.168.32.3 \
--nodes 192.168.32.4,192.168.32.5 -p [your-ssh-passwd]

3️⃣ 添加集群节点

1
2
3
4
5
# 增加 node 节点
sealos add --nodes 192.168.32.6

# 增加 master 节点
sealos add --masters 192.168.32.10

4️⃣ 删除集群节点

1
2
3
4
5
# 删除 node 节点
sealos delete --nodes 192.168.32.5

# 删除 master 节点
sealos delete --masters 192.168.32.10

5️⃣ 清理集群

1
2
# 一键清理 k8s 集群
sealos reset

6️⃣ 安装常见应用组件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 一键安装 Helm
sealos run registry.cn-shanghai.aliyuncs.com/labring/helm:v3.10.0

# 默认安装的集群是不带网络插件的,因此必须要安装一个网络组件才能正常使用
# 一键安装 calico 网络(依赖Helm)适用于云主机
sealos run registry.cn-shanghai.aliyuncs.com/labring/calico:v3.27.4

# 如果是在自己的私有化虚拟机环境安装,可能需要关闭BGP配置
cat <<EOF | kubectl apply -f -
kind: Installation
apiVersion: operator.tigera.io/v1
metadata:
name: default
spec:
calicoNetwork:
bgp: Disabled
ipPools:
- disableBGPExport: true
cidr: 100.64.0.0/10
encapsulation: VXLAN
EOF

# 一键安装 nginx ingress controller
sealos run registry.cn-shanghai.aliyuncs.com/labring/ingress-nginx:v1.11.3

✅ 总结

Kubernetes 虽然功能强大,但部署门槛较高。

Sealos 将这一复杂过程变为“一条命令”,极大提升了部署效率和学习体验,适合初学者、本地开发者以及希望快速搭建测试环境的用户。

相比传统的 kubeadm 手动部署方式,sealos 带来了:

  • ✅ 极简命令:安装、运行、卸载全自动
  • ✅ 更少依赖:本地无需额外安装 Docker
  • ✅ 可移植性强:支持多种集群形态,支持云端和本地部署