国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

為什么 kubernetes 天然適合微服務 (1)

EastWoodYang / 753人閱讀

摘要:此文已由作者劉超授權網易云社區發布。所以當我們評估大數據平臺牛不牛的時候,往往以單位時間內跑的任務數目以及能夠處理的數據量來衡量。的問題調度在大數據領域是核心中的核心,在容器平臺中是重要的,但不是全部。

此文已由作者劉超授權網易云社區發布。

歡迎訪問網易云社區,了解更多網易技術產品運營經驗

最近總在思考,為什么在支撐容器平臺和微服務的競爭中,Kubernetes 會取得最終的勝出,事實上從很多角度出發三大容器平臺從功能方面來看,最后簡直是一摸一樣。

參考

Docker, Kubernetes, DCOS 不談信仰談技術

容器平臺選型的十大模式:Docker、DC/OS、K8S誰與當先?

經過一段時間的思索,以及采訪了從早期就開始實踐 Kubernetes 的網易云架構師們后,我把反思所得總結為今天的這篇文章。

一、從企業上云的三大架構看容器平臺的三種視角

一切都從企業上云的三大架構開始看起

如圖所示,企業上云的三大架構為 IT 架構、應用架構和數據架構,在不同的公司,不同的人、不同的角色,關注的重點不同。

對大部分的企業來講,上云的訴求是從 IT 部門發起的,發起人往往是運維部門,他們關注計算、網絡、存儲,試圖通過云計算服務來減輕 CAPEX 和 OPEX。

有的公司有 ToC 的業務,因而累積了大量的用戶數據,公司的運營需要通過這部分數據進行大數據分析和數字化運營,因而在這些企業里面往往還需要關注數據架構。

從事互聯網應用的企業,往往首先關注的是應用架構,是否能夠滿足終端客戶的需求,帶給客戶良好的用戶體驗。業務量上往往會有短期內出現爆炸式增長的現象,因而關注高并發應用架構,并希望這個架構可以快速迭代,從而搶占風口。

在容器出現之前,這三種架構往往通過虛擬機云平臺的方式解決。當容器出現之后,容器的各種良好的特性讓人眼前一亮,它的輕量級、封裝、標準、易遷移、易交付的特性,使得容器技術迅速被廣泛使用。

然而一千個人心中有一千個哈姆雷特,由于原來工作的關系,三類角色分別從自身的角度看到了容器的優勢給自己帶來的便捷。

對于原來在機房里管計算、網絡、存儲的 IT 運維工程師來講,容器更像是一種輕量級的運維模式,在他們看來,容器和虛擬機的最大的區別就是輕量級,啟動速度快,他們往往更愿意推出虛擬機模式的容器。

對于數據架構來講,他們每天都在執行各種各樣的數據計算任務,容器相對于原來的 JVM,是一種隔離性較好,資源利用率高的任務執行模式。

從應用架構的角度出發,容器是微服務的交付形式,容器不僅僅是做部署的,而且是做交付的,CI/CD 中的 D 的。

所以這三種視角的人,在使用容器和選擇容器平臺時方法會不一樣。

二、Kubernetes 才是微服務和 DevOps 的橋梁

Swarm:IT 運維工程師

從 IT 運維工程師的角度來看:容器主要是輕量級、啟動快,并且自動重啟,自動關聯,彈性伸縮的技術,使得 IT 運維工程師似乎不用再加班。

Swarm 的設計顯然更加符合傳統 IT 工程師的管理模式。

他們希望能夠清晰地看到容器在不同機器的分布和狀態,可以根據需要很方便地 SSH 到一個容器里面去查看情況。

容器最好能夠原地重啟,而非隨機調度一個新的容器,這樣原來在容器里面安裝的一切都是有的。

可以很方便地將某個運行的容器打一個鏡像,而非從 Dockerfile 開始,這樣以后啟動就可以復用在這個容器里面手動做的 100 項工作。

