【大話雲原生】煮餃子與docker、kubernetes之間的關係

雲原生的概念最近非常火爆,企業落地雲原生的願望也越發強烈。看過很多關於雲原生的文章,要麼雲山霧罩,要麼曲高和寡。 所以筆者就有了寫《大話雲原生》系列文章的想法,期望用最通俗、簡單的語言說明白雲原生生態系統內的組成及應用關係。那麼,開始吧,這是第一篇!

這真的是一篇講架構技術的文章,不是小說!建議您看下去!

一、周末煮餃子聊到容器問題

周末和老婆一起包了頓餃子,「老公,我去買瓶醋,你把餃子先煮一下吧」。我笨手笨腳準備半天,還沒煮完,老婆就回來了。我看著這一鍋餃子問道:「老婆,你說這 飯店是怎麼煮餃子的啊? 每個人口味不一樣,飯量也都不一樣啊,想想都頭疼!」

file

小娜同學一邊用手比劃一邊說:「飯店當然不能像家裡這麼煮餃子啊,他們有一種特製的鍋,就是那個、那個樣子的」。
我感覺自己娶了一個傻女人,「到底是哪個樣子的?用手能比划出來啊?你是不是愛情公寓看多了?」。老婆聽到我的抱怨,拿起手機搜索了一下:「諾,就是這個樣子的,你個白痴!」

file

「飯店就是用這種鍋煮餃子的,水是一鍋水,爐是一個爐,分成多個容器,每個容器裡面放入一個客人點的餃子就可以啦。」作為生活小能手的小娜同學知道的可真多。
「哎我去,這不就是一個伺服器啟動了多個docker容器么?」同樣作為程式設計師的小娜贊到:「老公,你說的還真對哈,我最近可是剛看了docker呢,但我還不太會用!」。

二、說說docker與煮餃子的容器

“你一個前端學什麼docker”。小娜不服氣了,”哎,你別瞧不起人,我還知道k8s呢”。這可讓我有點意外,正當我意外之時,老婆一句話差點讓我噴出來:”那k8s到底是個什麼東西啊?”,我們商量好飯後她刷碗,我給她說說docker與k8。

不一會就開始了飯後輔導: 飯店煮餃子本身就是一種服務(應用服務),煮餃子的鍋就像一個伺服器,鍋里的每一個網狀籠就像一個docker容器,通常情況下一個網狀籠只煮一種餃子,就像一個docker容器通常只提供一個服務(微服務)。同一個伺服器上的docker容器之間能夠進行必要的隔離,避免資源衝突(不同餡的餃子煮混)。又能充分的共享伺服器資源(那一鍋水和供電),達到資源的合理利用,避免浪費。

小娜微笑點點頭表示明白了,」那飯店規模變大,客人越來越多,就得買更多的大鍋(伺服器)啊?”

file

那是當然嘍,你看哈,當伺服器越來越多的時候就組成了集群docker容器還有一個好處就是它的標準化,標準化在這裡就代表了部署靈活性。假如一號鍋突然斷電了,煮餃子的師傅就可以把煮餃子的容器拔出來插入二號鍋,因為容器的標準是一樣的。就像docker容器可以靈活快速的啟動,在不同的伺服器上啟動提供服務。

小娜同學再次的點了點頭,向我投來仰慕的眼光。趁熱打鐵,我總結道:」docker容器有效的實現了服務的環境封裝的標準化,以及同伺服器容器之間的環境隔離,資源共享「。

三、聊聊集群煮餃子(k8s)

小娜同學對於接下來的內容已經迫不及待了,”docker我懂了,快說說k8s”。我故弄玄虛的說到,你看哈,現在這個飯店的集群容器煮餃子的模式還需要解決哪些問題?我們倆討論了一下,總結了下面這幾條:

  • 飯店的客流量不總是滿的,大鍋的個數肯定是按照最大需求買的,但是肯定有部分的時間大鍋是閑置的。
  • 客流量肯定是有一定的規律的吧?比如周末比工作日客流量大,下班後比上班時間客流量大。
  • 假如突然來了一個旅遊團進來用餐,誰來做應急管理?快速的給大鍋插電?燒水?滿足用餐需求?
  • 如果為了避免煮出來的餃子味道混淆,是不是素餡類不同容器的放到一個大鍋裡面煮?肉餡的放在一起煮、海鮮餡的放在一起煮會好一些?
  • 是不是得有人定期的對「大鍋」和大鍋裡面的容器進行衛生檢查、運行狀態(健康檢查)?
  • 是不是得有一個人清楚的知道,素餡的一兩餃子是唐僧的,肉餡的四兩餃子是豬八戒的?

其實還有很多需要注意的問題,所有的這些都可以歸納為:任務分配或者是服務編排,或者是容器的編排問題。k8s的主要作用就是用來解決類似這樣的一些問題:

  • 根據訪問量大小快速的對容器數量進行擴容、縮容。
  • 遵循一定的預定計劃來執行容器編排工作、應急管理工作、健康檢查工作
  • 合理的編排容器,有些容器放在CPU密集型的伺服器上,有些容器放在記憶體密集型容器上。畢竟有的容器運行的是計算型微服務,有的容器運行的是耗記憶體的微服務。合理的編排能夠達到資源的最大利用率。

以上等等這些進行容器管理、編排的問題,都需要k8s來管理支撐,而且是自動化支撐。 說到這裡,小娜同學若有所思,「我聽是聽明白了,但是感覺這東西好龐大、好複雜啊。開發一個應用放在一起部署不好么?為什麼搞這麼複雜?」

還別說,小娜同學還真問道點子上了。但這也不能一次全都講完啊,否則明天的碗誰來刷?

歡迎關注我的部落格,更多精品知識合集

本文轉載註明出處(必須帶連接,不能只轉文字):字母哥部落格 – zimug.com

Tags: