什么是sealos?
Sealos 是一款基于 Kubernetes 的轻量级操作系统,专为云原生环境设计,主要用于快速部署和管理 Kubernetes 集群。它采用“容器化内核”的概念,将操作系统和 Kubernetes 深度集成,简化了集群的安装、运维和扩展流程。
sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。支持在线和离线安装,适用于amd64和arm64架构。轻松管理节点,安装分布式应用,支持Containerd和Docker运行时。
sealos核心特点
极简安装
只需一条命令即可部署完整的 Kubernetes 集群(包括 Master 和 Worker 节点)。
支持离线安装,适合内网或无外网环境。
容器化内核
将操作系统核心组件(如 kubelet、containerd)容器化,实现环境隔离和版本控制。
避免传统 Linux 发行版的依赖冲突问题。
多集群管理
统一管理多个 Kubernetes 集群,支持集群生命周期管理(创建、扩容、升级、销毁)。
内置应用市场
提供常见云原生应用(如 Prometheus、Istio、Nginx)的一键部署。
兼容性
支持主流 Linux 发行版(如 CentOS、Ubuntu)作为底层系统。
适配 ARM 和 x86 架构。
sealos相关资源
GitHub地址:https://github.com/labring/sealos
中文文档:https://sealos.run/docs/k8s/quick-start/install-cli
sealos相关命令
sealos的相关命令,除了集群、节点操作管理之外需要注意一下,关于容器和镜像的命令都和docker一样,我们只需要把docker替换成sealos即可
示例:
[root@master01 ~]# sealos --help sealos is a Kubernetes distribution, a unified OS to manage cloud native applications. ## 集群操作 Cluster Management Commands: apply Run cloud images within a kubernetes cluster with Clusterfile cert update Kubernetes API server's cert run Run cloud native applications with ease, with or without a existing cluster reset Reset all, everything in the cluster status state of sealos # 节点管理,添加node节点,删除node节点 Node Management Commands: add Add nodes into cluster delete Remove nodes from cluster # 远程操作管理 Remote Operation Commands: exec Execute shell command or script on specified nodes scp Copy file to remote on specified nodes Experimental Commands: registry registry related # 容器和镜像命令,和dockers一样 Container and Image Commands: build Build an image using instructions in a Containerfile or Kubefile create Create a cluster without running the CMD, for inspecting image diff Inspect changes to the object's file systems inspect Inspect the configuration of a container or image images List images in local storage load Load image(s) from archive file login Login to a container registry logout Logout of a container registry manifest Manipulate manifest lists and image indexes merge merge multiple images into one pull Pull images from the specified location push Push an image to a specified destination rmi Remove one or more images from local storage save Save image into archive file tag Add an additional name to a local image Other Commands: completion Generate the autocompletion script for the specified shell docs generate API reference env prints out all the environment information in use by sealos gen generate a Clusterfile with all default settings version Print version info Use "sealos <command> --help" for more information about a given command.
kubernetes集群镜像版本支持说明
支持Containerd的k8s
推荐使用 Containerd 作为容器运行时 (CRI) 的集群镜像版本,Containerd 是一种轻量级、高性能的容器运行时,与 Docker 兼容。使用 Containerd 的 Kubernetes 镜像可以提供更高的性能和资源利用率。以下是支持 Containerd 的集群镜像版本支持说明:

支持Docker的k8s
当然,你也可以选择使用 Docker 作为容器运行时,以下是支持 Docker 的集群镜像版本支持说明:

查看集群镜像
ealos 所有的集群镜像都可以在 cluster-image-docs 仓库里找到。除了推送到 Docker Hub 之外,这些镜像还被同步到了阿里云的镜像仓库。
Docker Hub 上可以通过以下链接查看 Sealos 所有的集群镜像:https://hub.docker.com/u/labring。
使用 Registry Explorer 可以查看 K8s 集群镜像的所有版本,直接输入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes,然后点击“Submit Query”:

