使用 Sealos 一键部署 Kubernetes 集群

news2024/11/18 20:22:40

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

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

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

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

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

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

原文链接:https://forum.laf.run/d/1076

突破网络困境

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

  • https://github.com/labring/sealos/releases]

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

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

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

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

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

安装浏览器插件

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

方法一

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

  • https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home]

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

方法二

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

  • https://crxdl.com/

点击下载最新版:

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

GitHub 增强脚本获取

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

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

  • https://jsd.onmicrosoft.cn/gh/XIU2/UserScript@master/GithubEnhanced-High-Speed-Download.user.js

然后点击确认安装:

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

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

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

下载 Sealos 命令行工具

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

  • https://githubfast.com/labring/sealos/releases

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

  • https://githubfast.com/labring/sealos/releases/latest

现在你可以看到每一个文件后面都提供了多个 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 的官方文档:

  • https://sealos.run/zh-Hans/docs/category/advanced-guide-1

集群镜像版本支持说明

推荐使用 Containerd 作为容器运行时 (CRI) 的集群镜像版本,Containerd 是一种轻量级、高性能的容器运行时,与 Docker 兼容。使用 Containerd 的 Kubernetes 镜像可以提供更高的性能和资源利用率。以下是支持 Containerd 的集群镜像版本支持说明:

K8s 版本Sealos 版本CRI 版本集群镜像版本
<1.25>=v4.0.0v1alpha2labring/kubernetes:v1.24.0
>=1.25>=v4.1.0v1alpha2labring/kubernetes:v1.25.0
>=1.26>=v4.1.4-rc3v1labring/kubernetes:v1.26.0
>=1.27>=v4.2.0-alpha3v1labring/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.0v1alpha2labring/kubernetes-docker:v1.24.0
>=1.25>=v4.1.0v1alpha2labring/kubernetes-docker:v1.25.0
>=1.26>=v4.1.4-rc3v1labring/kubernetes-docker:v1.26.0
>=1.27>=v4.2.0-alpha3v1labring/kubernetes-docker:v1.27.0

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

查看集群镜像

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

  • https://github.com/labring-actions/cluster-image-docs

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

  • https://hub.docker.com/u/labring

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

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

  • https://explore.ggcr.dev/

直接输入 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 镜像仓库相关文档:

  • https://sealos.run/zh-Hans/docs/self-hosting/lifecycle-management/operations/registry/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式(21)中介者模式

一、介绍&#xff1a; 1、定义&#xff1a;中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它通过引入一个中介者对象来降低多个对象之间的耦合度。在中介者模式中&#xff0c;各个对象之间不直接进行通信&#xff0c;而是通过中介者对象…

Nginx 实战指南:暴露出请求的真实 IP

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…

跑腿小程序开发解析:技术架构、接口设计和前沿趋势

随着生活节奏的加快和个人需求的增加&#xff0c;跑腿小程序成为了人们生活中不可或缺的一部分。从技术角度来看&#xff0c;一个高效、安全、以及用户友好的跑腿小程序是由多个关键要素构成的&#xff0c;包括技术架构、接口设计和前沿趋势。 技术架构 1. 前端技术选型 选择…

Windows Server 2016磁盘管理使用指南:看完即会!

如何打开Windows Server 2016磁盘管理器&#xff1f; 磁盘管理首先在Windows XP中引入&#xff0c;是一个Windows内置实用程序&#xff0c;可让你管理硬盘和关联的分区或卷。在Windows Server磁盘管理对硬盘进行分区非常方便。你可以通过以下方法之一访问它&#xff1a; 方…

数据库系统原理与实践 笔记 #6

文章目录 数据库系统原理与实践 笔记 #6数据库设计和E-R模型设计过程实体-联系模型实体集联系集联系集中实体的角色联系集的度属性复合属性 约束映射基数约束参与约束实体集的码联系集的码冗余属性 实体-联系图E-R图参与联系集中的实体集基数约束角色三元关系上的基数约束弱实体…

JMeter简单使用

JMeter是一个功能强大的开源性能测试工具&#xff0c;用于对各种应用程序、协议和服务器进行性能和负载测试。它被广泛用于测试Web应用程序的性能&#xff0c;并可以模拟多种负载条件和行为。 JMeter使用 添加线程组 设置线程组的配置 设置请求 配置请求 添加监听器 查看压…

Java微服务构建:打造健壮订单模型的完整指南

