一、 sealos 简介
Sealos 是传说中最丝滑的k8s集群部署方式。
Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。
Sealos 是一个基于 Kubeadm 的 K8s 一键安装工具,它可以帮助我们快速搭建一个 K8s 集群,而且还可以帮我们自动安装一些常用的插件,甚至要搭建一个高可用的集群也是非常方便的。
Sealos 官网

二、 获取sealos cli工具

集群镜像版本支持说明
支持 Containerd 的 K8s
推荐使用 Containerd 作为容器运行时 (CRI) 的集群镜像版本,Containerd 是一种轻量级、高性能的容器运行时,与 Docker 兼容。使用 Containerd 的 Kubernetes 镜像可以提供更高的性能和资源利用率。以下是支持 Containerd 的集群镜像版本支持说明:
K8S 版本 | SEALOS 版本 | CRI 版本 | 集群镜像版本 |
---|---|---|---|
<1.25 |
>=v4.0.0 |
v1alpha2 | labring/kubernetes:v1.24.0 |
>=1.25 |
>=v4.1.0 |
v1alpha2 | labring/kubernetes:v1.25.0 |
>=1.26 |
>=v4.1.4-rc3 |
v1 | labring/kubernetes:v1.26.0 |
>=1.27 |
>=v4.2.0-alpha3 |
v1 | labring/kubernetes:v1.27.0 |
>=1.28 |
>=v5.0.0 |
v1 | labring/kubernetes:v1.28.0 |
根据 Kubernetes 版本的不同,您可以选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。
支持 Docker 的 K8s
当然,你也可以选择使用 Docker 作为容器运行时,以下是支持 Docker 的集群镜像版本支持说明:
K8S 版本 | SEALOS 版本 | CRI 版本 | 集群镜像版本 |
---|---|---|---|
<1.25 |
>=v4.0.0 |
v1alpha2 | labring/kubernetes-docker:v1.24.0 |
>=1.25 |
>=v4.1.0 |
v1alpha2 | labring/kubernetes-docker:v1.25.0 |
>=1.26 |
>=v4.1.4-rc3 |
v1 | labring/kubernetes-docker:v1.26.0 |
>=1.27 |
>=v4.2.0-alpha3 |
v1 | labring/kubernetes-docker:v1.27.0 |
>=1.28 |
>=v5.0.0 |
v1 | labring/kubernetes-docker:v1.28.0 |
与支持 Containerd 的 Kubernetes 镜像类似,您可以根据 Kubernetes 版本的不同选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。
下载rpm包安装

所有主机均要配置主机名、IP地址、主机名与IP地址解析。
主机说明
作用 | IP | OS | 配置 |
---|---|---|---|
k8s-master01 | 192.168.234.11 | openEuler 24.03 (LTS-SP4) | 4颗CPU 4G内存 50G硬盘 |
k8s-work01 | 192.168.234.13 | openEuler 24.03 (LTS-SP4) | 4颗CPU 4G内存 50G硬盘 |
k8s-work02 | 192.168.234.14 | openEuler 24.03 (LTS-SP4) | 4颗CPU 4G内存 50G硬盘 |
主机环境配置(三台都需要)
#1.关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
#2.关闭selinux
#selinux禁用
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
#3.设置主机名
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-worker01
hostnamectl set-hostname k8s-worker02
三、sealos cli部署K8S集群
首先需要下载 Sealos 命令行工具,sealos 是一个简单的 Golang 二进制文件,可以安装在大多数 Linux 操作系统中。
以下是一些基本的安装要求:
-
每个集群节点应该有不同的主机名。主机名不要带下划线。
-
所有节点的时间需要同步。
-
需要在 K8s 集群的第一个 master 节点 上运行
sealos run
命令,目前集群外的节点不支持集群安装。 -
建议使用干净的操作系统来创建集群。不要自己装 Docker!
-
支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。
-
支持 Docker Hub 中的所有 Kubernetes 版本。
-
支持使用 Containerd 作为容器运行时。
-
在公有云上安装请使用私有 IP。
版本查询,sealos 支持的 k8s 版本
使用 Registry Explorer 可以查看 K8s 集群镜像的所有版本,直接输入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes
,然后点击 "Submit Query":

注意:三台机器都需要打开 /etc/yum.repos.d/openEuler.repo,然后把光标定位到[update]那一行输入

成功把以下内容注释:

所有节点安装 tar (最小化安装没有tar)
yum install -y tar
只在 k8s-master01 上操作:
先把本地包sealos_5.0.1_linux_amd64.rpm上传到k8s-master01
然后安装 yum install sealos_5.0.1_linux_amd64.rpm
再执行
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 \
--masters 192.168.234.11 \
--nodes 192.168.234.13,192.168.234.14 -p '1' #节点root用户密码
部署完成!


配置kubectl及kubeadm命令自动补全
安装bash-completion
yum install -y bash-completion
配置自动补全
source /usr/share/bash-completion/bash_completion
临时生效kubectl自动补全
source <(kubectl completion bash)
只在当前用户生效kubectl自动补全
echo 'source <(kubectl completion bash)' >>~/.bashrc
配置kubectl自动补全全局生效
echo 'source <(kubectl completion bash)' >/etc/profile.d/k8s.sh && source /etc/profile

配置kubeadm命令自动补全
配置kubeadm自动补全
基本步骤与kubectl相似
source /usr/share/bash-completion/bash_completion
source <(kubeadm completion bash)
只对当前用户生效
echo 'source <(kubeadm completion bash)' >>~/.bashrc
配置kubeadm自动补全全局生效
echo 'source <(kubeadm completion bash)' >>/etc/profile.d/k8s.sh && source /etc/profile
四、集群维护
增加节点
1、增加 node 节点:
sealos add --nodes 192.168.64.21,192.168.64.19
2、增加 master 节点:
sealos add --masters 192.168.64.21,192.168.64.19
删除节点
1、删除 node 节点:
sealos delete --nodes 192.168.64.21,192.168.64.19
2、删除 master 节点:
sealos delete --masters 192.168.64.21,192.168.64.19
清理集群
sealos reset
五、测试
#首先配置国内镜像加速
vim /etc/docker/daemon.json
{
"registry-mirrors":["https://p3kgr6db.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://your_id.mirror.aliyuncs.com",
"https://docker.nju.edu.cn/",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://cr.console.aliyun.com"
],
"max-concurrent-downloads": 20,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"exec-opts": [
"native.cgroupdriver=systemd"
],
"insecure-registries": [
"sealos.hub:5000"
],
"data-root": "/var/lib/docker"
}
systemctl daemon-reload #重载
systemctl restart docker.service#重启docker
把daemon.json文件分别拷贝到俩个节点上
[root@localhost docker]# scp daemon.json 192.168.234.13:$PWD
[root@localhost docker]# scp daemon.json 192.168.234.14:$PWD
俩个节点再分别重载,重启。
部署nginx
root@master01 \~\]# kubectl create deployment nginx --image=nginx:1.14-alpine # 暴露端口 \[root@master01\~\]# kubectl expose deployment nginx --port=80 --type=NodePort # 查看服务状态 \[root@master01 \~\]# kubectl get pods,service  在浏览器上访问[http](https://so.csdn.net/so/search?q=http&spm=1001.2101.3001.7020 "http")://192.168.234.11:31393(或192.168.234.13:31393、192.168.234.14:31393) 