就会看到这个集群镜像的所有 tag。
Docker Hub 同理,输入 docker.io/labring/kubernetes 即可查看所有 tag。
注意!!!
K8s 的小版本号越高,集群越稳定。例如 v1.29.x,其中的 x 就是小版本号。建议使用小版本号比较高的 K8s 版本。到本文截止时间为止,v1.29 最高的版本号是 v1.29.9,而 v1.30 最高的版本号是 v1.30.5,所以建议使用 v1.29.9。你需要根据实际情况来选择最佳的 K8s 版本
Kubernetes集群镜像说明
Sealos 官方发布的集群镜像主要包括以下几种:
- kubernetes:使用 containerd 作为容器运行时(CRI)的 Kubernetes 镜像。
- kubernetes-docker:使用 docker 作为容器运行时(CRI)的 Kubernetes 镜像。
- kubernetes-crio:使用 crio 作为容器运行时(CRI)的 Kubernetes 镜像。
安装前置准备
环境信息
| 主机名 | IP地址 | 系统内核 | 系统规格 |
|---|---|---|---|
| master01 | 10.0.0.30 | ubuntu22.04 | 2c4g |
| node01 | 10.0.0.31 | ubuntu22.04 | 2c4g |
| node02 | 10.0.0.32 | ubuntu22.04 | 2c4g |
sealos安装kubernetes要求
- 每个集群节点应该有不同的主机名。主机名不要带下划线。
- 所有节点的时间需要同步。
- 需要在 K8s 集群的第一个 master 节点上运行 sealos run 命令,目前集群外的节点不支持集群安装。
- 建议使用干净的操作系统来创建集群。不要自己装 Docker!
- 支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。
- 支持 Docker Hub 中的所有 Kubernetes 版本。
- 支持使用 Containerd 作为容器运行时。
- 在公有云上安装请使用私有 IP。
极简安装以Docker为容器运行时的kubernetes单节点集群
前置准备
- 设置主机名,所有节点执行
hostnamectl set-hostname master01 hostnamectl set-hostname node01 hostnamectl set-hostname node02
- 时间同步,所有节点执行
#同步时区 ln -svf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #下载ntpdate工具用于同步时间 apt -y install ntpdate ntpdate ntp.aliyun.com
-
需要放开端口,所有节点执行
尤其是云环境需要注意
参考kubernetes官网:https://kubernetes.io/zh-cn/docs/reference/networking/ports-and-protocols/


-
下载 Kubernetes 和容器化环境中常用的底层网络和系统工具,所有节点执行
apt-get update -y && apt-get install -y ebtables ethtool socat iptables
master01节点下载sealos安装工具
下载地址:https://github.com/labring/sealos/releases/tag/v5.0.1
[root@master01 ~]# wget https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.tar.gz [root@master01 ~]# tar -xvf sealos_5.0.1_linux_amd64.tar.gz [root@master01 ~]# cp sealos /usr/bin/ # 查看信息 [root@master01 ~]# sealos version SealosVersion: buildDate: "2024-10-09T02:18:27Z" compiler: gc gitCommit: 2b74a1281 gitVersion: 5.0.1 goVersion: go1.20.14 platform: linux/amd64
下载集群镜像
这里使用sealos下载镜像,语法和docker一样,只不过docker替换成sealos即可
# 下载k8s镜像 [root@master01 ~]# sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15 # 下载helm镜像 [root@master01 ~]# sealos pull registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 # 下载calico镜像 [root@master01 ~]# sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5
运行命令安装集群
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 --masters 10.0.0.30 --nodes 10.0.0.31,10.0.0.32 -p root123
参数说明:
- --masters:k8s master节点地址列表
- --nodes:k8s node节点列表
- -p:ssh登录密码,这里我们使用密码即可
- -i:ssh登录的密钥,
最终显示如图即表示安装成功!!!

