什么是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
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.podSubnetspec.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针对集群的扩缩容

前置准备

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

使用sealos快速搭建kubernetes集群!!!的更多相关文章

  1. 使用Kubeadm(1.13+)快速搭建Kubernetes集群

    Kubeadm是管理集群生命周期的重要工具,从创建到配置再到升级,Kubeadm处理现有硬件上的生产集群的引导,并以最佳实践方式配置核心Kubernetes组件,以便为新节点提供安全而简单的连接流程并 ...

  2. 使用Rancher和私有仓库快速搭建Kubernetes集群

    来来来,先出题:Rancher可以快速部署Kubernetes,但其使用的gcr.io上的镜像无法下载怎么办?使用Rancher可以快速部署Kubernetes,但我们需要下载哪些镜像?Rancher ...

  3. Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群

    Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...

  4. 二进制搭建Kubernetes集群(最新v1.16.0版本)

    目录 1.生产环境k8s平台架构 2.官方提供三种部署方式 3.服务器规划 4.系统初始化 5.Etcd集群部署 5.1.安装cfssl工具 5.2.生成etcd证书 5.2.1 创建用来生成 CA ...

  5. 【Kubernetes学习笔记】-kubeadm 手动搭建kubernetes 集群

    目录 K8S 组件构成 环境准备 (以ubuntu系统为例) 1. kubernetes集群机器 2. 安装 docker. kubeadm.kubelet.kubectl 2.1 在每台机器上安装 ...

  6. kubeadm搭建kubernetes集群之三:加入node节点

    在上一章<kubeadm搭建kubernetes集群之二:创建master节点>的实战中,我们把kubernetes的master节点搭建好了,本章我们将加入node节点,使得整个环境可以 ...

  7. kubeadm搭建kubernetes集群之二:创建master节点

    在上一章kubeadm搭建kubernetes集群之一:构建标准化镜像中我们用VMware安装了一个CentOS7虚拟机,并且打算用这个虚拟机的镜像文件作为后续整个kubernetes的标准化镜像,现 ...

  8. VMware 克隆linux后找不到eth0(学习hadoop,所以想快速搭建一个集群)

    发生情况:      由于在学习hadoop,所以想快速搭建一个集群出来.所以直接在windows操作系统上用VMware安装了CentOS操作系统,配置好hadoop开发环境后,采用克隆功能,直接克 ...

  9. 快速搭建Jenkins集群

    关于Jenkins集群 在Jenkins上同时执行多个任务时,单机性能可能达到瓶颈,使用Jenkins集群可以有效的解决此问题,让多台机器同时处理这些任务可以将压力分散,对单机版Jenkins的单点故 ...

  10. kubeadm 搭建kubernetes集群环境

    需求 kubeadm 搭建kubernetes集群环境 准备条件 三台VPS(本文使用阿里云香港 - centos7.7) 一台能SSH连接到VPS的本地电脑 (推荐连接工具xshell) 安装步骤 ...

随机推荐

  1. TiDB体系架构

    本文分享自天翼云开发者社区<TiDB体系架构>,作者:x****n 如图所示,TiDB体系中三大组成部分:PD.TiDB Server.TiKV 1.PD:负责产生全局的TSO时间.控制R ...

  2. 本地部署 Browser-Use WebUI + 本地部署 DeepSeek 实现浏览器AI自动化

    前一版采用的是 Deepseek 官方API,由于最近比较火,可能遇到服务器繁忙导致运行不成功,这一版选择通过 Ollama 本地部署的模型 一.安装部署(已安装 python3.11 或以上版本.p ...

  3. GIT如何进行团队协作

    加入其他开发成员.修改代码并提交 选择库点击管理 点击添加成员邀请用户 以下三种方式都行 加入后如下 第二人如何进行修改文件: 在文件夹中创建本地库git init 建立远程连接 git remote ...

  4. c++中bitset的常见用法

    C++ 中的 bitset 是一个用于处理固定大小位序列的模板类,提供高效的位操作功能.以下是对其关键特性的详细介绍: 1. 声明与初始化 头文件:需包含 <bitset>. 声明:bit ...

  5. Thymeleaf select 反显 默认选中

    后台代码 List<ExamTestPaperDO> list = examTestPaperService.list(map); model.addAttribute("tes ...

  6. spring-boot配置slf4j日志

    SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J 是一个用于日志系统的简单 ...

  7. 浅谈李飞飞巴黎演讲:如果 AI 资源被少数公司垄断,整个生态系统都会完蛋

    在巴黎人工智能峰会开幕式上,斯坦福大学教授.人工智能专家李飞飞发表了主题演讲,揭示了人工智能如何从"观察者"转变为重塑世界的"行动者".她在致辞中,分析了&qu ...

  8. autMan奥特曼机器人-跳过注册页面直接进入登陆页面

    1.将下面4行内容存成txt文件[注意将"账号"和"密码"等字眼替换为自己的真正账号和密码],文件名改成sets.conf,放到autman主文件夹,见下图最下 ...

  9. FastAPI路由与请求处理全解:手把手打造用户管理系统 🔌

    title: FastAPI路由与请求处理全解:手把手打造用户管理系统 date: 2025/3/2 updated: 2025/3/2 author: cmdragon excerpt: 通过咖啡店 ...

  10. gorm插入报错Error 1292 (22007): Incorrect datetime value: ‘0000-00-00‘ for column ‘xxx‘ at row 1

    在MySQL中,'0000-00-00 00:00:00'不是一个合法的DATETIME值.从MySQL 5.7.5开始,默认情况下不允许插入零日期或零时间值到DATETIME或 TIMESTAMP列 ...