云原生新选择:Sealos 介绍与使用场景 – wiki基地


云原生新选择:深入解析 Sealos 及其核心使用场景

引言:云原生时代的挑战与机遇

在当今快速发展的数字化浪潮中,云原生技术已经成为构建、部署和管理现代应用程序的主流范式。以 Kubernetes 为核心的容器编排系统,极大地提高了应用的灵活性、可伸缩性和弹性。然而,拥抱云原生并非坦途。从复杂的 Kubernetes 集群安装、配置,到应用程序及其依赖的打包与分发,再到离线环境、边缘计算、多云异构等特殊场景下的部署与管理,云原生之路充满了挑战。

传统的云原生工具链,如 kubeadmkopsRKE 等,主要聚焦于 Kubernetes 集群本身的安装与管理。而应用部署则依赖 Helm、Operator 或自定义脚本。这种分离的模式,虽然灵活,但在面对需要将 整个分布式系统(包括 Kubernetes 运行时、操作系统依赖以及上层应用)作为一个整体进行打包、分发和管理时,显得力不从心。尤其是在需要在多个不同环境(开发、测试、生产、离线、边缘)中快速、一致地复制同一套环境时,现有工具的组合往往意味着繁琐的手动操作或复杂的自动化脚本。

正是在这样的背景下,Sealos 应运而生。它不仅仅是一个 Kubernetes 安装工具,更是一个以 Kubernetes 为核心的云操作系统发行版,一个将 集群和应用 打包成 一个整体镜像 并进行管理的全新工具。Sealos 提出并实现了 “集群镜像“(Cluster Image)的概念,通过类似 Docker 的 Dockerfile (Kubefile) 来定义集群及其上层应用,并像管理容器镜像一样管理整个集群环境。这为云原生带来了全新的视角和可能性,使其成为解决特定场景下复杂部署与管理问题的“新选择”。

本文将深入探讨 Sealos 的核心理念、架构、关键特性,并通过丰富的实际使用场景,详细阐述为何 Sealos 能够成为云原生领域的一个引人注目的新选项。

第一部分:什么是 Sealos?核心理念与定位

Sealos 是一个开源项目,其核心目标是简化云原生应用程序的部署和管理,尤其是在复杂或受限的环境下。它将 整个 Kubernetes 集群 及其上运行的 所有应用、配置和依赖 打包成一个被称为 “集群镜像” 的独立单元。这个单元可以像 Docker 镜像一样被构建、分发和运行。

Sealos 的核心理念可以概括为:

  1. Kubernetes 是云操作系统内核: 将 Kubernetes 视为分布式系统的基础层,提供统一的资源管理和调度能力。
  2. 一切皆可打包进镜像: 不仅包括 Kubernetes 运行时本身(kubelet, kube-proxy, CNI, CRI 等),还包括操作系统级别的依赖、自定义配置,以及部署在其上的各种分布式应用(数据库、消息队列、监控系统、业务应用等)。
  3. 像管理容器一样管理集群: 提供类似于 docker build, docker run, docker push, docker pull 的命令,但作用对象是整个集群镜像。通过一个简单的命令 (sealos run),即可启动一个完整的、预配置好的 Kubernetes 集群,并在其上部署好所有预期的应用。

Sealos 的定位:

Sealos 定位为一个 “以 Kubernetes 为核心的云操作系统发行版“。它模糊了基础设施(Kubernetes)和应用之间的界限,将它们视为一个统一的、可移植的实体。它不是要取代 Kubernetes 本身,而是提供了一种全新的方式来 构建、分发、安装和管理 整个云原生应用栈。

与传统的 Kubernetes 安装工具(如 kubeadm)相比,Sealos 的关注点更广。kubeadm 主要关注如何引导一个标准的 Kubernetes 集群,后续的应用部署和配置管理需要额外工具。Sealos 则将 Kubernetes 及其上的应用视为一个整体,通过镜像的方式进行端到端管理。

与应用打包工具(如 Helm)相比,Helm 假设你已经拥有一个运行中的 Kubernetes 集群,它负责将应用部署到这个集群上。Sealos 则负责提供一个 包含特定 Kubernetes 版本和特定应用集合 的完整环境,你可以直接运行这个环境。

因此,Sealos 是对现有云原生工具链的一种有力补充,特别适用于那些需要高度一致性、可移植性,或者在离线、边缘等复杂环境下进行大规模部署的场景。

第二部分:Sealos 如何工作?核心概念与架构

理解 Sealos 的工作原理,需要掌握几个核心概念:

  1. 集群镜像 (Cluster Image):
    这是 Sealos 的核心概念。一个集群镜像是一个包含运行一个完整 Kubernetes 集群所需的所有组件以及部署在其上的特定应用程序的打包文件。它通常由多层组成,类似于 Docker 镜像。

    • Rootfs 层: 通常包含操作系统基础、Kubernetes 离线安装包、容器运行时(CRI)、网络插件(CNI)、存储驱动等基础设施组件。
    • 应用层: 在 Rootfs 之上,可以包含各种应用程序的安装包、Helm Chart、Kubernetes YAML 配置、Operator 以及相关的初始化脚本等。你可以将 MySQL、Redis、Kafka、Prometheus 等复杂的分布式应用打包到这些层中。
    • 配置层: 可以包含集群或应用的自定义配置文件、证书等。

    集群镜像的设计理念是模块化和可重用。不同的项目或团队可以基于同一个 Rootfs 层构建不同的应用层镜像,从而实现环境的一致性。

  2. Kubefile:
    类似于 Docker 的 Dockerfile,Kubefile 是用于定义如何构建集群镜像的文本文件。它使用一系列指令来描述构建步骤,例如:

    • FROM: 指定基础镜像(通常是 Rootfs 镜像)。
    • COPY: 将本地文件或目录复制到镜像中(例如 Kubernetes 离线包、应用 Chart)。
    • RUN: 在构建过程中执行命令(例如解压安装包、加载镜像、修改配置)。
    • CMD: 指定集群启动后需要执行的默认命令(例如部署应用)。
    • ARG: 定义构建时可以传递的参数。
    • LABEL: 添加元数据。

    通过 Kubefile,用户可以声明式地定义一个完整的集群环境及其上的应用,使得构建过程可重复且透明。

  3. Sealos CLI:
    Sealos 提供了一个强大的命令行工具,用于与集群镜像进行交互。主要命令包括:

    • sealos build: 根据 Kubefile 构建集群镜像。
    • sealos images: 列出本地的集群镜像。
    • sealos save: 将集群镜像保存到文件。
    • sealos load: 从文件加载集群镜像。
    • sealos push: 将集群镜像推送到镜像仓库。
    • sealos pull: 从镜像仓库拉取集群镜像。
    • sealos run: 这是最核心的命令。 它根据指定的集群镜像,在目标服务器节点上自动完成操作系统的初始化、Kubernetes 的安装与配置、应用的部署与启动等所有步骤,最终得到一个完全可用的集群环境。这个命令是幂等的,可以反复执行。
    • sealos login/logout: 登录/退出镜像仓库。
    • sealos add: 向现有集群添加节点。
    • sealos delete: 从现有集群删除节点。
    • sealos reset: 销毁一个 Sealos 部署的集群。
  4. Cloud Kernel (云内核):
    Sealos 的底层实现依赖其“云内核”,这是一系列自动化脚本和逻辑,负责在 sealos run 命令执行时,协调各个节点的初始化、软件安装、集群配置、应用部署等复杂流程。云内核能够智能处理依赖关系、网络配置、证书生成等任务,并具备一定的容错和幂等性能力,确保部署过程的稳定性和可靠性。

工作流程概览:

  1. 定义环境: 使用 Kubefile 声明式地定义所需的 Kubernetes 版本、操作系统依赖、网络插件、存储插件以及需要部署的应用(Helm Charts, YAMLs 等)。
  2. 构建镜像: 使用 sealos build 命令,Sealos 会读取 Kubefile,从指定的基础镜像开始,按照指令一步步构建出目标集群镜像。这个过程可能包括下载安装包、加载容器镜像、执行配置脚本等。
  3. 分发镜像: 使用 sealos save 将镜像打包成文件,或者使用 sealos push 将镜像推送到远程镜像仓库。
  4. 运行/部署集群: 在目标服务器上,使用 sealos load 加载镜像文件(如果离线),或者确保能从仓库拉取镜像。然后,只需执行 sealos run <image-name> --nodes <node-ips>... 命令。Sealos 会自动连接到指定节点,完成所有必要的安装和配置步骤,最终交付一个包含 Kubernetes 和所有预定应用的可用集群。
  5. 管理集群: 使用 sealos add, sealos delete, sealos reset 命令对 Sealos 部署的集群进行节点管理和销毁。未来的版本也将支持集群的升级和回滚。

第三部分:如何使用 Sealos?基本操作示例

本节通过一个简单的例子,演示如何使用 Sealos 构建一个包含 Nginx 应用的 Kubernetes 集群镜像,并在服务器上运行它。

前提条件:

  • 准备几台服务器(物理机或虚拟机),配置互相可以通过 SSH 免密登录。
  • 在其中一台服务器上安装 Sealos CLI。
  • 确保服务器满足 Kubernetes 的基本要求(如操作系统兼容性、资源、网络连接)。

步骤 1:安装 Sealos CLI

在用于构建镜像或执行 sealos run 命令的机器上执行:

bash
curl -sfL https://sealos.run/install.sh | sh

这会将 sealos 命令安装到你的系统中。

步骤 2:创建一个 Kubefile

创建一个名为 Kubefile 的文件,内容如下:

“`dockerfile

Kubefile

使用官方提供的 Kubernetes v1.24.0 基础镜像 (包含 OS, K8s, CRI, CNI 等)

FROM sealos.cn/kubernetes:v1.24.0

将 Nginx 应用的部署文件复制到镜像中

假设你有一个 nginx.yaml 文件,定义了 Deployment 和 Service

COPY nginx.yaml .

在集群启动后执行的命令,用于部署 Nginx 应用

这里使用 kubectl apply 部署之前复制进来的 nginx.yaml

CMD kubectl apply -f nginx.yaml
“`

创建一个简单的 nginx.yaml 文件:

“`yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
– name: nginx
image: nginx:latest
ports:
– containerPort: 80


apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
– protocol: TCP
port: 80
targetPort: 80
type: NodePort # 方便测试,生产环境可能用 LoadBalancer 或 Ingress
“`

Kubefilenginx.yaml 放在同一个目录下。

步骤 3:构建集群镜像

在包含 Kubefilenginx.yaml 的目录下执行:

bash
sealos build -t my-nginx-cluster:v1.0 .

这个命令会读取当前目录下的 Kubefile,并构建一个名为 my-nginx-cluster,标签为 v1.0 的集群镜像。Sealos 会拉取基础镜像,然后执行 COPY 指令将 nginx.yaml 放入镜像中。构建完成后,你可以通过 sealos images 查看本地镜像列表。

步骤 4:运行集群

准备好几台服务器的 IP 地址(例如:192.168.10.101, 192.168.10.102, 192.168.10.103)。确保 Sealos CLI 所在的机器可以通过 SSH 免密连接到这些节点。然后执行:

bash
sealos run my-nginx-cluster:v1.0 \
--nodes 192.168.10.101,192.168.10.102,192.168.10.103 \
--user root --passwd your_password # 或者使用 --key-file /path/to/ssh_key

替换 your_password--key-file 为实际的认证信息。

Sealos 会自动执行以下操作:

  1. 通过 SSH 连接到所有节点。
  2. 检查节点环境,进行必要的系统初始化(如关闭防火墙、Swap 等)。
  3. 将集群镜像分发到所有节点。
  4. 根据镜像内容,在节点上安装 Kubernetes 运行时和依赖。
  5. 初始化和配置 Kubernetes 集群。
  6. 加载集群镜像中的容器镜像(如果需要)。
  7. 执行 Kubefile 中的 CMD 指令,部署 Nginx 应用。

整个过程可能需要几分钟到十几分钟,具体取决于网络和机器性能。完成后,Sealos 会输出集群的状态信息,包括 kubeconfig 文件的位置。

步骤 5:验证 Nginx 应用

在 Sealos CLI 所在的机器上,配置 kubectl 使用生成的 kubeconfig 文件,然后验证 Nginx 应用:

“`bash
export KUBECONFIG=~/.sealos/my-nginx-cluster/admin.conf # 根据 Sealos 输出的路径修改
kubectl get pods -n default -l app=nginx
kubectl get svc -n default nginx-service

根据 Service 的 NodePort 访问 Nginx 应用

“`

步骤 6:清理集群

如果需要销毁集群,只需执行:

bash
sealos reset --nodes 192.168.10.101,192.168.10.102,192.168.10.103 \
--user root --passwd your_password # 或者 --key-file

Sealos 会清理节点上的 Kubernetes 组件和 Sealos 部署的内容。

