一關系圖讓你理解K8s中的概念,Pod、Service、Job等到底有啥關系

查看原文獲得更好閱讀體驗。

剛開始接觸K8s的同學可能都會覺得有一定的學習難度,撲面而來的各種概念到底是什么。比如,如何提供一個服務給別人,我是應該用Pod還是用Deployment來運行我的應用等,在接下來的文章中,希望能夠解答你的這些疑惑。

Kubernetes可以看做云原生時代的操作系統,統一管理下層的基礎設施,如計算資源、網絡資源、存儲資源等等。將集群中存在的各種復雜關系抽象成各種API資源,以統一的方式暴露出各種接口,也便于未來的擴展以及開發團隊根據自己的需要定制。因此,我們可以看到在K8s中Docker僅僅是容器運行時的一個實現而已,只要遵守它的約定,實際上是可以替換為適合的其他容器技術的。基于這樣的設計思路,理清各種API對象的作用和關系就變得很重要了,只有理解了才能正確地使用K8s,接下來我們就通過一張關系圖一點點的來說明。

通過Pod終結單容器的蠻荒時代

image

在接觸K8s之前,大多人首先要接觸到的就是Docker。我們得到一個容器的鏡像之后,要把應用運行起來最簡單的方式就是docker run的命令。然而在實際的生產環境中,很少僅靠一個單容器就能夠滿足。比如,一個Web前端的應用,可能還得依賴后端的一個容器服務;后端的容器可能需要數據庫服務;后端的服務需要多副本等等場景。在這些假想的場景中,比較真實的需求就是這些容器應用需要共享同一個網絡棧,同一個存儲卷等,還有它們的生命周期如何管理調度。這個時候,僅僅依靠容器無法解決這個問題,我們第一個選手Pod就閃亮登場了。

image

Pod 內共享配置

有了Pod之后,同一個Pod內的容器可以共享很多信息,也可能需要讀取同一份配置。比如Pod內有兩個容器需要訪問同一個數據庫,那么我們可以把相關的配置信息寫到ConfigMap里。那如果還有一些比較敏感的信息的話,就需要放到Secret對象中,它其實是一個保存在 Etcd 里的鍵值對數據。這樣,你把 Credential 信息以 Secret 的方式存在 Etcd 里,Kubernetes 就會在你指定的 Pod(比如,Web 應用的 Pod)啟動時,自動把 Secret 里的數據以 Volume 的方式掛載到容器里。

image

任務和定時任務

有了Pod之后,事情就變得更清晰了。在集群內,我們可能會有多種形式的要求。比如,我們可能希望一個應用每天固定時間運行或者只允許運行一次,可能希望某個應用以守護進程的方式運行。在K8s里,自然也有方案來解決這些問題。
首先來看定時任務的需求,假設我的系統內有一個全網信息排行榜展示,要求每天需要在凌晨0點的時候更新一次。這個需求在K8s里就可以用CronJob來搞定。而如果僅僅需要執行一次的任務,那就直接使用Job對象就可以了。

image

默默工作的DaemonSet

再接下來,可能需要以守護進程的方式運行一個應用。比如,我想要在后臺進行日志的收集。這個時候DaemonSet就派上了用場,它會保證在所有的目標節點上運行一個Pod的副本。在這期間,如果有新的Node加入到K8s集群中的話,它也會自動完成調度,在新的機器上運行一個Pod副本。因此,前面說的監控、日志等任務很適合用DaemonSet的方式執

image

Deployment管理Pod

說完DaemonSet,下一個重點Deployment來了。前面說過容器之間的關聯關系、共享資源等問題需要處理,從而引入了Pod。對于Pod,也是同樣的問題需要解決,只不過高了一個抽象層次罷了。因為面臨Pod的生命周期管理、調度、多副本等問題需要解決,聰明的設計者引入了Deployment。它可以根據我們的需求(比如通過標簽)將Pod調度到目標機器上,調度完成之后,它還會繼續幫我們繼續監控容器是否在正確運行,一旦出現問題,會立刻告訴我們Pod的運行不正常以及尋找可能的解決方案,比如目標節點不可用的時候它可以快速地調度到別的機器上去。另外,如果需要對應用擴容提升響應能力的時候,通過Deployment可以快速地進行擴展。

image

在實際的工作中,Deployment并不是直接控制著Pod的,中間實際上還有一個ReplicaSet,但是在這里為了簡化理解過程,可以先忽略。

提供容器服務

前面的內容主要是圍繞著Pod自身的運行調度管理,下面面臨的問題是解決如何將服務提供給第三方的問題。

  • 對內提供服務
    首先要解決的是將服務提供給同一個集群內的其他服務使用。可能剛入門的同學會問為什么我們不能直接使用Pod的IP呢?原因是這樣,前面也說過Pod是會被管理調度的,可能被調度到不同的機器上,同時生命周期也可能會發生變化。這導致一個應用的IP可能會隨時發生變化,那么直接使用Pod的IP自然是不合理的。
    針對這個問題K8s提供了Service對象來解決。

image

但是,并不是說Service就有一個固定的IP。而且,它和Pod IP還有很不一樣的地方。Pod的網絡是K8s在物理機上建立了一層Overlay Network實現的,而且在網卡上能夠看到這個網絡的地址。但是Service是一個完全虛擬的網絡層,并不會存在于任何網絡設備上。它通過修改集群內部的路由規則,僅對集群內部有效。Deploment創建好應用之后,再為它生成一個Service對象。接下來就可以通過Service的域名訪問到服務,形式是<Service Name>.<NameSpace>,比如你有為Deployment的應用創建了一個名為portal的Service在默認的命名空間,那么集群內想要通過Http訪問這個應用,就可以使用http://portal.default。這個域名僅在集群內有效,因為是內部的一個DNS負責解析。

  • 對外提供服務
    說完如何給內部提供服務以后,剩下的就是如何給外部提供服務了。在K8s里把這個叫做Ingress,正如其名,它是集群的入口。比如我們的集群Web應用想要讓用戶能夠訪問,那必然要在Ingress入口上增加一條解析記錄。這一點,熟悉像Nginx的朋友應該比較容易理解,事實上Nginx Ingress也是K8s生態中的一個成員。

image

關于Ingress的使用,在之前我曾寫過一篇使用Traefik作為Ingress的文章,我們可以通過Traefik實現為需要暴露的服務提供負載均衡、自動簽發Https證書、限流等很多功能,如果有興趣可以點擊查看。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,481評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,241評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,939評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,697評論 6 409
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,182評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,406評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,933評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,772評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,973評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,638評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,866評論 1 285
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,644評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,953評論 2 373

推薦閱讀更多精彩內容