文章目录
什么是 sealos
- Sealos 是一个基于 Kubernetes 的云操作系统
- 它让用户可以像使用个人电脑一样简单、低成本地管理和运行云端应用
- 它的核心理念是 "以应用为中心",将分布式应用的所有依赖(如数据库、消息队列、中间件等)打包成一个可移植、可离线分发的整体
核心特点与优势
简单易用:
- 一键安装:通过一行命令即可在空机器上安装一个完整的 Kubernetes 高可用集群。
- 桌面化体验:提供类似 Windows/macOS 的桌面操作系统界面,通过点点鼠标就能管理集群、部署应用,极大降低了 K8s 的使用门槛。
- 应用商店:内置丰富的应用市场,可以一键部署数据库(MySQL、Redis)、消息队列、监控系统(如 Grafana)、开发工具等常用软件。
以应用为核心:
- 应用镜像:Sealos 提出了"云原生应用镜像"的概念。它把一个分布式应用及其所有依赖(K8s 配置、数据库、配置文件等)打包成一个不可变的、版本化的单元。这使得应用的交付、分享和回滚变得像 Docker 镜像一样简单可靠。
- 解决了"交付最后一公里"问题:传统的容器镜像只包含单个服务,而 Sealos 应用镜像包含了整个集群级别的应用,实现了真正的开箱即用。
高效与低成本:
- 多租户与资源隔离:原生支持多租户,不同团队或用户可以拥有独立、资源隔离的"空间",非常适合 SaaS 平台或企业内部使用。
- 极致轻量:内核非常精简,专注于应用生命周期管理,去除了传统 K8s 发行版中很多复杂的组件,使得集群本身资源消耗极低。
- 公有云与私有化部署:既可以在公有云上快速搭建,也支持完全离线环境下的私有化部署。
强大的核心功能:
- 数据库即服务:可以一键部署高可用的生产级数据库(如 PostgreSQL, MySQL),并自动处理备份、恢复、监控等运维工作。
- 集群全生命周期管理:轻松地对集群进行升级、备份、恢复和扩缩容。
- 开放的生态系统:兼容 Helm Chart 和原生 K8s YAML,并能轻松集成自定义应用。
核心架构组件
Sealos 的架构主要包括:
- Sealos CLI:命令行工具,用于集群的安装、管理和应用镜像的构建/运行。
- Sealos Cloud/Desktop:核心亮点,提供直观的 Web 桌面环境,用户可以在浏览器中像操作电脑一样管理整个云集群。
- 应用镜像仓库:用于存储和分享打包好的云原生应用镜像。
- 底层 Kubernetes 集群:由 Sealos 负责初始化和管理的基础设施层。
与传统的 Kubernetes 发行版有什么区别?
| 特性 | 传统 K8s 发行版 (如 kubeadm, k3s, RKE) | Sealos |
|---|---|---|
| 核心定位 | 容器编排平台,专注于调度和管理容器。 | 云操作系统,专注于运行和管理分布式应用。 |
| 使用体验 | 复杂,需精通 YAML、Helm、CLI 和各种 K8s 概念。 | 极其简单,提供图形化桌面和"应用商店",适合开发者和运维新手。 |
| 应用交付 | 需要组合多个 Helm Chart、YAML 文件和外部依赖,部署复杂。 | 通过应用镜像一键交付整个应用及其所有依赖,实现原子化部署。 |
| 多租户 | 需要额外安装和配置复杂项目(如 Kubernetes Dashboard + 权限系统)。 | 原生内置,开箱即用,提供用户空间和资源隔离。 |
| 核心价值 | 提供稳定、可靠的容器基础设施。 | 降低云原生技术的使用门槛,提升应用交付和运维效率。 |
典型应用场景
- 个人开发者/小团队:快速在云服务器或本地搭建一个属于自己的、功能完整的 Kubernetes 环境,用于学习、开发和测试。
- 企业私有化部署:将一套复杂的 SaaS 系统(如 OA、CRM)打包成 Sealos 应用镜像,交付给客户,实现一键安装和运维。
- 教育/培训:因其简单性,非常适合用于教学和演示 Kubernetes 及云原生应用。
- 构建内部云平台/Paas:为企业内部不同部门提供标准化的应用部署和管理平台。
使用 sealos 部署 Kubernetes
环境准备
| server name | CPU | 内存容量 | IP地址 | 系统版本 | 备注 |
|---|---|---|---|---|---|
| k8smaster1 | 4C | 8G | 192.168.1.241 | Ubuntu 22.04.5 LTS | |
| k8smaster2 | 4C | 8G | 192.168.1.242 | Ubuntu 22.04.5 LTS | |
| k8smaster3 | 4C | 8G | 192.168.1.243 | Ubuntu 22.04.5 LTS | |
| k8snode1 | 4C | 8G | 192.168.1.244 | Ubuntu 22.04.5 LTS | |
| k8snode2 | 4C | 8G | 192.168.1.245 | Ubuntu 22.04.5 LTS | |
| k8snode3 | 4C | 8G | 192.168.1.246 | Ubuntu 22.04.5 LTS | Harbor |
基本环境准备
所有节点需要操作
bash
# 关闭交换分区
swapoff -a
sed -i '/swap/d' /etc/fstab
# 开启 Kubernetes 所需的网络内核参数
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
sysctl --system
sudo tee /etc/modules-load.d/k8s.conf <<EOF
br_netfilter
overlay
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 配置时间同步
sudo apt update
sudo apt install -y chrony
sudo systemctl enable --now chrony
# 增加系统的最大文件句柄数
ulimit -n 65535
ulimit -u 65535
cat << EOF | sudo tee -a /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft noproc 65535
* hard noproc 65535
EOF
# 安装必要的软件包
sudo apt install -y curl wget gnupg lsb-release ca-certificates conntrack ipvsadm socat jq
安装 sealos 工具
安装 sealos 工具
只需要在 k8smaster1 安装
bash
wget https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.tar.gz
tar -zxvf sealos_5.0.1_linux_amd64.tar.gz
sudo mv sealos /usr/local/bin/
sudo chmod +x /usr/local/bin/sealos
# 检查
sealos version
安装 helm 工具
- Helm 是 Sealos 安装 Calico / KubeSphere 等应用时必须的 CLI 工具
bash
wget https://get.helm.sh/helm-v3.13.3-linux-amd64.tar.gz
tar -zxvf helm-v3.13.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/
chmod +x /usr/local/bin/helm
# 检查
helm version
使用 sealos 安装 Kubernetes
拉取 Kubernetes 所需要的镜像
- kubernetes:v1.27.8:Kubernetes 基础镜像
- calico:v3.26.1: Kubernetes 网络组件
bash
# 使用阿里云源拉取
sealos pull registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.8
sealos pull registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1
sealos run 部署 Kubernetes
- 先根据服务器空间情况创建 Kubernetes 运行时文件存储目录
bash
# 所有节点都需要创建
mkdir -p /data/containerd
mkdir -p /data/kubelet
mkdir -p /data/etcd
ln -s /data/containerd /var/lib/containerd
ln -s /data/kubelet /var/lib/kubelet
ln -s /data/etcd /var/lib/etcd
- 在 k8smaster1 服务器上面使用
sealos run部署 Kubernetes
bash
sudo sealos run \
registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.8 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.26.1 \
--masters 192.168.1.241,192.168.1.242,192.168.1.243 \
--nodes 192.168.1.244,192.168.1.245,192.168.1.246 \
--passwd 'root用户密码'
# 等待 Kubernetes 部署完成
检查 Kubernetes 部署情况
kubectl get nodes验证节点信息
txt
NAME STATUS ROLES AGE VERSION
k8smaster1 Ready control-plane 64m v1.27.8
k8smaster2 Ready control-plane 64m v1.27.8
k8smaster3 Ready control-plane 63m v1.27.8
k8snode1 Ready <none> 63m v1.27.8
k8snode2 Ready <none> 63m v1.27.8
k8snode3 Ready <none> 63m v1.27.8
kubectl get pods -A检查基础组件运行情况
txt
NAMESPACE NAME READY STATUS RESTARTS AGE
calico-apiserver calico-apiserver-ffc9f9f95-cr9ql 1/1 Running 0 40m
calico-apiserver calico-apiserver-ffc9f9f95-tfppj 1/1 Running 0 40m
calico-system calico-kube-controllers-b7df4dc6c-b9jms 1/1 Running 0 41m
calico-system calico-node-6qdsr 1/1 Running 0 41m
calico-system calico-node-gkhxk 1/1 Running 0 41m
calico-system calico-node-ph92s 1/1 Running 0 41m
calico-system calico-node-r276z 1/1 Running 0 41m
calico-system calico-node-rccp4 1/1 Running 0 41m
calico-system calico-node-x4ch4 1/1 Running 0 41m
calico-system calico-typha-fb67dff85-fmxpm 1/1 Running 0 41m
calico-system calico-typha-fb67dff85-hpt94 1/1 Running 0 41m
calico-system calico-typha-fb67dff85-mvs9j 1/1 Running 0 41m
calico-system csi-node-driver-gxsls 2/2 Running 0 41m
calico-system csi-node-driver-jjtrx 2/2 Running 0 41m
calico-system csi-node-driver-jzn6l 2/2 Running 0 41m
calico-system csi-node-driver-tcpzh 2/2 Running 0 41m
calico-system csi-node-driver-wdpc7 2/2 Running 0 41m
calico-system csi-node-driver-zzbqp 2/2 Running 0 41m
kube-system coredns-5d78c9869d-q9k9z 1/1 Running 0 65m
kube-system coredns-5d78c9869d-xflnv 1/1 Running 0 65m
kube-system etcd-k8smaster1 1/1 Running 0 66m
kube-system etcd-k8smaster2 1/1 Running 0 65m
kube-system etcd-k8smaster3 1/1 Running 0 64m
kube-system kube-apiserver-k8smaster1 1/1 Running 0 66m
kube-system kube-apiserver-k8smaster2 1/1 Running 0 65m
kube-system kube-apiserver-k8smaster3 1/1 Running 0 64m
kube-system kube-controller-manager-k8smaster1 1/1 Running 1 (65m ago) 66m
kube-system kube-controller-manager-k8smaster2 1/1 Running 0 65m
kube-system kube-controller-manager-k8smaster3 1/1 Running 0 64m
kube-system kube-proxy-47ktb 1/1 Running 0 64m
kube-system kube-proxy-57vm8 1/1 Running 0 64m
kube-system kube-proxy-7zfnj 1/1 Running 0 65m
kube-system kube-proxy-jlxzj 1/1 Running 0 64m
kube-system kube-proxy-mfqr2 1/1 Running 0 65m
kube-system kube-proxy-qt2mf 1/1 Running 0 64m
kube-system kube-scheduler-k8smaster1 1/1 Running 1 (65m ago) 66m
kube-system kube-scheduler-k8smaster2 1/1 Running 0 64m
kube-system kube-scheduler-k8smaster3 1/1 Running 0 64m
kube-system kube-sealos-lvscare-k8snode1 1/1 Running 0 64m
kube-system kube-sealos-lvscare-k8snode2 1/1 Running 0 64m
kube-system kube-sealos-lvscare-k8snode3 1/1 Running 0 64m
tigera-operator tigera-operator-5f4668786-bsmfg 1/1 Running 0 41m
总结
总而言之,Sealos 通过其以应用为中心的设计和极简化的一键操作,显著降低了 Kubernetes 和云原生应用的管理与部署复杂度。它不仅仅是另一个 Kubernetes 安装工具,更是一个旨在提升应用交付与运维效率的完整云操作系统。本文提供的实践案例充分展示了其快速搭建生产就绪集群的能力。