容器平臺的集成性要好,用這個平臺本來是為了簡化運維的,如果容器平臺本身就很復雜,像 Kubernetes 這種本身就這么多進程,還需要考慮它的高可用和運維成本,這個不劃算,一點都沒有比原來省事,而且成本還提高了。

最好薄薄的一層,像一個云管理平臺一樣,只不過更加方便做跨云管理,畢竟容器鏡像很容易跨云遷移。

Swarm 的使用方式比較讓 IT 工程師有熟悉的味道,其實 OpenStack 所做的事情它都能做,速度還快。

Swarm 的問題

然而容器作為輕量級虛擬機,暴露出去給客戶使用,無論是外部客戶,還是公司內的開發,而非 IT 人員自己使用的時候,他們以為和虛擬機一樣,但是發現了不一樣的部分,就會有很多的抱怨。

例如自修復功能,重啟之后,原來 SSH 進去手動安裝的軟件不見了,甚至放在硬盤上的文件也不見了,而且應用沒有放在 Entrypoint 里面自動啟動,自修復之后進程沒有跑起來,還需要手動進去啟動進程,客戶會抱怨你這個自修復功能有啥用?

例如有的用戶會 ps 一下,發現有個進程他不認識,于是直接 kill 掉了,結果是 Entrypoint 的進程,整個容器直接就掛了,客戶抱怨你們的容器太不穩定,老是掛。

容器自動調度的時候,IP 是不保持的,所以往往重啟后原來的 IP 就沒了,很多用戶會提需求,這個能不能保持啊,原來配置文件里面都配置的這個 IP ,掛了重啟就變了,這個怎么用啊,還不如用虛擬機,至少沒那么容易掛。

容器的系統盤,也即操作系統的那個盤往往大小是固定的,雖然前期可以配置,后期很難改變,而且沒辦法每個用戶可以選擇系統盤的大小。有的用戶會抱怨,我們原來本來就很多東西直接放在系統盤的,這個都不能調整,叫什么云計算的彈性啊。

如果給客戶說容器掛載數據盤,容器都啟動起來了,有的客戶想像云主機一樣,再掛載一個盤,容器比較難做到,也會被客戶罵。

如果容器的使用者不知道他們在用容器,當虛擬機來用,他們會覺得很難用,這個平臺一點都不好。

Swarm 上手雖然相對比較容易,但是當出現問題的時候,作為運維容器平臺的人,會發現問題比較難解決。

Swarm 內置的功能太多,都耦合在了一起,一旦出現錯誤,不容易 debug。如果當前的功能不能滿足需求,很難定制化。很多功能都是耦合在 Manager 里面的,對 Manager 的操作和重啟影響面太大。

Mesos:數據運維工程師

從大數據平臺運維的角度來講,如何更快地調度大數據處理任務,在有限的時間和空間里面,更快地跑更多的任務,是一個非常重要的要素。

所以當我們評估大數據平臺牛不牛的時候,往往以單位時間內跑的任務數目以及能夠處理的數據量來衡量。

從數據運維的角度來講,Mesos 是一個很好的調度器。既然能夠跑任務,也就能夠跑容器,Spark 和 Mesos 天然的集成,有了容器之后,可以用更加細粒度的任務執行方式。

在沒有細粒度的任務調度之前,任務的執行過程是這樣的。任務的執行需要 Master 的節點來管理整個任務的執行過程,需要 Worker 節點來執行一個個子任務。在整個總任務的一開始,就分配好 Master 和所有的 Work 所占用的資源,將環境配置好,等在那里執行子任務,沒有子任務執行的時候,這個環境的資源都是預留在那里的,顯然不是每個 Work 總是全部跑滿的,存在很多的資源浪費。

在細粒度的模式下,在整個總任務開始的時候,只會為 Master 分配好資源,不給 Worker 分配任何的資源,當需要執行一個子任務的時候,Master 才臨時向 Mesos 申請資源,環境沒有準備好怎么辦?好在有 Docker,啟動一個 Docker,環境就都有了,在里面跑子任務。在沒有任務的時候,所有節點上的資源都是可被其他任務使用的,大大提升了資源利用效率。

