ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Sealos 集群部署与应用交付实战指南:一条命令拉起 K8s,再十分钟上线一个应用

Sealos 集群部署与应用交付实战指南:一条命令拉起 K8s,再十分钟上线一个应用

Sealos 集群部署与应用交付实战指南:一条命令拉起 K8s,再十分钟上线一个应用

【免费下载链接】Sealos以应用为中心的智能云操作系统项目地址: https://gitcode.com/labring/Sealos

搭建一个能跑业务的 Kubernetes 集群,传统做法是把装二进制、配证书、调 containerd、装网络插件、写 Ingress 这几十步全部手工走完,任何一步偏差都要回头排查。Sealos 把这套流程压缩成一条sealos run命令:指定集群镜像和节点 IP,几分钟内得到一套带 Helm 和 Cilium 的多节点 K8s 集群;而"应用上线"也不再是写 YAML,而是打开桌面里的 App Store 点几下鼠标的事。本文以这个仓库的实际目录和文档为参照,走一遍从安装到交付的完整动线。

一屏看懂 Sealos:把"集群 + 应用"装进一个云操作系统

Sealos 的定位是构建在 Kubernetes 之上的云操作系统(Cloud OS),核心思路有两个:

  • 集群镜像:像容器镜像一样用 OCI 标准打包一套完整的集群环境(K8s + 组件 + 配置),sealos run时按镜像内容把节点装到位,环境差异被锁在镜像里。
  • 应用为中心:桌面(Desktop)里的每个图标就是一个应用——App Store 装模板、App Launchpad 装任意镜像、Devbox 管开发环境、Terminal 管底层操作,界面动线和普通操作系统一致。
能力解决的痛点适合谁
集群镜像 +sealos runK8s 集群部署步骤多、易出错平台 / 运维
App Store常用应用从零编排成本高快速搭建演示、团队共享环境
App Launchpad私有镜像上线要手写 Deployment/Ingress应用开发者
Devbox本地环境不一致、依赖装不齐研发团队
托管数据库自建 MySQL/PostgreSQL/Redis 运维重业务方
Terminal查问题要 SSH 进节点所有人

从 0 到运行:三步跑通最短路径

第一步:用安装脚本装好 CLI

仓库里的 scripts/install.sh 会自动完成四件事:按uname -m识别架构(amd64/arm64)、校验 curl/wget 可用、下载对应二进制装到/usr/bin、最后用sealos version自检。

# 从项目获取安装脚本后执行(latest 表示拉取最新发布版本) sh install.sh latest labring/sealos sealos version

第二步:一条命令装出多节点 Kubernetes 集群

在第一台 master 节点上执行(sealos run要求从集群节点内部发起):

# 三 master + 两 worker 的高可用集群 sealos run labring/kubernetes:v1.28.3 labring/helm:v3.9.4 labring/cilium:v1.13.4 \ --masters 192.168.64.2,192.168.64.22,192.168.64.20 \ --nodes 192.168.64.21,192.168.64.19 \ --passwd '<各节点SSH密码>' # 只想先验证流程?单节点集群更省事 sealos run labring/kubernetes:v1.28.3 --single

镜像之间是有顺序讲究的:labring/helm必须排在labring/cilium前面。装完后集群内 kubectl 即可用,常用生命周期命令:

sealos status # 查看集群状态 sealos reset # 销毁当前集群(不可逆,操作前先确认)

第三步:从 App Store 装一个现成应用

集群就绪后,打开 Sealos Desktop,进入App Store,左上角搜索框直接定位目标应用(如博客 Flarum、论坛、AI 应用等),进入详情点击Deploy App。等待所有组件状态变为 running 后,回到桌面点击该应用图标即可直接访问。整个过程不需要写任何 YAML。

核心场景拆解

App Launchpad:任意镜像到可访问 URL,最短 5 分钟

App Store 里没有的镜像(尤其是私有仓库镜像),用 App Launchpad 直接部署:

  1. 桌面点击App Launchpad → New Application,填写应用名与镜像名,勾选 External Access(分配公网访问域名);
  2. 部署完成后点 Details,能看到 CPU/内存实时指标,点外链即可打开服务;
  3. 数据不落盘的演示可以到此为止;需要持久化时,在同一页面配置持久卷(Persistent Volume),数据不会随 Pod 重建丢失。

进阶能力都在 Launchpad 配置项里:多副本、自定义域名、ConfigMap 配置、多端口暴露、应用内 Terminal 一键进入。对应的操作文档在 docs/archived/5.0/docs/user-guide/app-launchpad/。

托管数据库:把 Operator 的复杂度收进界面

需要 MySQL、PostgreSQL、Redis、MongoDB 或 S3 兼容对象存储时,直接在桌面创建实例:选引擎与规格、设置访问方式,实例详情页提供连接串和访问信息,备份与规格变更也在这里完成。对于"业务方要个库"这种高频需求,这比让每个团队自己起一个 Operator 实例现实得多。

