什么是 sealos
sealos 是一個以 kubernetes 為內(nèi)核的云操作系統(tǒng)發(fā)行版。
sealos 希望做一個通用的云操作系統(tǒng),讓用戶不管是私有云還是公有云都可以非常低門檻的用云。
sealos 可以把云的維護成本和使用門檻降的足夠低。
sealos 目標是讓企業(yè)完完全全擁有屬于自己控制的 AWS 這樣的公有云能力,可以運行在企業(yè)自己機房中,也可以運行在別的公有云基礎(chǔ)設(shè)施之上。
sealos 相當于利用云原生的能力與架構(gòu)完全實現(xiàn)一個 AWS 的替代品,不過在產(chǎn)品形態(tài)上會有所差異。
如 AWS 上有數(shù)據(jù)庫服務(wù)用戶可以啟動數(shù)據(jù)庫服務(wù)。 在 sealos 中,一切皆應(yīng)用,用戶只需要安裝一個數(shù)據(jù)庫的應(yīng)用即可使用數(shù)據(jù)庫,像 PC 上安裝一個軟件一樣簡單。
sealos 是一個多租戶云操作系統(tǒng),可以完全滿足大規(guī)模用戶同時使用與協(xié)作,且能提供非常好的隔離性。
優(yōu)勢
簡單
單機操作系統(tǒng)的安裝和使用是比較簡單的,絕大多數(shù)企業(yè)在 linux 發(fā)行版上每年付出的成本是很少的,基本安裝上就可以使用,使用過程中也不太會出現(xiàn)太多問題。
對比云發(fā)現(xiàn)并沒有達到這樣的理想情況,企業(yè)不管是在使用公有云還是自建私有云上每年都會花費非常大的成本,其原因是好用的云操作系統(tǒng)發(fā)行版沒有普及。
sealos 可以通過簡單的命令運行起一個自定義的云操作系統(tǒng),然后像使用 PC 上的軟件一樣用云,相當于把 PC 上的單機應(yīng)用全部替換成了各種分布式應(yīng)用。
通過 sealos 用戶可以非常方便的運行開發(fā)者需要的各種分布式應(yīng)用,如數(shù)據(jù)庫,消息隊列,AI 能力等。
開放,廠商兼容
sealos 完全開源,可以在物理機虛擬機以及各大公有云廠商上運行。企業(yè)完全不用擔心強綁定問題,可以在各種環(huán)境中自由切換。
功能特性
kubernetes 生命周期管理
sealos 的 boot 模塊可以幫助用戶非常好的管理整個集群的生命周期。
可以用 sealos 安裝一個不包含任何組件的裸 kubernetes 集群。
也可以用 sealos 在 kubernetes 之上通過集群鏡像能力組裝各種上層分布式應(yīng)用,如數(shù)據(jù)庫消息隊列等。
可以用 sealos 安裝一個單節(jié)點的 kubernetes 開發(fā)環(huán)境。
也可以用 sealos 構(gòu)建數(shù)千節(jié)點的生產(chǎn)高可用集群。
可以用 sealos 自由伸縮集群,備份恢復,釋放集群等。
也可以即便在離線環(huán)境中也可以非常好的使用 sealos 來運行 kubernetes.
- 支持 ARM,v1.20 以上版本離線包支持 containerd 與 docker 集成
- 99年證書, 支持集群備份,升級
- 不依賴 ansible haproxy keepalived, 一個二進制工具,0依賴
- 離線安裝,不同 kubernetes 版本使用不同的集群鏡像即可
- 高可用通過 ipvs 實現(xiàn)的 localLB,占用資源少,穩(wěn)定可靠,類似 kube-proxy 的實現(xiàn)
- 幾乎可兼容所有支持 systemd 的 x86_64 架構(gòu)的環(huán)境
- 輕松實現(xiàn)集群節(jié)點的增加/刪除
- 數(shù)萬用戶在線上環(huán)境使用 sealos,穩(wěn)定可靠
- 支持集群鏡像,自由組合定制你需要的集群,如 openebs 存儲+數(shù)據(jù)庫+minio 對象存儲
運行 kubernetes 上的各種分布式應(yīng)用
可以通過 sealos run
命令來運行 kubernetes 之上的各種分布式應(yīng)用,像數(shù)據(jù)庫,消息隊列,AI 能力甚至企業(yè)級 SaaS 軟件。
如:
# MySQL cluster
$ sealos run labring/mysql-operator:8.0.23-14.1
# Clickhouse cluster
$ sealos run labring/clickhouse:0.18.4
# Redis cluster
$ sealos run labring/redis-operator:3.1.4
自定義集群
對于 sealos 生態(tài)沒有的集群鏡像,用戶可以使用非常方便的方式來自己構(gòu)建和定制屬于自己的集群鏡像。
如:
也可以定制一個完全屬于自己的 kubernetes:
Sealfile:
FROM kubernetes:v1.25.0
COPY flannel-chart .
COPY mysql-chart .
CMD ["helm install flannel flannel-chart", "helm install mysql mysql-chart"]
sealos build -t my-kuberentes:v1.25.0 .
sealos run my-kuberentes:v1.25.0 ...
sealos cloud
擁有了 sealos cloud 用戶就擁有了一個完全屬于自己的公有云能力,只是這個公有云有點特殊:
- sealos cloud 非常簡單,一鍵就可以運行
- sealos cloud 非常強大,公有云有的很多能力 sealos cloud 也有,如 數(shù)據(jù)庫 消息隊列服務(wù),不過 sealos cloud 完全使用云原生架構(gòu)實現(xiàn)。
- sealos cloud 可以跑在各大公有云平臺上,也可以運行在用戶自己機房中,公有云與私有云擁有完全一致的體驗
- sealos cloud 支持多租戶,數(shù)萬人的大企業(yè)所有的開發(fā)者都可以同時使用一個 sealos cloud 相互之間不會有影響。
各種分布式軟件可以像使用 PC 軟件一樣簡單!即便 kubernetes 單詞都不會拼寫的同學也可以擁有非常好的使用體驗。
使用場景
企業(yè)使用公有云
公有云客戶可以直接使用 sealos 公有云
- sealos 公有云支持打開瀏覽器直接使用,創(chuàng)建用戶專屬數(shù)據(jù)庫與其他服務(wù),直接把業(yè)務(wù)跑在 sealos cloud 上,無需用戶創(chuàng)建 kubernetes 集群
- sealos 支持用戶在公有云上創(chuàng)建一個完全用戶專屬的 sealos cloud,完全與其他用戶隔離。
- sealos 公有云支持適配各大云廠商,自由選擇,對公有云無感知。
- sealos cloud 擁有極致的產(chǎn)品體驗!
企業(yè)私有云
- sealos cloud 支持部署到用戶自己的機房中,形態(tài)與公有云版本完全一致,使用方式也完全一致,支持國產(chǎn)化,支持離線部署。
- 可以對能力進行自由裁剪,來滿足企業(yè)各種不同的需求
- 私有云也是多租戶設(shè)計,滿足整個企業(yè)內(nèi)部對云的訴求,包括計量等
應(yīng)用交付
- sealos 真正可以做到在集群緯度保證一致性,構(gòu)建集群鏡像測試沒問題到客戶環(huán)境中運行就沒問題
- sealos 完全支持一鍵交付,無需任何面向過程的操作,交付文檔可精簡到一條命令
- sealos 可以把應(yīng)用和集群打包成為一個整體,包含所有依賴,即便離線環(huán)境中也能做到分鐘級交付
各種云原生實踐
- 學習 kubernetes 需要有實踐環(huán)境...
- 需要構(gòu)建云原生開發(fā)環(huán)境...
- 需要安裝部署 kubernetes...
- 需要高可用的線上環(huán)境...
- 需要在 kubernetes 之上部署和運行各種分布式應(yīng)用...
FAQ
sealos 是 kubernetes 安裝工具嗎?
安裝部署是 sealos 一個最基本的小功能,就像單機操作系統(tǒng)也有 boot 模塊一樣,sealos 的 boot 模塊可以很好的管理整個 kubernetes 在
任何場景下生命周期管理問題。
云操作系統(tǒng)和云平臺有什么區(qū)別和聯(lián)系?
云平臺通常是一個具體東西,或者是一個正在運行的東西,而云操作系統(tǒng)是一系列抽象和具體的技術(shù)展的集合,可以通過云操作系統(tǒng)來構(gòu)建一個
屬于你自己的云平臺,如果云平臺是實例,那云操作系統(tǒng)就是類,或者可以說一個運行著的云操作系統(tǒng)就是一個云平臺。
云操作系統(tǒng)比較抽象,最重要的能力是向下抽象資源,向上應(yīng)用管理,而具體的能力都是通過云操作系統(tǒng)之上的應(yīng)用來提供的,如分布式的數(shù)據(jù)庫消息等
不是很懂 kubernetes 是否能很友好的使用 sealos?
可以的,就像是不懂 linux kernel 也能很容易的使用 ubuntu 一樣,關(guān)鍵看使用者是什么樣的角色,比如一個 DBA 只需要在 sealos 上
安裝一個數(shù)據(jù)庫應(yīng)用即可來做數(shù)據(jù)庫管理 SQL 調(diào)優(yōu)等,而無需關(guān)心 kubernetes 的存在。
sealos 和 rancher kubesphere 有什么區(qū)別?
定位不同,sealos 的設(shè)計理念是 "化整為零,自由組裝,大道至簡",利用 kubernetes 的能力使用非常簡單的方式提供給用戶真正想要的東西。
也就是說用戶想要的不一定是 kubernetes,大眾用戶需要的是一個具體的能力,而且可能都不一樣。
操作系統(tǒng)的特點是用戶需要什么它就是什么,極其靈活,不會給用戶帶來額外負擔。
如 windows 對于一個游戲玩家來說就是個游戲機, 對于程序員來說就是用來寫代碼的工具,對于美工來說就是用來修圖的。 操作系統(tǒng)的形態(tài)取決于使用者是誰,裝了什么應(yīng)用。
那 sealos 云操作系統(tǒng)也一樣,sealos 本身通過 sealos core, sealos hub, sealos desktop 把分布式應(yīng)用管理好即可, 剩下一切能力讓應(yīng)用層去擴展。
分布式應(yīng)用是 sealos 上的一等公民,一切皆應(yīng)用。
sealos cloud 是給 kubernetes 做了個 UI?
GUI 是冰山上面的東西,對應(yīng)的需要底層提供很多能力,比如 sealos 就寫了很多的控制器來管理用戶,集群鏡像,應(yīng)用,計量等。
同樣 UserInterface API > CLI > GUI, sealos 的 API 就是 kubernetes 的 apiserver, 完全與 kubernetes 兼容。
sealos appstore 與其它產(chǎn)品的 store 有什么區(qū)別和優(yōu)勢?
- sealos 中應(yīng)用是一等公民,重視程度不一樣,在使用 sealos 時更關(guān)注的是應(yīng)用本身.
- 所有的應(yīng)用都使用了 "集群鏡像" 的封裝技術(shù),像 docker 一樣管理分布式應(yīng)用,本質(zhì)上 sealos 的 appstore 是個 docker registry.
sealos 云操作系統(tǒng)是不是很重?
sealos cloud,任何應(yīng)用都是可選的,這樣完全按照需求來自由組裝。 所以系統(tǒng)大小完全取決于安裝了多少應(yīng)用,如果只是一個 kubernetes 本身
是非常小的不超過 500M 大小。
拋棄 IaaS PaaS SaaS 架構(gòu)有什么好處?
IaaS 層相當于把以前數(shù)據(jù)中心里面的硬件全部用軟件寫了一遍,如路由器交換機,虛擬機等,以前從需求視角上看需要這些東西,而
kubernetes 誕生之后你會發(fā)現(xiàn)我們的目的是讓分布式應(yīng)用很好的跑起來就行,而不是非得跑在 IaaS 上。
舉個例子,以網(wǎng)絡(luò)來看,需求層面是能通能堵就行,而不是非得跑在模擬的一個獨立子網(wǎng)中,這樣在設(shè)計網(wǎng)絡(luò)時就可以變得很簡單。
而 PaaS 和 SaaS 又有什么本質(zhì)區(qū)別呢?從容器視角來看都是一堆容器而已,所以也不用區(qū)分。
基于這個思考,就可以徹底拋棄三層架構(gòu)而轉(zhuǎn)向云內(nèi)核架構(gòu),讓系統(tǒng)更內(nèi)聚更精簡。
那 IaaS PaaS SaaS 架構(gòu) openstack 體系是個典型代表,導致整個體系非常復雜,而 sealos 是基于云內(nèi)核設(shè)計,一個
入門的工程師一條命令就可以構(gòu)建一個屬于自己的云,這就是精簡架構(gòu)帶來的好處。
只有足夠抽象才能海納百川。就和早期單機操作系統(tǒng)也是分層架構(gòu)后來轉(zhuǎn)化成內(nèi)核架構(gòu)一樣。
sealos 以kubernetes為內(nèi)核的云操作系統(tǒng)發(fā)行版,讓云原生簡單普及
laf 寫代碼像寫博客一樣簡單,什么docker kubernetes統(tǒng)統(tǒng)不關(guān)心,我只關(guān)心寫業(yè)務(wù)!