主頁 >  其他 > Sealer - 把 Kubernetes 看成作業系統集群維度的 Docker

Sealer - 把 Kubernetes 看成作業系統集群維度的 Docker

2022-03-26 08:24:42 其他

作者 | 中弈

寫在開頭

身為一名技術人員,總是喜歡把自己的作品打造成理想狀態呈現給別人,我非常榮幸能把集群鏡像這樣一個卓越的想法變成現實, 也非常開心用戶使用我們的作品時對我們的高度認可,
Sealos 雖然已經超過 5k 星,數千家客戶在生產環境中使用,不乏很多一線互聯網公司和大廠,曾經 sealos 也令我很激動,我把一件復雜的事情做到的極簡,這是核心競爭力,即便如此我還是不會夸它,因為在 sealer 面前它黯然失色,

Sealer為什么會誕生

1、云的背景與趨勢
在這里插入圖片描述

從應用的視角看,云的發展歷程就是一個不斷屏蔽底層細節讓應用更關注業務邏輯本身的一個程序,

Openstack 讓開發者不用再關心物理機復雜的管理問題,但是并未在應用本身管理在有任何改善,對于應用開發者依然需要和作業系統打交道,

Docker 的出現掀起了一場云架構的革命,穿透了傳統的 IaaS、PaaS,讓分層變模糊,此時已經幫助應用實作一些打包隔離作業,一定程度讓應用變得更容易管理,

Kubernetes 的出現讓云從分層架構走向“云內核”架構,云作業系統逐漸顯現,對下實作計算網路存盤這些資源的抽象,對上實作應用的編排管理,此時應用的配置管理,服務發現,資源配置變得更為簡單,發布分布式應用變得像發布單機應用一樣流暢,

Serverless FaaS 的出現就讓應用更聚焦于業務邏輯本身了,只是目前還沒能出現像 Kubernetes 一樣的實際標準性的東西,還處在百家爭鳴的階段,

有意思的地方的區塊鏈領域的智能合約,以太坊的 EVM 第一代合約天生就是 serverless,運行在以太坊這個世界計算機上,而以 Polkadot solana near ICP 這樣為代表的二代合約支持了 WASM 打破了 EVM 的場景局限,讓合約走向更通用的場景,所以非常期待云和鏈技術最終能在一個地方統一,實作真正意義上的“世界計算機”,所有應用都在這臺“超級電腦上”運行,

2、交付領域的痛點與剛需

我們希望讓 Kubernetes更簡單,順應技術大趨勢讓基于 Kubernetes 的交付變得更干凈利索,
在這里插入圖片描述

目前專有云交付面臨的三大困局,Docker、Kubernetes、Helm 這些技術雖然解決掉了一部分痛點,但是并不徹底:

? Docke r僅解決了單個應用的鏡像化問題,對于軟體整體來說是包含非常多分布式組件的,這塊 docker 不管;
? Kubernetes 很好的解決了分布式應用管理和資源的抽象問題,應用之間復雜的應用如何編排,但是龐雜的編排配置如何管理?
? Helm 只是把編排檔案打包和引數的抽離,但是并不會把所有依賴都管理起來,

所以即便你使用了上述技術,一旦到了真實場景,一樣會焦頭爛額,

對于很多用戶而言安裝 Kubernetes 本身可能比裝業務還復雜,那么多容器鏡像如何管理,到了客戶環境需要的依賴沒人怎么辦,一個一個組件安裝人工誤操作導致出問題概率大大提升,

所以非常需要一個集群整體打包成鏡像的技術,在集群維度保障一致性,

3、優秀的設計理念

只有在偉大的想法誕生時你會為之激動,充滿熱情,想盡一切辦法讓它變成現實,

在設計 sealer 時想盡一切辦法讓它變得簡潔干凈但是還需要滿足各種能力,就像要把很多復雜的技術融入到一個手機里一樣,做減法才是考驗一個人設計能力的地方,

Sealer 的理念也把大道至簡和高度抽象闡述到了極致,確實以優雅的方式解決了很痛點的問題,符合行業大趨勢且能創造巨大的生態價值,

Sealer 的價值

1、幫助企業實作規模化交付
在這里插入圖片描述

對于專有云交付類的公司而言,sealer 最終能幫你實作的就是實作規模化交付,擴大營收,降低成本,提高利潤,采用 sealer 技術的公司可以在規模化競爭中取勝,降低單次產品交付價格,創造核心價格優勢,

以現有的交付類專案現狀來看幾乎都是幾十萬上百萬起步,這幾乎就把客戶群體限制在頭部客戶了,但是對于中小企業需求是真實存在的,由于交付成本高導致出現這種有需求無市場的情況,如果價格能降低到數千或者幾萬,那新的市場就會完全被打開,

對于甲方來說也是一樣,采購一套軟體到落地都是數月的時間,和銷售溝通、poc、交付等等,整個鏈路非常長,因為乙方的交付成本變低,相應甲方的采購成本也會降低,