通过这个简单的例子,可以看出 Sealos 如何将复杂的集群安装和应用部署过程极大地简化为一个 build 和一个 run 命令。这种 “集群即应用,应用即集群” 的整体打包和管理方式,是 Sealos 的核心魅力所在。

第四部分:Sealos 的核心使用场景

Sealos 的独特能力使其在多种云原生场景下表现出色,尤其是在那些对环境一致性、可移植性、离线能力或整体交付有高要求的场景。

  1. 离线/空网环境下的云原生部署:

    • 场景: 在没有互联网访问的私有数据中心、军事、工业现场、涉密机构等环境部署 Kubernetes 集群和复杂的分布式应用。
    • Sealos 如何解决: Sealos 可以将 Kubernetes 离线安装包、容器运行时、CNI/CSI 插件、所有的应用镜像以及应用 Chart/YAML 文件等所有必需资源,一次性全部打包 到一个或几个集群镜像中。构建过程在有网环境完成,然后将镜像文件 (.tar) 通过物理介质拷贝到离线环境。在离线环境,只需 sealos load 加载镜像,然后 sealos run 即可完成部署。整个过程无需任何外部网络连接,极大地简化了离线环境的部署难度,避免了复杂的依赖下载和传输问题。
  2. 边缘计算的集群与应用统一交付:

    • 场景: 在大量的边缘节点(如工厂、门店、车辆、基站)部署小规模的 Kubernetes 集群,并在其上运行特定的边缘应用(数据采集、本地计算、AI 推理等)。边缘环境通常网络不稳定、资源受限、且需要大规模批量部署和管理。
    • Sealos 如何解决: Sealos 可以构建轻量级的集群镜像,包含 K3s/K0s 或裁剪后的 Kubernetes 版本,以及专门的边缘应用。这些小型镜像可以轻松地推送到边缘网关或本地存储。通过自动化脚本调用 sealos run,可以在大量边缘设备上快速、一致地部署相同的集群环境和应用。这种方式简化了边缘站点的现场部署和维护,提高了效率。
  3. 复杂分布式应用的打包与分发:

    • 场景: 一个大型的分布式软件产品,由多个微服务、数据库(MySQL/PostgreSQL)、缓存(Redis)、消息队列(Kafka/RabbitMQ)、监控系统(Prometheus/Grafana)、日志系统(ELK/Loki)等组件构成,全部运行在 Kubernetes 上。客户需要一套简单的、一键式 的安装方案,而不是让他们自己先装 K8s 再用 Helm 一个个部署。
    • Sealos 如何解决: 软件提供商可以使用 Sealos 将整个产品(包括其所需的 Kubernetes 环境)打包成一个或几个集群镜像。这个镜像包含了所有组件的部署清单、配置以及相关的容器镜像。客户收到这个镜像后,只需提供目标服务器列表,执行一个 sealos run 命令,即可将整个复杂的分布式系统部署到位。这极大地降低了软件的交付和部署门槛,提升了客户体验,尤其适合需要离线部署或面向非专业用户的软件产品。
  4. 多云/混合云环境的一致性部署:

    • 场景: 企业需要在不同的公有云(AWS, Azure, GCP)、私有云或本地机房部署相同的应用栈,以实现高可用、灾备或满足合规要求。不同的基础设施环境可能导致部署流程和配置的差异。
    • Sealos 如何解决: Sealos 构建的集群镜像理论上与底层基础设施无关(只要节点满足基本的 OS 和网络要求)。同一个集群镜像可以在 AWS EC2、Azure VM、阿里云 ECS、VMware 虚拟机或物理机上通过 sealos run 启动集群。这确保了在不同环境中部署的是完全相同的云原生环境和应用版本,避免了环境差异带来的兼容性问题和运维复杂性,实现了真正的“一次构建,到处运行”。
  5. 开发/测试环境的快速搭建与复制:

    • 场景: 开发或测试团队需要快速地搭建与生产环境高度一致的 Kubernetes 环境,并在其中部署特定版本的应用进行开发和测试。手动搭建和配置环境耗时且容易出错。
    • Sealos 如何解决: 可以为开发和测试环境构建专门的集群镜像,其中包含特定版本的 Kubernetes、CI/CD 工具链、模拟服务、调试工具以及当前开发中的应用版本。开发人员只需拉取或加载这个镜像,使用 sealos run 在本地虚拟机或测试服务器上快速启动一个隔离的环境。这保证了开发测试环境与生产环境的一致性,减少了“在我机器上可以运行”的问题,提高了开发效率和质量。
  6. 培训与演示环境的提供:

    • 场景: 进行 Kubernetes 或云原生应用的培训、演示时,需要为学员或观众快速提供一个可用的、预配置好的环境。
    • Sealos 如何解决: 将培训或演示所需的 Kubernetes 环境和预装的应用(如各种 Operator、示例应用)打包成一个 Sealos 集群镜像。学员或演示者只需在自己的笔记本电脑(通过虚拟机)或提供的服务器上 sealos run 这个镜像,即可立即获得一个开箱即用的实验环境,无需花费大量时间进行环境搭建。
  7. 集群生命周期管理(初步):

    • 场景: 对 Sealos 部署的集群进行节点的增加、删除或整体销毁。
    • Sealos 如何解决: sealos addsealos delete 命令提供了方便的节点管理功能。sealos reset 可以彻底清理 Sealos 部署的环境。虽然目前 Sealos 主要聚焦于集群的初始部署和管理,未来的发展方向也包括基于集群镜像的更高级的生命周期管理,如滚动升级、回滚等。