這就是 Mesos 最大的優勢,在 Mesos 的論文中,最重要闡述的就是資源利用率的提升,而 Mesos 的雙層調度算法是核心。

號稱了解mesos雙層調度的你,先來回答下面這五個問題!

原來大數據運維工程師出身的,會比較容易選擇 Mesos 作為容器管理平臺。不過原來是跑短任務,加上 marathon 就能跑長任務。但是后來 Spark 將細粒度的模式 deprecated 掉了,因為效率還是比較差。

Mesos 的問題

調度在大數據領域是核心中的核心,在容器平臺中是重要的,但不是全部。所以容器還需要編排,需要各種外圍組件,讓容器跑起來運行長任務,并且相互訪問。Marathon 只是萬里長征的第一步。

所以早期用 Marathon + Mesos 的廠商,多是裸用 Marathon 和 Mesos 的,由于周邊不全,因而要做各種的封裝,各家不同。大家有興趣可以到社區上去看裸用 Marathon 和 Mesos 的廠商,各有各的負載均衡方案,各有各的服務發現方案。

所以后來有了 DCOS,也就是在 Marathon 和 Mesos 之外,加了大量的周邊組件,補充一個容器平臺應有的功能,但是很可惜,很多廠商都自己定制過了,還是裸用 Marathon 和 Mesos 的比較多。

而且 Mesos 雖然調度牛,但是只解決一部分調度,另一部分靠用戶自己寫 framework 以及里面的調度,有時候還需要開發 Executor,這個開發起來還是很復雜的,學習成本也比較高。

雖說后來的 DCOS 功能也比較全了,但是感覺沒有如 Kubernetes 一樣使用統一的語言,而是采取大雜燴的方式。在 DCOS 的整個生態中,Marathon 是 Scala 寫的,Mesos 是 C++ 寫的,Admin Router 是 Nginx+lua,Mesos-DNS 是Go,Marathon-lb 是 Python,Minuteman 是 Erlang,這樣太復雜了吧,林林總總,出現了 Bug 的話,比較難自己修復。

Kubernetes

而 Kubernetes 不同,初看 Kubernetes 的人覺得他是個奇葩所在,容器還沒創建出來,概念先來一大堆,文檔先讀一大把,編排文件也復雜,組件也多,讓很多人望而卻步。我就想創建一個容器,怎么這么多的前置條件。如果你將 Kubernetes 的概念放在界面上,讓客戶去創建容器,一定會被客戶罵。

在開發人員角度,使用 Kubernetes 絕對不是像使用虛擬機一樣,開發除了寫代碼,做構建,做測試,還需要知道自己的應用是跑在容器上的,而不是當甩手掌柜。開發人員需要知道,容器是和原來的部署方式不一樣的存在,你需要區分有狀態和無狀態,容器掛了起來,就會按照鏡像還原了。開發人員需要寫 Dockerfile,需要關心環境的交付,需要了解太多原來不了解的東西。實話實說,一點都不方便。

在運維人員角度,使用 Kubernetes 也絕對不是像運維虛擬機一樣,我交付出來了環境,應用之間互相怎么調用,我才不管,我就管網絡通不通。在運維眼中他做了過多不該關心的事情,例如服務的發現,配置中心,熔斷降級,這都應該是代碼層面關心的事情,應該是 SpringCloud 和 Dubbo 關心的事情,為什么要到容器平臺層來關心這個。

Kubernetes + Docker,卻是 Dev 和 Ops 融合的一個橋梁。

Docker 是微服務的交付工具,微服務之后,服務太多了,單靠運維根本管不過來,而且很容易出錯,這就需要研發開始關心環境交付這件事情。例如配置改了什么,創建了哪些目錄,如何配置權限,只有開發最清楚,這些信息很難通過文檔的方式又及時又準確地同步到運維部門來,就算是同步過來了,運維部門的維護量也非常的大。