Devbox:把开发环境也变成"点一下"

Devbox(云端开发环境)的动线以 Next.js 为例:

  1. 桌面点击Devbox → Create New Project,选择框架(Next.js 等),用滑块设置 CPU/内存;
  2. Network 部分填容器端口(如 3000)、打开 Internet Access,系统默认分配一个子域名,也可改绑自定义域名;
  3. 在项目列表的 Operation 列选择 Cursor / VSCode / VSCode Insiders,本地 IDE 通过 SSH 远程连入云端工程,直接改代码;
  4. 推送后 Devbox 负责构建与部署,不需要本地装 Docker 和 K8s。

团队里"我本地能跑"的问题,本质是环境不一致;把环境收进云端并按项目隔离,这一步就能消掉。

Terminal:你的终端本身就是个 Pod

桌面里的 Terminal 与操作系统终端行为一致,但要注意一点:每个用户的 Terminal 实际运行在一个 Kubernetes Pod 里,这意味着它天然带着集群的 kubectl 权限——可以直接查看应用容器、进入容器调试,也能连进托管数据库。排障动线变成"Terminal 里 kubectl get → 进容器 → 看日志",不用在节点之间 SSH 跳来跳去。

进阶与避坑

sealos run之前容易被忽略的前置条件

集群装不出来,九成问题出在环境而不是命令本身。官方前置清单(见 deploy-kubernetes.md)值得逐条核对:

  • sealos run必须在第一台 master 节点上执行,从集群外机器远程发起目前不支持;
  • 用干净系统,不要预装 Docker,容器运行时由 Sealos 通过 containerd 接管,预装的 Docker 会互相打架;
  • 各节点主机名唯一且不含下划线;全集群时间同步(chrony/ntp);
  • 公有云场景--masters/--nodes填内网 IP;
  • 镜像顺序:labring/helm在labring/cilium之前;
  • K8s 版本选同一主/次版本下 patch 最高的(如 v1.28.3),稳定性最好。

自定义域名 + TLS 证书:cert-manager 卡住时的手动方案

绑了自定义域名但浏览器提示证书不安全,多半是 cert-manager 没签发成功。手动补证书的路径是"建 Secret → patch Ingress":

# 1. 用你的证书与私钥建一个 tls secret kubectl create secret tls my-tls --cert tls.crt --key tls.key # 2. 把 secret 挂到应用对应的 ingress 上 kubectl patch ingress <ingress名称> -p \ '{"spec":{"tls":[{"hosts":["your.domain"],"secretName":"my-tls"}]}}'

前提是域名 CNAME 已指到集群入口。完整步骤截图在 set-cert.md。

HPA 自动扩缩容:用 CPU 阈值控制副本数

Launchpad 内置了 Horizontal Pod Autoscaler(HPA,按指标自动增减 Pod 副本数)。规则很直白:设定 CPU 使用率阈值(如 50%)和副本区间(如 1~5),当所有实例的平均 CPU 超过阈值时自动加副本直到上限,低于阈值时自动缩回下限,但至少保留 1 个实例。压测前把它配上,比事后手动kubectl scale靠谱。

许可边界:允许什么、不允许什么

Sealos 采用的是 Sealos Sustainable Use License(见 LICENSE.md),不是标准开源许可:内部业务使用与个人非商业用途允许;以它对外提供云服务(即把平台能力作为服务卖给第三方)不允许。用之前过一遍许可条款,尤其是 SaaS 化场景。

延伸资源与上手清单

仓库内的资料入口:

  • 集群镜像与 CLI 完整文档:docs/archived/5.0/docs/developer-guide/lifecycle-management/(含sealos run参数、离线安装、镜像构建)
  • 用户指南(App Store / Launchpad / Devbox / Terminal / 数据库):docs/archived/5.0/docs/user-guide/
  • CLI 命令源码(想确认某个子命令的行为时直接翻):lifecycle/cmd/sealos/
  • 安装脚本:scripts/install.sh
  • 版本变更记录:CHANGELOG/

建议的上手顺序:

  1. sealos version确认 CLI 可用;
  2. sealos run labring/kubernetes:v1.28.3 --single先装单节点,确认全流程无阻塞;
  3. 换多 master 参数重装,验证高可用形态;
  4. 在 App Store 部署一个模板应用,熟悉"部署 → 访问"动线;
  5. 用自己的私有镜像走一遍 App Launchpad,加上持久卷;
  6. 给核心应用配 HPA 与自定义域名,跑一次压测观察扩缩容行为。

按这个顺序走完,你就同时掌握了"集群怎么装"和"应用怎么交付"两条主线,后续无论是自建平台还是给团队共享环境,都有可直接复用的基线。

【免费下载链接】Sealos以应用为中心的智能云操作系统项目地址: https://gitcode.com/labring/Sealos

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进