第五部分:Sealos 的优势与价值

总结来说,Sealos 带来的主要优势和价值体现在以下几个方面:

  1. 极致的简化: 将复杂的 Kubernetes 集群安装和应用部署流程,简化为类似 Docker 的 buildrun 操作,极大地降低了云原生技术的入门和使用门槛。
  2. 高度的可移植性: “集群镜像”的概念使得整个云原生环境可以像文件一样被复制和移动,轻松实现跨环境(离线、边缘、多云、本地)的部署。
  3. 环境的一致性: 通过构建统一的集群镜像,确保在不同地方部署的环境是完全一致的,消除了环境差异带来的问题。
  4. 强大的离线能力: 将所有依赖打包进镜像,完美支持在没有互联网连接的环境下进行部署和管理。
  5. 端到端的应用交付: 不仅仅安装 Kubernetes,更能将复杂的分布式应用与其基础设施一起打包交付,为软件产品提供了一种全新的、简化的部署方式。
  6. 提高效率和可靠性: 自动化的部署流程减少了手动操作的错误,提高了部署的效率和成功率。
  7. 构建云原生生态的可能性: 通过集群镜像仓库和未来的应用市场,Sealos 有潜力构建一个分享和复用云原生环境及应用的生态系统。

第六部分:Sealos Cloud 简介

除了开源的 Sealos CLI 工具,Sealos 团队还提供了 Sealos Cloud 平台。Sealos Cloud 是一个基于 Sealos 理念构建的 SaaS 平台,旨在提供更高级的云原生应用管理服务。它可以看作是一个云原生的应用商店和托管平台,用户可以在 Sealos Cloud 上构建、存储、分享集群镜像,并一键部署到各种基础设施提供商(如公有云、私有云)提供的计算资源上。Sealos Cloud 进一步降低了用户管理底层基础设施和应用部署的复杂度,让用户更专注于应用本身的开发和价值创造。它是 Sealos 开源能力的商业化延伸,为企业级用户提供了更完善的解决方案。

结论

云原生技术的普及深刻地改变了软件的构建和交付方式,但也引入了新的复杂性。Sealos 作为一种以 “集群镜像” 为核心的云操作系统发行版,提供了一种全新的视角和工具来应对这些挑战。它通过将 Kubernetes 和其上的应用程序打包成一个可移植、可管理的单元,极大地简化了在各种复杂环境(尤其是离线、边缘、多云)下云原生应用栈的部署和管理。

Sealos 不仅仅是一个 Kubernetes 安装工具,它更是一种云原生时代的交付物形态——将你的分布式系统整体打包、像应用一样分发。这使得软件厂商可以更简单地交付其基于 Kubernetes 的产品,企业用户可以更方便地在不同环境中复制和管理其云原生基础设施。

对于正在寻求简化云原生部署、需要强大的离线能力、或希望将复杂分布式应用作为整体交付的开发者和企业而言,Sealos 无疑提供了一个值得认真考虑的“新选择”。随着社区的不断发展和功能的完善,Sealos 有潜力成为云原生领域中不可忽视的一股力量,推动云原生技术在更多场景下落地生根。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部