所以,有了容器,最大的改變是環境交付的提前,是每個開發多花 5% 的時間,去換取運維 200% 的勞動,并且提高穩定性。

而另一方面,本來運維只管交付資源,給你個虛擬機,虛擬機里面的應用如何相互訪問我不管,你們愛咋地咋地,有了 Kubernetes 以后,運維層要關注服務發現,配置中心,熔斷降級。

兩者融合在了一起。在微服務化的研發的角度來講,Kubernetes 雖然復雜,但是設計的都是有道理的,符合微服務的思想。

網易云輕舟微服務是圍繞應用和微服務打造的一站式 PaaS 平臺,幫助用戶快速實現易接入、易運維的微服務解決方案。

相關閱讀:為什么 kubernetes 天然適合微服務 (1)

為什么 kubernetes 天然適合微服務 (2)

為什么 kubernetes 天然適合微服務 (3)

文章來源: 網易云社區

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/25263.html

相關文章

  • 什么 kubernetes 天然適合服務 (3)

    摘要:此文已由作者劉超授權網易云社區發布。五更加適合微服務和的設計好了,說了本身,接下來說說的理念設計,為什么這么適合微服務。相關閱讀為什么天然適合微服務為什么天然適合微服務為什么天然適合微服務文章來源網易云社區 此文已由作者劉超授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗 四、Kubernetes 本身就是微服務架構 基于上面這十個設計要點,我們再回來看 Kube...

    nicercode 評論0 收藏0
  • 什么 kubernetes 天然適合服務 (2)

    摘要:有了分布式數據庫可以使數據庫的性能可以隨著節點增加線性地增加。分布式數據庫最最下面是,是主備的,通過的內核開發能力,我們能夠實現主備切換數據零丟失,所以數據落在這個里面,是非常放心的,哪怕是掛了一個節點,切換完了以后,你的數據也是不會丟的。 此文已由作者劉超授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗 三、微服務化的十個設計要點 微服務有哪些要點呢?第一張圖是...

    lentrue 評論0 收藏0
  • 什么服務架構,該從哪些方面深入理解?

    摘要:要玩好微服務,微服務平臺需要的不僅僅是無侵入的服務治理能力,容器測試等服務也是必要的,這也是網易云輕舟微服務的產品設計思路。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 簡單地說,微服務架構就是以業務域或業務功能為邊界,將一個大而全的應用拆分為可以獨立開發,獨立部署,獨立測試,獨立運行的一組小的應用,并且使用輕量級,通用的機制在這組應用間進行通信。 showImg(https:...

    sunny5541 評論0 收藏0
  • prometheus比zabbix好在哪點?

    摘要:擁有活躍的社區,在上獲得的數超過了萬,符合網易云的選擇。當然,也有一些不足,比如不能用于日志監控分布式追蹤等范圍,所以網易云也做了很多設計和優化。 分享網易云輕舟微服務選擇基于 Prometheus 開發微服務監控系統的考量: 開源 云原生 與微服務監控需求的匹配度很高 開源 Prometheus是CNCF(云原生計算基金會)旗下成熟的開源項目,而開源技術棧是網易云堅定不移的選擇,不僅...

    skinner 評論0 收藏0
  • 樂心醫療的 Kubernetes云平臺建設實踐

    摘要:宋體自年被開源以來,很快便成為了容器編排領域的標準。宋體年月,樂心醫療的第一個生產用集群正式上線。所以于年推出后,樂心醫療的運維團隊在開會討論之后一致決定盡快遷移到。Kubernetes 自 2014 年被 Google 開源以來,很快便成為了容器編排領域的標準。因其支持自動化部署、大規模可伸縮和容器化管理等天然優勢,已經被廣泛接納。但由于 Kubernetes 本身的復雜性,也讓很多企業的...

    testHs 評論0 收藏0

發表評論

0條評論

EastWoodYang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<