<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Sealer - 把 Kubernetes 看成操作系統(tǒng)集群維度的 Docker

          共 5714字,需瀏覽 12分鐘

           ·

          2021-12-29 10:00

          01

          寫在開頭

          Aliware

          身為一名技術(shù)人員,總是喜歡把自己的作品打造成理想狀態(tài)呈現(xiàn)給別人,我非常榮幸能把集群鏡像這樣一個卓越的想法變成現(xiàn)實, 也非常開心用戶使用我們的作品時對我們的高度認可。

          Sealos 雖然已經(jīng)超過 5k 星,數(shù)千家客戶在生產(chǎn)環(huán)境中使用,不乏很多一線互聯(lián)網(wǎng)公司和大廠。曾經(jīng) sealos 也令我很激動,我把一件復(fù)雜的事情做到的極簡,這是核心競爭力,即便如此我還是不會夸它,因為在 sealer 面前它黯然失色。

          02

          Sealer為什么會誕生

          Aliware

          01


          云的背景與趨勢



          從應(yīng)用的視角看,云的發(fā)展歷程就是一個不斷屏蔽底層細節(jié)讓應(yīng)用更關(guān)注業(yè)務(wù)邏輯本身的一個過程。

          Openstack 讓開發(fā)者不用再關(guān)心物理機復(fù)雜的管理問題,但是并未在應(yīng)用本身管理在有任何改善,對于應(yīng)用開發(fā)者依然需要和操作系統(tǒng)打交道。

          Docker 的出現(xiàn)掀起了一場云架構(gòu)的革命,穿透了傳統(tǒng)的 IaaS、PaaS,讓分層變模糊,此時已經(jīng)幫助應(yīng)用實現(xiàn)一些打包隔離工作,一定程度讓應(yīng)用變得更容易管理。

          Kubernetes 的出現(xiàn)讓云從分層架構(gòu)走向“云內(nèi)核”架構(gòu),云操作系統(tǒng)逐漸顯現(xiàn),對下實現(xiàn)計算網(wǎng)絡(luò)存儲這些資源的抽象,對上實現(xiàn)應(yīng)用的編排管理。此時應(yīng)用的配置管理,服務(wù)發(fā)現(xiàn),資源配置變得更為簡單,發(fā)布分布式應(yīng)用變得像發(fā)布單機應(yīng)用一樣流暢。

          Serverless FaaS 的出現(xiàn)就讓應(yīng)用更聚焦于業(yè)務(wù)邏輯本身了,只是目前還沒能出現(xiàn)像 Kubernetes 一樣的實際標(biāo)準(zhǔn)性的東西,還處在百家爭鳴的階段。

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

          02


          交付領(lǐng)域的痛點與剛需


          我們希望讓 Kubernetes更簡單,順應(yīng)技術(shù)大趨勢讓基于 Kubernetes 的交付變得更干凈利索。


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

          • Docke r僅解決了單個應(yīng)用的鏡像化問題,對于軟件整體來說是包含非常多分布式組件的,這塊 docker 不管;

          • Kubernetes 很好的解決了分布式應(yīng)用管理和資源的抽象問題,應(yīng)用之間復(fù)雜的應(yīng)用如何編排,但是龐雜的編排配置如何管理?

          • Helm 只是把編排文件打包和參數(shù)的抽離,但是并不會把所有依賴都管理起來。


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

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

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

          03


          優(yōu)秀的設(shè)計理念


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

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

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

          03

          Sealer 的價值

          Aliware

          01


          幫助企業(yè)實現(xiàn)規(guī)?;桓?/span>



          對于專有云交付類的公司而言,sealer 最終能幫你實現(xiàn)的就是實現(xiàn)規(guī)?;桓叮瑪U大營收,降低成本,提高利潤。采用 sealer 技術(shù)的公司可以在規(guī)模化競爭中取勝,降低單次產(chǎn)品交付價格,創(chuàng)造核心價格優(yōu)勢。

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

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

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

          02

          打破協(xié)作壁壘


          Docker 出現(xiàn)之前就已經(jīng)有非常多的容器技術(shù)了,為什么都沒有出現(xiàn)席卷之勢和顛覆效應(yīng)?

          很大一部分原因是標(biāo)準(zhǔn)的出現(xiàn)讓生態(tài)之間的協(xié)作成為可能。Docker 鏡像的出現(xiàn)讓軟件的生產(chǎn)者與交付者之間完美協(xié)同,我需要的任何東西都可以在倉庫中找到,而我不再需要去關(guān)心里面的實現(xiàn)細節(jié),使用者真的像一個老板一樣只要結(jié)果。需要任何軟件都無腦 docker run...

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

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

          滿足以上三點成為公認的標(biāo)準(zhǔn)的可能性會大大提升。

          Docker 鏡像標(biāo)準(zhǔn)把進程所有依賴打包,保障其一致性,這是交付中非常痛的地方。

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

          Sealer 的設(shè)計同樣遵循以上三點。


          痛點方面,sealer 取 docker 設(shè)計思想之精髓,能 docker 所不能,因為現(xiàn)代的軟件幾乎都是分布式應(yīng)用,docker 并不關(guān)心分布式應(yīng)用如何做成鏡像,sealer 就專門以 K8s 為集群操作系統(tǒng),把 docker 的思想衍生到集群維度,實現(xiàn)分布式軟件的構(gòu)建、打包、交付、運行等等。

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

          sealer 簡單但并非簡陋,你會發(fā)現(xiàn)簡單幾條指令幾乎可以幫助用戶構(gòu)建任何復(fù)雜的自定義 Kubernetes 集群和自定義分布式應(yīng)用鏡像,然后一鍵運行。

          所以 sealer 必將建立成功的集群鏡像交付標(biāo)準(zhǔn),有了標(biāo)準(zhǔn)之后大家就可以相互更好的協(xié)作了。

          在 sealer 出現(xiàn)之前,復(fù)雜應(yīng)用設(shè)計的開發(fā)人員與交付人員之間總會有數(shù)不清的恩怨,前線交付人員不理解數(shù)十個業(yè)務(wù)之間的關(guān)系是怎樣的,研發(fā)人員不知道前線的交付環(huán)境有多復(fù)雜,一旦出問題,就拉十幾個人的在線會議……最后老板發(fā)現(xiàn)三個和尚沒水喝。

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

          03


          靈活的定制性、自由組合、復(fù)用性、一致性與兼容性


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

          各種 Kubernetes 版本,各種架構(gòu) ARM、AMD…
          包含各種 CNI、CSI 實現(xiàn)的鏡像,calico、flannel、openlocal、openebs…
          各種生態(tài)軟件鏡像,高可用的mysql、redis、prometheus...

          這些鏡像并非是 docker 鏡像,而是集群鏡像,pull 下來就直接可以運行出一個集群!

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

          更更變態(tài)的能力是即便這些都不能滿足你,你也只需要像寫一個 Dockerfile 一樣簡單的去自定義你自己的集群里面包含什么,比如你想把自己軟件的前后端服務(wù)也打到集群鏡像中。而且你可以 FROM 已有的基礎(chǔ)鏡像來復(fù)用別人提供的能力。

          而且 sealer 低層技術(shù)保障了這些鏡像具備非常好的兼容性,可以在任何平臺絲滑的運行起來。

          04

          如何把想法變成現(xiàn)實

          Aliware



          sealer 僅發(fā)展半年多時間,就在社區(qū)吸引了四十多名開發(fā)者,三十多家試用客戶,在兩家生產(chǎn)環(huán)境中落地。

          起初花了半年多的時間去做設(shè)計,寫設(shè)計文檔,這中間推翻了 N 個版本的設(shè)計,不斷精簡優(yōu)化,每個指令設(shè)計都精雕細琢,嚴格遵循如無必要勿增實體。

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

          開源之后發(fā)展就更迅速了,快速聚集開源社區(qū)力量,吸引了很多外部開發(fā)者讓項目快速收斂穩(wěn)定,很快吸引了一批用戶嘗試,可見需求之強烈以及用戶對于 sealer 理念的認可。

          01


          極簡的用戶使用接口設(shè)計


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

          構(gòu)建集群鏡像的 Kubefile,類似 Dockerfile 但是更簡單,比如制作一個包含 calico 的集群鏡像:
          FROM kubernetes:v1.19.8-alpineCOPY 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/v2kind: Clustermetadata:  name: default-kubernetes-clusterspec:  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]

          只需要配置集群鏡像名稱和服務(wù)器 IP 地址 ssh 信息即可拉起一個集群。這里面的每一行都透射出精雕細琢,ip 為什么使用列表,roles 如何靈活的分組等。當(dāng)然還有一些其他的字段沒有展示出來,原則上不給不需要關(guān)注其它功能的用戶增加負擔(dān),需要用什么樣的能力才去關(guān)心什么樣的參數(shù)。

          02


          優(yōu)秀的插件機制


          我們一些總會遇到一些非常奇葩的需求,極不通用,但是又是客戶剛需,你支持的話又會讓你的架構(gòu)變亂,讓整個產(chǎn)品變得“不優(yōu)雅”,影響到別的用戶使用體驗。這個時候就必須通過強大的設(shè)計能力把這些功能剝離開,讓不需要用它的人完全感知不到它的存在。

          所以 sealer 設(shè)計出了強大的插件機制,讓你愛干啥干啥但別影響別人。。


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


          還有用戶說我想開發(fā)一個專用插件,但是不想把代碼貢獻給 sealer 社區(qū),因為極不通用的能力,貢獻也沒有意義。這樣的場景我們支持 golang plugin 機制,載入.so 文件實現(xiàn)插件的動態(tài)加載。

          03


          極致的性能極致追求


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

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

          比如集群鏡像如 docker 一樣會分層拉取鏡像,提高層復(fù)用提升性能。文件拷貝的過程占用非常大的時間,我們做了一些按需拷貝的功能。未來準(zhǔn)備對接 nydus 的一些能力實現(xiàn)懶加載和 P2P 分發(fā)集群鏡像,進一步提升性能。

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

          以上種種,說明我們?yōu)榱擞脩舻臉O致體驗,可謂是煞費苦心……

          05

          寫在最后

          Aliware

          簡單又強大的產(chǎn)品總是能抓住用戶的心,sealer 不僅需要解決核心的痛點問題,還需要讓用戶獲得極佳的使用體驗。


          功能上 sealer 已經(jīng)完成了“集群維度的 Docker”這一設(shè)定,未來在生態(tài)發(fā)展上會增加更多的投入,創(chuàng)造更多更優(yōu)質(zhì)的官方鏡像,建立更多的合作伙伴,真正把軟件的提供者與使用者連接起來,高效的協(xié)作。

          作者介紹
          中弈:阿里云技術(shù)專家,sealos 作者,sealer 項目發(fā)起人。
          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品国产AV婷婷 | 大香蕉75 | 亚洲男人的天堂视频网在线观看+720P | 欧美性第一页 | 成人AⅤ精品一区二区三区 |