在 sealer 出現之前想一年線下交付一萬套復雜軟體對于絕大多數企業而言幾乎不可能完成,像小時級別的交付更是異想天開,但是 sealer 可以實作自助化,交付規模不再受技術水平限制,還能實作快速一鍵交付,

2、打破協作壁壘

Docker 出現之前就已經有非常多的容器技術了,為什么都沒有出現席卷之勢和顛覆效應?

很大一部分原因是標準的出現讓生態之間的協作成為可能,Docker 鏡像的出現讓軟體的生產者與交付者之間完美協同,我需要的任何東西都可以在倉庫中找到,而我不再需要去關心里面的實作細節,使用者真的像一個老板一樣只要結果,需要任何軟體都無腦 docker run...

然而很多人嘗試建立標準,絕大多數都失敗了,但 docker 卻成功了,為什么?因為一個標準快速普及在我看來通常需要滿足一些基本原則:

第一:切中痛點
第二:簡單極致
第三:不失強大

滿足以上三點成為公認的標準的可能性會大大提升,

Docker 鏡像標準把行程所有依賴打包,保障其一致性,這是交付中非常痛的地方,

同時滿足 2 和 3 是非常困難的,Dockerfile 簡簡單單幾條指令,你會發現雖然簡單但是幾乎可以打包任何東西,這就非常容易被廣泛接受,如果一個標準動輒大幾百頁檔案,用戶看一眼就嚇跑了更別說遵循了……

Sealer 的設計同樣遵循以上三點,
在這里插入圖片描述

痛點方面,sealer 取 docker 設計思想之精髓,能 docker 所不能,因為現代的軟體幾乎都是分布式應用,docker 并不關心分布式應用如何做成鏡像,sealer 就專門以 K8s 為集群作業系統,把 docker 的思想衍生到集群維度,實作分布式軟體的構建、打包、交付、運行等等,

簡單極致,sealer 把奧卡姆剃刀運用到極致,指令刪減到比 dockerfile 指令還少,也遵循 docker 的指令設計以更容易讓用戶接受,如果三分鐘還沒看懂 sealer 的 Kubefile 那就是 sealer 設計的失敗,

sealer 簡單但并非簡陋,你會發現簡單幾條指令幾乎可以幫助用戶構建任何復雜的自定義 Kubernetes 集群和自定義分布式應用鏡像,然后一鍵運行,

所以 sealer 必將建立成功的集群鏡像交付標準,有了標準之后大家就可以相互更好的協作了,

在 sealer 出現之前,復雜應用設計的開發人員與交付人員之間總會有數不清的恩怨,前線交付人員不理解數十個業務之間的關系是怎樣的,研發人員不知道前線的交付環境有多復雜,一旦出問題,就拉十幾個人的在線會議……最后老板發現三個和尚沒水喝,

有了 sealer 之后,研發人員制作好集群鏡像,交付人員閉著眼睛 sealer run...如果失敗那就是研發人員鏡像沒制作好,鍋甩回去就行,有了標準分工明確,另外對于交付人員的要求也會變的極低,實習生培訓半天上崗,

3、靈活的定制性、自由組合、復用性、一致性與兼容性

我們會制作很多基礎鏡像供你直接“拿來主義”:

各種 Kubernetes 版本,各種架構 ARM、AMD…
包含各種 CNI、CSI 實作的鏡像,calico、flannel、openlocal、openebs…

各種生態軟體鏡像,高可用的mysql、redis、prometheus...
這些鏡像并非是 docker 鏡像,而是集群鏡像,pull 下來就直接可以運行出一個集群!

更變態的能力是我們支持這些鏡像的自由組合,比如你需要 calico+redis+mysql 的組合,那只需要 sealer merge 命令就可以把三個鏡像合并在一起供你的業務使用,集群鏡像就像玩泥巴一樣,把幾坨泥巴捏在一起還是一坨泥巴,高度的抽象能力令人嘆為觀止……

更更變態的能力是即便這些都不能滿足你,你也只需要像寫一個 Dockerfile 一樣簡單的去自定義你自己的集群里面包含什么,比如你想把自己軟體的前后端服務也打到集群鏡像中,而且你可以 FROM 已有的基礎鏡像來復用別人提供的能力,
而且 sealer 低層技術保障了這些鏡像具備非常好的兼容性,可以在任何平臺絲滑的運行起來,

如何把想法變成現實

在這里插入圖片描述

sealer 僅發展半年多時間,就在社區吸引了四十多名開發者,三十多家試用客戶,在兩家生產環境中落地,

起扯訓了半年多的時間去做設計,寫設計檔案,這中間推翻了 N 個版本的設計,不斷精簡優化,每個指令設計都精雕細琢,嚴格遵循如無必要勿增物體,

