Sealos 是一款以 Kubernetes 為內(nèi)核的云操作系統(tǒng)發(fā)行版,使用戶能夠像使用個人電腦一樣簡單地使用云。
與此同時,Sealos 還提供一套強(qiáng)大的工具,可以便利地管理整個 Kubernetes 集群的生命周期。
Sealos 不僅可以一鍵安裝一個單節(jié)點(diǎn)的 Kubernetes 開發(fā)環(huán)境,還能構(gòu)建數(shù)千節(jié)點(diǎn)的生產(chǎn)高可用集群。
Sealos 還可以在 Kubernetes 之上,通過集群鏡像能力組裝各種上層分布式應(yīng)用,如數(shù)據(jù)庫、消息隊(duì)列等。
此外,Sealos 還具有自由伸縮集群、備份恢復(fù)、釋放集群等功能,即使在離線環(huán)境中,Sealos 也能提供出色的 Kubernetes 運(yùn)行體驗(yàn)。
本文將會手把手教大家如何使用 Sealos 一鍵部署 Kubernetes 集群,包教包會。
原文鏈接:https://sealos.run/docs/self-hosting/lifecycle-management/quick-start/deploy-kubernetes
突破網(wǎng)絡(luò)困境
首先我們需要下載 Sealos 命令行工具,Sealos 命令行工具可以到 Sealos 的 Release 頁面獲?。?/p>
- https://github.com/labring/sealos/releases
有多種方式可以下載 Sealos 命令行工具,但由于國內(nèi)特殊的網(wǎng)絡(luò)環(huán)境,無論哪一種方式都是需要魔法的。Reelase 頁面提供的各個包要么就是無法下載,要么就是速度奇慢。
要想突破網(wǎng)絡(luò)限制,首先我們需要解決 Release 頁面的鏈接訪問問題。
如果你知道如何使用魔法來訪問,那么下面的內(nèi)容就不用看了。以下方案是給不會魔法的同學(xué)提供的。
這就需要用到一個瀏覽器插件:Violentmonkey (暴力猴)。你也可以安裝 Tampermonkey (篡改猴)。他們都屬于用戶腳本管理器,本身無法為我們發(fā)揮什么作用,主要依靠各大社區(qū)編寫的擴(kuò)展腳本 (JavaScript 代碼) 運(yùn)行在瀏覽器上,來改變被訪問網(wǎng)頁的功能,提升我們的網(wǎng)頁瀏覽體驗(yàn)。
我推薦使用 Violentmonkey,更輕量,更新更勤快。下面我們來進(jìn)行安裝。
安裝瀏覽器插件
眾所周知,Chrome 瀏覽器的插件需要到 Chrome Web 應(yīng)用商店去下載,但你需要開啟魔法才能訪問這個網(wǎng)站,我們需要尋求他法。
方法一
微軟出品的 Edge 瀏覽器自帶一個擴(kuò)展商店頁面,而且這個頁面是可以直接訪問的。你可以選擇使用 Edge 瀏覽器,然后打開 Edge 瀏覽器的擴(kuò)展商店:
- https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home]
然后搜索 violentmonkey,點(diǎn)擊獲取開始安裝:
方法二
對于 Chrome 瀏覽器,或者其他 Chromium 系的瀏覽器,我們可以從很多 Chrome 應(yīng)用商店的鏡像站去獲取 Violentmonkey 的 crx 文件,這里推薦一個鏡像站:
- https://crxdl.com/
點(diǎn)擊下載最新版:
下載完成解壓后會得到一個 xxx.crx 文件,你需要打開瀏覽器設(shè)置,打開擴(kuò)展程序頁面,或者直接搜索 Chrome://extensions/進(jìn)入。然后保持頁面開發(fā)者模式的開啟。找到被解壓后的 crx 文件,將其拖動到擴(kuò)展程序頁面,釋放并同意完成安裝。
GitHub 增強(qiáng)腳本獲取
Violentmonkey 插件是以運(yùn)行用戶腳本來實(shí)現(xiàn)功能的,借助用戶腳本,可以實(shí)現(xiàn)各種強(qiáng)大的功能。這里我們需要安裝一個 GitHub 增強(qiáng)腳本,這個腳本會給 GitHub Release 頁面的文件提供多個 CDN 地址,我們可以通過 CDN 地址來下載文件,不再需要魔法。
腳本的安裝非常簡單無腦,直接瀏覽器打開這個鏈接:
- https://cdn.jsdelivr.us/gh/XIU2/UserScript@master/GithubEnhanced-High-Speed-Download.user.js
然后點(diǎn)擊確認(rèn)安裝:
安裝完成后點(diǎn)擊關(guān)閉即可。
打開 Violentmonkey 擴(kuò)展的設(shè)置頁面,然后點(diǎn)擊箭頭所指的圖標(biāo)打開腳本:
再其中加上一行:// @match *://githubfast.com/*
,然后點(diǎn)擊保存,關(guān)閉。
下載 Sealos 命令行工具
現(xiàn)在我們打開 Sealos 的 Release 頁面:https://github.com/labring/sealos/releases。鑒于 GitHub 會時不時抽風(fēng),導(dǎo)致無法訪問。我們可以在任意 github 鏈接后面加上 fast,也就是 githubfast.com,以此來訪問 GitHub 頁面。例如 Release 頁面可以通過以下鏈接來訪問:
- https://githubfast.com/labring/sealos/releases
這里有很多 Sealos 版本,建議使用正式版本,不要下載 alpha 版或者 rc 版。你可以直接使用最新的正式版,可以通過以下鏈接訪問:
- https://github.com/labring/sealos/releases/latest
現(xiàn)在你可以看到每一個文件后面都提供了多個 CDN 鏈接,你只需要把鼠標(biāo)放到其中一個鏈接上,然后鼠標(biāo)右鍵就可以復(fù)制該 CDN 鏈接。
這個倉庫里也提供了多個 GitHub 鏡像網(wǎng)站:https://githubfast.com/runningcheese/MirrorSite
二進(jìn)制下載
因?yàn)?Sealos 命令行工具只有一個二進(jìn)制文件,所以所有的 Linux 發(fā)行版都可以選擇直接下載二進(jìn)制文件來使用 Sealos 命令行工具。
x86 架構(gòu)可以選擇下載 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 架構(gòu)可以下載 sealos_xxx_linux_arm64.tar.gz。
包管理工具安裝
Sealos 同時還提供了 DEB 包和 RPM 包,對于 Debian/Ubuntu 系的系統(tǒng)或者 Centos/RHEL 系的系統(tǒng),可以選擇使用包管理工具來安裝。
以 Ubuntu 為例,x86 架構(gòu)可以選擇下載 sealos_xxx_linux_amd64.deb,下載完成后使用包管理工具安裝即可。命令如下:
$ URL=<你的 CDN 鏈接>
$ wget $URL && dpkg -i sealos_*_linux_amd64.deb
Centos/RHEL 系的系統(tǒng)可以使用如下命令:
$ URL=<你的 CDN 鏈接>
$ wget $URL && yum localinstall -y sealos_*_linux_amd64.rpm
安裝 Kubernetes 集群
終于進(jìn)入正題了,接下來開始正式安裝 Kubernetes 集群。
以下是一些基本的安裝要求:
- 每個集群節(jié)點(diǎn)應(yīng)該有不同的主機(jī)名。主機(jī)名不要帶下劃線。
- 所有節(jié)點(diǎn)的時間需要同步。
- 需要在 Kubernetes 集群的第一個 master 節(jié)點(diǎn)上運(yùn)行
sealos run
命令,目前集群外的節(jié)點(diǎn)不支持集群安裝。 - 建議使用干凈的操作系統(tǒng)來創(chuàng)建集群。不要自己裝 Docker!
- 支持大多數(shù) Linux 發(fā)行版,例如:Ubuntu、CentOS、Rocky linux。
- 支持 Docker Hub 中的所有 Kubernetes 版本。
- 支持使用 Containerd 作為容器運(yùn)行時。
- 在公有云上安裝請使用私有 IP。
在正式安裝之前,先來簡單理解一下 Sealos 中的一個特有的概念:集群鏡像。
Sealos 吸取了 Docker 思想的精髓,把 Docker 的思想衍生到了集群的維度,實(shí)現(xiàn)分布式軟件的構(gòu)建、打包、交付、運(yùn)行等等。
和操作系統(tǒng) ISO 鏡像或 Docker 鏡像類似,集群鏡像就是用一定的技術(shù)手段把整個集群的所有文件以一定格式打成的一個資源包。
以 Kubernetes 集群鏡像為例,里面包含了除操作系統(tǒng)以外的所有文件:
- Containerd 依賴的二進(jìn)制與 systemd 配置、Containerd 配置,以及一個私有的容器鏡像倉庫。
- Kubernetes 核心組件二進(jìn)制、容器鏡像、kubelet system 配置等。
- 其它腳本、配置與二進(jìn)制工具等應(yīng)用運(yùn)行需要的所有依賴。
集群鏡像的打包格式兼容了 OCI 標(biāo)準(zhǔn),可以直接推送到 Docker 鏡像倉庫中。安裝集群時只需要使用 sealos pull 命令將該鏡像從鏡像倉庫里拉取下來,然后再執(zhí)行 sealos run 命令,整個 Kubernetes 集群就安裝好了。。。
Docker 解決了單個容器的鏡像化問題,而 Sealos 通過把整個集群打包,實(shí)現(xiàn)了分布式軟件的一處構(gòu)建,處處運(yùn)行。
本文由于篇幅有限,集群鏡像的具體原理就不展開介紹了,后面有機(jī)會再寫文章介紹。感興趣的同學(xué)可以參考 Sealos 的官方文檔:
- https://sealos.run/docs/category/advanced-guide-1
集群鏡像版本支持說明
推薦使用 Containerd 作為容器運(yùn)行時 (CRI) 的集群鏡像版本,Containerd 是一種輕量級、高性能的容器運(yùn)行時,與 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 |
根據(jù) Kubernetes 版本的不同,您可以選擇不同的 Sealos 版本和 CRI 版本。例如,如果您要使用 Kubernetes v1.26.0 版本,您可以選擇 sealos v4.1.4-rc3 及更高版本,并使用 v1 CRI 版本。
當(dāng)然,你也可以選擇使用 Docker 作為容器運(yùn)行時,以下是支持 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 鏡像類似,您可以根據(jù) 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
但是集群鏡像實(shí)在是太多了,假如我想看 Kubernetes 集群鏡像的所有版本,有沒有更高效的方式來查看呢?
這就需要用到一個工具叫 Registry Explorer,鏈接如下:
- https://explore.ggcr.dev/
直接輸入 registry.cn-shanghai.aliyuncs.com/labring/kubernetes
,然后點(diǎn)擊 “Submit Query”:
你就會看到這個集群鏡像的所有 tag。
Docker Hub 同理,輸入 docker.io/labring/kubernetes
即可查看所有 tag。
安裝集群
Kubernetes 的小版本號越高,集群越穩(wěn)定。例如 v1.28.x,其中的 x 就是小版本號。建議使用小版本號比較高的 Kubernetes 版本。到本文截止時間為止,v1.27 最高的版本號是 v1.27.7,而 v1.28 最高的版本號是 v1.28.3,所以建議使用 v1.27.7。你需要根據(jù)實(shí)際情況來選擇最佳的 Kubernetes 版本,不要照抄本文。
推薦使用 Containerd 作為運(yùn)行時,也就是集群鏡像 labring/kubernetes
。如果你非要使用 Docker 作為運(yùn)行時,可以使用集群鏡像 labring/kubernetes-docker
。
如果你只有一個節(jié)點(diǎn),可以使用以下命令來安裝:
$ 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 最新的版本號。
如果你有多個節(jié)點(diǎn),可以使用以下命令來安裝:
$ 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]
舉個例子,假設(shè)你有兩個節(jié)點(diǎn),master 節(jié)點(diǎn)的 IP 是 192.168.64.10,node 節(jié)點(diǎn)的 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
鏡像分發(fā)原理
Sealos 在安裝 Kubernetes 的過程中不會將鏡像拷貝到所有節(jié)點(diǎn),而是采用了一種更加優(yōu)雅的解決方案。Sealos 會在第一個 master 節(jié)點(diǎn) (第一個 master 節(jié)點(diǎn)是指創(chuàng)建集群的時候輸入的第一個 master 節(jié)點(diǎn)的地址) 上啟動一個私有鏡像倉庫,然后將 Kubernetes 集群鏡像里的 registry 目錄同步到私有鏡像倉庫中。
同時,每個節(jié)點(diǎn)都會運(yùn)行一個 image-cri-shim 守護(hù)進(jìn)程,kubelet 在拉取鏡像的時候會發(fā)起一個 grpc 交互命令到 image-cri-shim。該進(jìn)程會根據(jù)鏡像名字在私有倉庫里面查找,如果鏡像存在則從本地鏡像倉庫拉取,否則就從遠(yuǎn)端拉取。
這樣就完美解決了鏡像分發(fā)問題。文章來源:http://www.zghlxwxcb.cn/news/detail-774082.html
詳細(xì)原理請參閱 Sealos 鏡像倉庫相關(guān)文檔:文章來源地址http://www.zghlxwxcb.cn/news/detail-774082.html
- https://sealos.run/docs/self-hosting/lifecycle-management/operations/registry/
到了這里,關(guān)于使用 Sealos 一鍵部署 Kubernetes 集群的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!