Sealos 是一款以 Kubernetes 为内核的云操作系统发行版,使用户能够像使用个人电脑一样简单地使用云。

与此同时,Sealos 还提供一套强大的工具,可以便利地管理整个 Kubernetes 集群的生命周期

Sealos 不仅可以一键安装一个单节点的 Kubernetes 开发环境,还能构建数千节点的生产高可用集群。

Sealos 还可以在 Kubernetes 之上,通过集群镜像能力组装各种上层分布式应用,如数据库、消息队列等。

此外,Sealos 还具有自由伸缩集群、备份恢复、释放集群等功能,即使在离线环境中,Sealos 也能提供出色的 Kubernetes 运行体验。

本文将会手把手教大家如何使用 Sealos 一键部署 Kubernetes 集群,包教包会。

原文链接:https://sealos.run/docs/self-hosting/lifecycle-management/quick-start/deploy-kubernetes

突破网络困境

首先我们需要下载 Sealos 命令行工具,Sealos 命令行工具可以到 Sealos 的 Release 页面获取:

有多种方式可以下载 Sealos 命令行工具,但由于国内特殊的网络环境,无论哪一种方式都是需要魔法的。Reelase 页面提供的各个包要么就是无法下载,要么就是速度奇慢。

要想突破网络限制,首先我们需要解决 Release 页面的链接访问问题。

如果你知道如何使用魔法来访问,那么下面的内容就不用看了。以下方案是给不会魔法的同学提供的。

这就需要用到一个浏览器插件:Violentmonkey (暴力猴)。你也可以安装 Tampermonkey (篡改猴)。他们都属于用户脚本管理器,本身无法为我们发挥什么作用,主要依靠各大社区编写的扩展脚本 (JavaScript 代码) 运行在浏览器上,来改变被访问网页的功能,提升我们的网页浏览体验。

我推荐使用 Violentmonkey,更轻量,更新更勤快。下面我们来进行安装。

安装浏览器插件

众所周知,Chrome 浏览器的插件需要到 Chrome Web 应用商店去下载,但你需要开启魔法才能访问这个网站,我们需要寻求他法。

方法一

微软出品的 Edge 浏览器自带一个扩展商店页面,而且这个页面是可以直接访问的。你可以选择使用 Edge 浏览器,然后打开 Edge 浏览器的扩展商店:

然后搜索 violentmonkey,点击获取开始安装:

方法二

对于 Chrome 浏览器,或者其他 Chromium 系的浏览器,我们可以从很多 Chrome 应用商店的镜像站去获取 Violentmonkey 的 crx 文件,这里推荐一个镜像站:

点击下载最新版:

下载完成解压后会得到一个 xxx.crx 文件,你需要打开浏览器设置,打开扩展程序页面,或者直接搜索 Chrome://extensions/进入。然后保持页面开发者模式的开启。找到被解压后的 crx 文件,将其拖动到扩展程序页面,释放并同意完成安装。

GitHub 增强脚本获取

Violentmonkey 插件是以运行用户脚本来实现功能的,借助用户脚本,可以实现各种强大的功能。这里我们需要安装一个 GitHub 增强脚本,这个脚本会给 GitHub Release 页面的文件提供多个 CDN 地址,我们可以通过 CDN 地址来下载文件,不再需要魔法。

脚本的安装非常简单无脑,直接浏览器打开这个链接:

然后点击确认安装:

安装完成后点击关闭即可。

打开 Violentmonkey 扩展的设置页面,然后点击箭头所指的图标打开脚本:

再其中加上一行:// @match *://githubfast.com/*,然后点击保存,关闭。

下载 Sealos 命令行工具

现在我们打开 Sealos 的 Release 页面:https://github.com/labring/sealos/releases。鉴于 GitHub 会时不时抽风,导致无法访问。我们可以在任意 github 链接后面加上 fast,也就是 githubfast.com,以此来访问 GitHub 页面。例如 Release 页面可以通过以下链接来访问:

这里有很多 Sealos 版本,建议使用正式版本,不要下载 alpha 版或者 rc 版。你可以直接使用最新的正式版,可以通过以下链接访问:

现在你可以看到每一个文件后面都提供了多个 CDN 链接,你只需要把鼠标放到其中一个链接上,然后鼠标右键就可以复制该 CDN 链接。