設計完成之后還幾乎是光桿司令,此時在一個月內迅速集結隊伍,大部分是兄弟組成員,生態公司的開發者,如和諧云溝通時,非常認可我們的想法并決定投入人力,最終一個七人的虛擬組織誕生,密集的開發三個月之后誕生了首個版本并完成開源,

開源之后發展就更迅速了,快速聚集開源社區力量,吸引了很多外部開發者讓專案快速收斂穩定,很快吸引了一批用戶嘗試,可見需求之強烈以及用戶對于 sealer 理念的認可,

1、極簡的用戶使用介面設計

遵循大道至簡的設計理念,我們吸取 docker 的設計思想,讓集群鏡像的制作和運行也變得非常簡單,

構建集群鏡像的 Kubefile,類似 Dockerfile 但是更簡單,比如制作一個包含 calico 的集群鏡像:

FROM kubernetes:v1.19.8-alpine
COPY etc .    
RUN wget https://docs.projectcalico.org/manifests/tigera-operator.yaml    
CMD kubectl apply -f etc/tigera-operator.yaml    
CMD kubectl apply -f etc/custom-resources.yaml

如何啟動集群的 Clusterfile,類似 Docker-compose:

apiVersion: sealer.cloud/v2
kind: Cluster
metadata:
  name: default-kubernetes-cluster
spec:
  image: kubernetes:v1.19.8
  ssh:
    passwd: xxx
  hosts:
  - ips: [192.168.0.2,192.168.0.3,192.168.0.4]
    roles: [master]
  - ips: [192.168.0.3]
    roles: [node]

只需要配置集群鏡像名稱和服務器 IP 地址 ssh 資訊即可拉起一個集群,這里面的每一行都透射出精雕細琢,ip 為什么使用串列,roles 如何靈活的分組等,當然還有一些其他的欄位沒有展示出來,原則上不給不需要關注其它功能的用戶增加負擔,需要用什么樣的能力才去關心什么樣的引數,

2、優秀的插件機制

我們一些總會遇到一些非常奇葩的需求,極不通用,但是又是客戶剛需,你支持的話又會讓你的架構變亂,讓整個產品變得“不優雅”,影響到別的用戶使用體驗,

這個時候就必須通過強大的設計能力把這些功能剝離開,讓不需要用它的人完全感知不到它的存在,

所以 sealer 設計出了強大的插件機制,讓你愛干啥干啥但別影響別人,,
在這里插入圖片描述

比如有些人非要想用 sealer 修改主機名,這其實壓根也不屬于 sealer 關心的范疇,那么就可以開發一個插件去做這個事,用戶配置了這個插件就激活了這個功能:
在這里插入圖片描述

還有用戶說我想開發一個專用插件,但是不想把代碼貢獻給 sealer 社區,因為極不通用的能力,貢獻也沒有意義,這樣的場景我們支持 golang plugin 機制,載入.so 檔案實作插件的動態加載,

3、極致的性能極致追求

雖然我們在集群構建的程序中已經速度非常之快了,幾分鐘六節點幾乎是性能的極限了,然而用戶體驗是否絲滑,這一塊的影響非常之大,所以并沒停止性能方面的追求,

比如 terraform 對接公有云需要 2-3min 起基礎設施,我們覺得這太不可接受,自己重新寫了 driver 把這個時間縮短到了 30s 以下,這已經幾乎是極限了,再要提升就受限于服務端啟動虛擬機速度了,我們做了退避等待與更合理的并發機制達到這種性能,

比如集群鏡像如 docker 一樣會分層拉取鏡像,提高層復用提升性能,檔案拷貝的程序占用非常大的時間,我們做了一些按需拷貝的功能,未來準備對接 nydus 的一些能力實作懶加載和 P2P 分發集群鏡像,進一步提升性能,

比如 Build 集群鏡像程序中需要快取容器鏡像,傳統的做法是 pull 再 push 顯然多做了一些無用功,我們就采用代理直接 cache 下來,pull 的程序直接快取,但是 build 的時候需要起 registry 還是不夠極致,未來我們會直接集成核心代碼,在不啟動 registry 的情況下即可快取,

以上種種,說明我們為了用戶的極致體驗,可謂是煞費苦心……

寫在最后

簡單又強大的產品總是能抓住用戶的心,sealer 不僅需要解決核心的痛點問題,還需要讓用戶獲得極佳的使用體驗,
在這里插入圖片描述

功能上 sealer 已經完成了“集群維度的 Docker”這一設定,未來在生態發展上會增加更多的投入,創造更多更優質的官方鏡像,建立更多的合作伙伴,真正把軟體的提供者與使用者連接起來,高效的協作,

作者介紹
中弈:阿里云技術專家,sealos 作者,sealer 專案發起人,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/449726.html

標籤:其他

上一篇:斗羅大陸真3D手游實力上線,帶你感受魂獸獵殺的超燃時刻

下一篇:華為云FusionInsight MRS實戰 - Hudi實時入湖之DeltaStreamer工具最佳實踐

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more