安装成功之后,我们等待所有的pod都启动成功。
[root@master01 ~]# kubectl get po -A NAMESPACE NAME READY STATUS RESTARTS AGE calico-apiserver calico-apiserver-59965665cb-dsfd8 1/1 Running 0 83s calico-apiserver calico-apiserver-59965665cb-k96cz 1/1 Running 0 83s calico-system calico-kube-controllers-5699c5bff4-744hp 1/1 Running 0 2m27s calico-system calico-node-972ns 1/1 Running 0 2m28s calico-system calico-node-fqlml 1/1 Running 0 2m28s calico-system calico-node-snmlg 1/1 Running 0 2m28s calico-system calico-typha-6fdb6c64d6-b6pjb 1/1 Running 0 2m19s calico-system calico-typha-6fdb6c64d6-rsphw 1/1 Running 0 2m28s calico-system csi-node-driver-5bght 2/2 Running 0 2m27s calico-system csi-node-driver-hgx6h 2/2 Running 0 2m27s calico-system csi-node-driver-p4fsh 2/2 Running 0 2m27s kube-system coredns-787d4945fb-2x7hw 1/1 Running 0 2m56s kube-system coredns-787d4945fb-tnbgh 1/1 Running 0 2m56s kube-system etcd-master01 1/1 Running 0 3m9s kube-system kube-apiserver-master01 1/1 Running 0 3m9s kube-system kube-controller-manager-master01 1/1 Running 0 3m10s kube-system kube-proxy-g92s8 1/1 Running 0 2m56s kube-system kube-proxy-gdhd7 1/1 Running 0 2m41s kube-system kube-proxy-tbmmc 1/1 Running 0 2m42s kube-system kube-scheduler-master01 1/1 Running 0 3m9s kube-system kube-sealos-lvscare-node01 1/1 Running 0 2m34s kube-system kube-sealos-lvscare-node02 1/1 Running 0 2m35s tigera-operator tigera-operator-5d4855cc5b-2pp5k 1/1 Running 0 2m36s
查看node节点是否都处于Ready状态
[root@master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane 3m34s v1.26.15 node01 Ready <none> 3m2s v1.26.15 node02 Ready <none> 3m3s v1.26.15
检查docker是否安装成功
[root@master01 ~]# docker -v Docker version 27.3.1, build ce12230
到此为止,我们的K8s集群安装成功了!!!
清理K8s集群
如果中途因为一些配置导致K8s集群安装失败,需要修改配置重新安装的话,我们可以使用sealos reset命令来重置集群继续安装
[root@master01 ~]# sealos reset 2025-04-26T12:58:42 info are you sure to delete these nodes? Do you want to continue on 'master01' cluster? Input 'master01' to continue: master01 ##这里需要输入主节点的名称
显示如图即表示清理成功

自定义配置安装(推荐使用!!!)
sealos支持自定义配置Kubernetes集群,实现高效的集群管理,可以自定义pod的网段以及calico的网段.
使用sealos gen生成一个Clusterfile
sealos gen registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 --masters 10.0.0.30 --nodes 10.0.0.31,10.0.0.32 -p root123 -o Clusterfile
生成Clusterfile后,可以根据需要更新集群的配置,例如要修改pods的CIDR范围,就可以修改networking.podSubnet 和 spec.data.spec.calicoNetwork.ipPools.cidr 字段。
最终生成的Clusterfile像这样
[root@master01 ~]# cat Clusterfile apiVersion: apps.sealos.io/v1beta1 kind: Cluster metadata: creationTimestamp: null name: default spec: hosts: - ips: - 192.168.0.2:22 - 192.168.0.3:22 - 192.168.0.4:22 roles: - master - amd64 - ips: - 192.168.0.5:22 - 192.168.0.6:22 - 192.168.0.7:22 roles: - node - amd64 image: - labring/kubernetes:v1.25.0 - labring/helm:v3.8.2 - labring/calico:v3.24.1 ssh: passwd: xxx pk: /root/.ssh/id_rsa port: 22 user: root status: {} --- apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration networking: podSubnet: 10.160.0.0/12 --- apiVersion: apps.sealos.io/v1beta1 kind: Config metadata: name: calico spec: path: charts/calico/values.yaml strategy: merge data: | installation: enabled: true kubernetesProvider: "" calicoNetwork: ipPools: - blockSize: 26 cidr: 10.160.0.0/12 encapsulation: IPIP natOutgoing: Enabled nodeSelector: all() nodeAddressAutodetectionV4: interface: "eth.*|en.*"
启动集群
运行 sealos apply -f Clusterfile 启动集群。集群运行成功后会把 Clusterfile 保存到 /root/.sealos/default/Clusterfile 文件中,可以修改其中字段来重新 apply 对集群进行变更。
# 启动集群, [root@master01 ~]# sealos apply -f Clusterfile # 检查节点 [root@master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane 81s v1.26.15 node01 Ready <none> 47s v1.26.15 node02 Ready <none> 49s v1.26.15 # 查看/root/.sealos/default/Clusterfile [root@master01 ~]# ll /root/.sealos/default/Clusterfile -rw-r--r-- 1 root root 8401 Apr 26 13:20 /root/.sealos/default/Clusterfile
安装以Containerd为容器运行时的kubernetes集群
运行下面的命令即可,当然也可以使用Clusterfile自定配置安装
# 直接运行 sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 --masters 10.0.0.30 --nodes 10.0.0.31,10.0.0.32 -p root123
安装成功,显示如图:

以containerd为容器运行时的kubernetes集群没有docker命令,只有sealos命令,sealos可以完成docker的大部分操作,例如拉取镜像,运行容器,构建镜像等等一系列操作。语法和docker一样
安装高可用的kubernetes集群
安装高可用的kubernetes集群也很简单,只需要通过sealos run命令中的--masters选项指定多个节点即可
示例:
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.26.15 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.13.2 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.5 --masters 10.0.0.30,10.0.0.34,10.0.0.33 --nodes 10.0.0.31,10.0.0.32 -p root123
sealos针对集群的扩缩容
前置准备
- 时间同步
- 云环境要放开端口
参考kubernetes官网:https://kubernetes.io/zh-cn/docs/reference/networking/ports-and-protocols/ - 安装k8s使用的底层工具
apt-get update -y && apt-get install -y ebtables ethtool socat iptables
添加node节点
sealos add --nodes='10.0.0.21' -p '!Xinxin123'
如图表示扩容成功

检查一下
[root@master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready <none> 40s v1.26.15 master01 Ready control-plane 14m v1.26.15 node01 Ready <none> 14m v1.26.15 node02 Ready <none> 14m v1.26.15
删除node节点
sealos delete --nodes='10.0.0.21'
添加master节点
sealos add --master='10.0.0.21' -p '!Xinxin123'
删除master节点
sealos delete --master='10.0.0.21' -p '!Xinxin123'
sealos的私有镜像仓库
参考文档:https://sealos.run/docs/k8s/operations/registry/using_sealoshub_private_registry
sealos 的私有仓库默认运行在集群的第一个节点上,第一个节点是指创建集群的时候输入的第一个节点的地址,使用下面的命令查看守护进程的状态。
[root@master01 ~]# systemctl status registry.service ● registry.service - registry: The sealos registry Loaded: loaded (/etc/systemd/system/registry.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2025-04-26 13:32:01 CST; 23min ago Docs: https://www.sealos.io/docs/Intro Main PID: 32257 (registry) Tasks: 7 Memory: 72.5M CPU: 40.117s CGroup: /system.slice/registry.service └─32257 /usr/bin/registry serve /etc/registry/registry_config.yml
登录私有容器镜像仓库
sealos 私有仓库使用 --net host 参数运行在 HTTP 下,应当在本地配置 insecure-registries,然后使用第一个节点的 IP 地址进行连接,Docker 客户端配置参考如下:
{ "insecure-registries": ["192.168.1.10:5000"], }
使用 sealos login 命令来进行登录,默认用户名与密码是 admin:passw0rd,默认域名是:sealos.hub,该域名在我们安装k8s集群时,sealos默认帮我们添加好了hosts解析,默认端口是5000
[root@master01 ~]# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 master # sealos 10.0.0.30 sealos.hub 10.0.0.30 apiserver.cluster.local
sealos登录私有仓库
sealos login -u admin -p passw0rd sealos.hub:5000
也可以使用 docker login 命令。
docker login -u admin -p passw0rd sealos.hub:5000