这个仓库里也提供了多个 GitHub 镜像网站:https://githubfast.com/runningcheese/MirrorSite

二进制下载

因为 Sealos 命令行工具只有一个二进制文件,所以所有的 Linux 发行版都可以选择直接下载二进制文件来使用 Sealos 命令行工具。

x86 架构可以选择下载 sealos_xxx_linux_amd64.tar.gz,记得使用右边的 CDN 链接下载。

获得 CDN 链接后,使用下面的命令开始下载:

$ URL=<你的 CDN 链接>
$ wget $URL && tar zxvf sealos_*_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin

可以多尝试几个链接,找到速度较快的链接。

测试一下:

$ sealos version
SealosVersion:
buildDate: "2023-10-09T10:07:15Z"
compiler: gc
gitCommit: 881c10cb
gitVersion: 4.3.5
goVersion: go1.20.8
platform: linux/amd64

同理,arm64 架构可以下载 sealos_xxx_linux_arm64.tar.gz。

包管理工具安装

Sealos 同时还提供了 DEB 包和 RPM 包,对于 Debian/Ubuntu 系的系统或者 Centos/RHEL 系的系统,可以选择使用包管理工具来安装。

以 Ubuntu 为例,x86 架构可以选择下载 sealos_xxx_linux_amd64.deb,下载完成后使用包管理工具安装即可。命令如下:

$ URL=<你的 CDN 链接>
$ wget $URL && dpkg -i sealos_*_linux_amd64.deb

Centos/RHEL 系的系统可以使用如下命令:

$ URL=<你的 CDN 链接>
$ wget $URL && yum localinstall -y sealos_*_linux_amd64.rpm

安装 Kubernetes 集群

终于进入正题了,接下来开始正式安装 Kubernetes 集群。

以下是一些基本的安装要求:

  • 每个集群节点应该有不同的主机名。主机名不要带下划线。
  • 所有节点的时间需要同步。
  • 需要在 Kubernetes 集群的第一个 master 节点上运行 sealos run 命令,目前集群外的节点不支持集群安装
  • 建议使用干净的操作系统来创建集群。不要自己装 Docker!
  • 支持大多数 Linux 发行版,例如:Ubuntu、CentOS、Rocky linux。
  • 支持 Docker Hub 中的所有 Kubernetes 版本。
  • 支持使用 Containerd 作为容器运行时。
  • 在公有云上安装请使用私有 IP

在正式安装之前,先来简单理解一下 Sealos 中的一个特有的概念:集群镜像

Sealos 吸取了 Docker 思想的精髓,把 Docker 的思想衍生到了集群的维度,实现分布式软件的构建、打包、交付、运行等等。

和操作系统 ISO 镜像或 Docker 镜像类似,集群镜像就是用一定的技术手段把整个集群的所有文件以一定格式打成的一个资源包

以 Kubernetes 集群镜像为例,里面包含了除操作系统以外的所有文件:

  • Containerd 依赖的二进制与 systemd 配置、Containerd 配置,以及一个私有的容器镜像仓库。
  • Kubernetes 核心组件二进制、容器镜像、kubelet system 配置等。
  • 其它脚本、配置与二进制工具等应用运行需要的所有依赖。

集群镜像的打包格式兼容了 OCI 标准,可以直接推送到 Docker 镜像仓库中。安装集群时只需要使用 sealos pull 命令将该镜像从镜像仓库里拉取下来,然后再执行 sealos run 命令,整个 Kubernetes 集群就安装好了。。。

Docker 解决了单个容器的镜像化问题,而 Sealos 通过把整个集群打包,实现了分布式软件的一处构建,处处运行

本文由于篇幅有限,集群镜像的具体原理就不展开介绍了,后面有机会再写文章介绍。感兴趣的同学可以参考 Sealos 的官方文档:

集群镜像版本支持说明

推荐使用 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

根据 Kubernetes 版本的不同,您可以选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。

当然,你也可以选择使用 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

与支持 Containerd 的 Kubernetes 镜像类似,您可以根据 Kubernetes 版本的不同选择不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以选择 sealos v4.1.4-rc3 及更高版本,并使用 v1 cri 版本。

查看集群镜像

Sealos 所有的集群镜像都可以在这个仓库里找到:

除了推送到 Docker Hub 之外,这些镜像还被同步到了阿里云的镜像仓库。Docker Hub 上可以通过以下链接查看 Sealos 所有的集群镜像:

但是集群镜像实在是太多了,假如我想看 Kubernetes 集群镜像的所有版本,有没有更高效的方式来查看呢?

这就需要用到一个工具叫 Registry Explorer,链接如下:

直接输入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes,然后点击 “Submit Query”:

你就会看到这个集群镜像的所有 tag。

Docker Hub 同理,输入 docker.io/labring/kubernetes 即可查看所有 tag。

安装集群

Kubernetes 的小版本号越高,集群越稳定。例如 v1.28.x,其中的 x 就是小版本号。建议使用小版本号比较高的 Kubernetes 版本。到本文截止时间为止,v1.27 最高的版本号是 v1.27.7,而 v1.28 最高的版本号是 v1.28.3,所以建议使用 v1.27.7。你需要根据实际情况来选择最佳的 Kubernetes 版本,不要照抄本文。

推荐使用 Containerd 作为运行时,也就是集群镜像 labring/kubernetes。如果你非要使用 Docker 作为运行时,可以使用集群镜像 labring/kubernetes-docker

如果你只有一个节点,可以使用以下命令来安装:

$ sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 --single

记得通过 Registry Explorer 来查看 helm 和 cilium 最新的版本号。

如果你有多个节点,可以使用以下命令来安装:

$ sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
--masters <master1 的 IP>,<master2 的 IP>,... \
--nodes <node1 的 IP>,<node1 的 IP>,... -p [your-ssh-passwd]

举个例子,假设你有两个节点,master 节点的 IP 是 192.168.64.10,node 节点的 IP 是 192.168.64.11,命令如下:

$ sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.27.7 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4 registry.cn-shanghai.aliyuncs.com/labring/cilium:v1.13.4 \
--masters 192.168.64.10 \
--nodes 192.168.64.11 -p [your-ssh-passwd]

没了。静静等待安装完成即可。安装完成后,可以使用如下命令查看集群状况:

$ kubectl get node
NAME STATUS ROLES AGE VERSION
ycs-master-1 Ready control-plane 18h v1.27.7
ycs-node-1 Ready <none> 18h v1.27.7 $ kubectl -n kube-system get pod
NAME READY STATUS RESTARTS AGE
cilium-fmgcw 1/1 Running 1 (48m ago) 18h
cilium-operator-86666d88cb-6h5kx 1/1 Running 1 (52m ago) 18h
cilium-skggs 1/1 Running 0 18h
coredns-5d78c9869d-j4kkj 1/1 Running 0 18h
coredns-5d78c9869d-snlt7 1/1 Running 0 18h
etcd-ycs-master-1 1/1 Running 9 18h
kube-apiserver-ycs-master-1 1/1 Running 9 18h
kube-controller-manager-ycs-master-1 1/1 Running 9 18h
kube-proxy-g45vv 1/1 Running 0 18h
kube-proxy-vz4dk 1/1 Running 1 (48m ago) 18h
kube-scheduler-ycs-master-1 1/1 Running 9 18h
kube-sealos-lvscare-ycs-node-1 1/1 Running 10 (48m ago) 18h
metrics-server-84c9bd846f-mwfbx 1/1 Running 0 47m

镜像分发原理

Sealos 在安装 Kubernetes 的过程中不会将镜像拷贝到所有节点,而是采用了一种更加优雅的解决方案。Sealos 会在第一个 master 节点 (第一个 master 节点是指创建集群的时候输入的第一个 master 节点的地址) 上启动一个私有镜像仓库,然后将 Kubernetes 集群镜像里的 registry 目录同步到私有镜像仓库中。

同时,每个节点都会运行一个 image-cri-shim 守护进程,kubelet 在拉取镜像的时候会发起一个 grpc 交互命令到 image-cri-shim。该进程会根据镜像名字在私有仓库里面查找,如果镜像存在则从本地镜像仓库拉取,否则就从远端拉取。

这样就完美解决了镜像分发问题。

详细原理请参阅 Sealos 镜像仓库相关文档:

使用 Sealos 一键部署 Kubernetes 集群的更多相关文章

  1. 和我一步步部署 kubernetes 集群

    和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...

  2. 使用kubeadm部署Kubernetes集群

    一.环境架构与部署准备 1.集群节点架构与各节点所需安装的服务如下图: 2.安装环境与软件版本: Master: 所需软件:docker-ce 17.03.kubelet1.11.1.kubeadm1 ...

  3. 二进制部署 Kubernetes 集群

    二进制部署 Kubernetes 集群   提供的几种Kubernetes部署方式 minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernet ...

  4. 使用Rancher的RKE快速部署Kubernetes集群

    简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163). 先在Windows机器上,将rke_linu ...

  5. 基于TLS证书手动部署kubernetes集群(下)

    一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已经部署好了etcd集群.flannel网络以及每个节点的docker,接下来部署master节 ...

  6. 高可用Kubernetes集群-15. 部署Kubernetes集群统一日志管理

    参考文档: Github:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsear ...

  7. 高可用Kubernetes集群-14. 部署Kubernetes集群性能监控平台

    参考文档: Github介绍:https://github.com/kubernetes/heapster Github yaml文件: https://github.com/kubernetes/h ...

  8. kubeadm部署Kubernetes集群

    Preface 通过kubeadm管理工具部署Kubernetes集群,相对离线包的二进制部署集群方式而言,更为简单与便捷.以下为个人学习总结: 两者区别在于前者部署方式使得大部分集群组件(Kube- ...

  9. 安装部署 Kubernetes 集群

    安装部署 Kubernetes 集群 阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Hea ...

  10. 在CentOS7上部署Kubernetes集群

    在CentOS7上部署Kubernetes集群 文/FCBusquest 2015-12-22 18:36:00 简介 Kubernetes(k8s)是Google开源的大规模容器集群管理系统, 本文 ...

随机推荐

  1. [ARC156C] Tree and LCS

    Problem Statement We have a tree $T$ with vertices numbered $1$ to $N$. The $i$-th edge of $T$ conne ...

  2. 【YOLOv5】实现扑克牌的点数识别

    前言 其实年初的时候,我也跟着别人的源码,用 Tensoflow 实现过扑克牌的目标检测.虽然也通过博文的方式记录了,但是那个项目使用的 TF 版本比较旧,自身对 TF 并不熟.后期如果说要升级或修改 ...

  3. 初始OpenGL

    OpenGL到底是什么? 一般它被认为是一个API,包含一系列操作图形,图像的函数.然而,它并不是一个API,而是Khronos组织制定并维护的规范. OpenGL规定了每个函数如何执行,以及它们的输 ...

  4. LeetCode227:基本计算器|| (栈、模拟)

    解题思路:两个双端队列模拟,一个存放操作数 a,另一个存放操作符 op,如果找到另一个操作数b,判断操作队列队尾是否是*/,是的话执行 a(*or/)b.遍历完字符串,如果操作符队列非空,说明还有+- ...

  5. MySQL运维16-双主双从读写分离

    一.双主双从架构介绍 在MySQL多主多从的架构配置中和双主双从是一样的,学会了双主双从的架构部署,多主多从的配置也同样就回了.下面以双主双从作为示例演示.其中一个主机maste1用于处理所有写请求, ...

  6. 基于QT环境下,实现客户端红外采集人体向服务端通信。

    一.本次测试目的 基于QT环境下STM32人体红外检测,实现客户端红外采集到信息向服务端通信. 二.功能 (1).传入音乐,当服务端接收到信息时,打开音乐    (2).在服务端上面显示图片,当接收到 ...

  7. win11 右击还原 win10的

    以管理员身份 打开 powershell, 然后输入如下代码 .\reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a ...

  8. 文心一言 VS 讯飞星火 VS chatgpt (49)-- 算法导论6.2 1题

    一.参照图6-2的方法,说明 MAX-HEAPIFY(A,3)在数组 A=(27,17,3,16,13,10,1,5,7,12,4,8,9,0)上的操作过程. 文心一言: 下面是 MAX-HEAPIF ...

  9. Cesium中用到的图形技术——Computing the horizon occlusion point

    译者注:本文翻译自Cesium官方博文<Computing the horizon occlusion point>,by KEVIN RING. 你厌倦了地平线剔除吗? 太好了,我也没有 ...

  10. 技术实操丨SoundNet迁移学习之由声音分类到语音情感识别

    摘要:声音也是识别对象的一种重要数据源.其中根据声音来识别声音所处的环境也是语音识别的研究内容之一. 一.思路 1.SoundNet模型在视频数据中先预训练,视频任务可能是场景识别,可参考这篇文章So ...