Java微服务构建一个健壮的订单模型(业务,规划&#xff0c;设计与实现) 在设计领域业务模型时&#xff0c;我们通常会追求理论完美&#xff0c;而忽略实践的脆弱性。尽管我们没有贬低领域建模的意图&#xff0c;但事实上&#xff0c;在电商技术发展多年之后&#xff0c;某些系统…

idea中启动多例项目配置

多实例启动 日常本地开发微服务项目时&#xff0c;博主想要验证一下网关的负载均衡以及感知服务上下线能力时&#xff0c;需要用到多实例启动。 那么什么是多实例启动嘞&#xff1f;简单说就是能在本地同时启动多个同一服务。打个比方项目中有一个 MobileApplication 服务&…

怎么压缩视频?试试这个方法

怎么压缩视频&#xff1f;我们都知道视频的内存比其他类型的文件都要大很多。那是因为视频的分辨率越高&#xff0c;所包含的像素点就越多&#xff0c;因此文件大小也就越大。而且一般来说&#xff0c;视频文件的时长都比较长&#xff0c;当视频的时间越长&#xff0c;那么视频…

RFID银行款箱智能管理应用解决方案

一、行业背景 随着金融业务的不断发展&#xff0c;金融物流的安全性成为越来越重要的问题&#xff0c;银行金库每天都有大量现金款箱的出入库和配送&#xff0c;如果无法确保及时准确地进行入库、库存控制和出库&#xff0c;将给银行带来巨大的风险&#xff0c;增加了银行的管…

堆栈与队列算法-八皇后问题的求解算法

目录 堆栈与队列算法-八皇后问题的求解算法 C代码 堆栈与队列算法-八皇后问题的求解算法 八皇后问题是一种常见的堆栈应用实例。在国际象棋中的皇后可以在没有限定一步走几格的前提下&#xff0c;对棋盘中的其他棋子直吃、横吃和对角斜吃&#xff08;左斜吃或右斜吃均可&…

博客模板博客模板

xservices-bpm-6.2.1.1.jar 本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》作者 公众号&#xff1a;山峯草堂&#xff0c;非技术多篇文章&#xff0c;专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱…

使用Objective-C和ASIHTTPRequest库进行Douban电影分析

概述 Douban是一个提供图书、音乐、电影等文化内容的社交网站&#xff0c;它的电影频道包含了大量的电影信息和用户评价。本文将介绍如何使用Objective-C语言和ASIHTTPRequest库进行Douban电影分析&#xff0c;包括如何获取电影数据、如何解析JSON格式的数据、如何使用代理IP技…

文心一言 VS 讯飞星火 VS chatgpt (124)-- 算法导论10.5 5题

五、用go语言&#xff0c;给定一个n结点的二叉树&#xff0c;写出一个 O(n)时间的非递归过程&#xff0c;将该树每个结点的关键字输出。要求除该树本身的存储空间外只能使用固定量的额外存储空间&#xff0c;且在过程中不得修改该树&#xff0c;即使是暂时的修改也不允许。 文…

ice和Dtls 传输的创建及1个简单的SFU转发实例

ice和Dtls 传输的创建及1个简单的SFU转发实例 licode中,webrtcconn基于dtlstransport 收发,而dtlstransport通过libnice作为底层。dtlstransport 使用了srtp加解密。文末给出一个简化的sfu实例的实现。对应的,看下M98的代码,更能理解为啥这么做: IceTransportInternal 与D…

Transformer模型原理

NLP预训练模型的架构大致可以分为三类&#xff1a; 1. Encoder-Decoder架构&#xff08;T5&#xff09;&#xff0c;seq2seq模型&#xff0c;RNN、LSTM网络 2. BERT&#xff1a;自编码语言模型&#xff0c;预测文本随机掩码 3. GPT&#xff1a; 自回归语言模型&#xff0c;预测…

Elasticsearch(一)---搭建

搭建es 不允许root用于运行 创建esuser用户&#xff1a; useradd esuser 设置密码 passwd esuser 让esuser拥有sudo的权限&#xff0c;需要修改/etc/sudoers文件 需要先给/etc/sudoers添加写的权限 [rootnode1 ~]# vim /etc/sudoers 改完之后将写权限删除 三台服务器上操…

“阿里巴巴按关键字搜索接口:一键获取海量商品信息,助力商家抢占市场先机!“

阿里巴巴按关键字搜索商品的接口是通过开放平台提供的API接口来实现的。要使用这个接口&#xff0c;需要进行以下步骤&#xff1a; 确认API接口的请求地址和所需参数&#xff1a;需要先查看API文档&#xff0c;了解所要访问的API接口的请求地址和请求参数&#xff0c;以便正确…

python随手小练13

题目1&#xff1a; 定义学员信息类&#xff0c;包含姓名、成绩属性&#xff0c;定义成绩打印方法 (90分及以上显示优秀&#xff0c;80分及以上显示良好&#xff0c;70分及以上显示中等&#xff0c;60分及以上显示合格&#xff0c;60分以下显示不及格) 具体操作&#xff1a; cl…

基于pyqt5和yolov8的智慧工地施工人工安全检测系统

基于pyqt5和yolov8的智慧工地施工人工安全检测系统 主要基于两者进行集成 在前面模型训练基础上&#xff0c;实现安全马甲、安全面具和安全帽的检测。 核心检测代码 def run(self):self.hilo_corriendo Truemodel YOLO("best.pt")cap cv2.VideoCapture(0)while…