一:在探討pod和容器的區(qū)別之前,我們先談?wù)劄槭裁磌8s會(huì)使用pod這個(gè)最小單元,而不是使用docker的容器,k8s既然使用了pod,當(dāng)然有它的理由。
1:更利于擴(kuò)展
k8s不僅僅支持Docker容器,也支持rkt甚至用戶自定義容器,為什么會(huì)有這么多不同的容器呢,因?yàn)槿萜鞑⒉皇钦嬲奶摂M機(jī),參考我之前的博客,docker的一些概念和誤區(qū)總結(jié),此外,Kubernetes不依賴于底層某一種具體的規(guī)則去實(shí)現(xiàn)容器技術(shù),而是通過CRI這個(gè)抽象層操作容器,這樣就會(huì)需要pod這樣一個(gè)東西,pod內(nèi)部再管理多個(gè)業(yè)務(wù)上緊密相關(guān)的用戶業(yè)務(wù)容器,就會(huì)更有利用業(yè)務(wù)擴(kuò)展pod而不是擴(kuò)展容器。
2:更容易定義一組容器的狀態(tài)
如果我們沒有使用pod,而是直接使用一組容器去跑一個(gè)業(yè)務(wù)呢,那么當(dāng)其中一個(gè)或者若干個(gè)容器出現(xiàn)問題呢,我們?nèi)绾稳ザx這一組容器的狀態(tài)呢,通過pod這個(gè)概念,這個(gè)問題就可以很好的解決,一組業(yè)務(wù)容器跑在一個(gè)k8s的pod中,這個(gè)pod中會(huì)有一個(gè)pause容器,這個(gè)容器與其他的業(yè)務(wù)容器都沒有關(guān)系,以這個(gè)pause容器的狀態(tài)來代表這個(gè)pod的狀態(tài),
3:利于容器間文件共享,以及通信。
pause容器有一個(gè)ip地址,和一個(gè)存儲(chǔ)卷,pod中的其他容器共享pause容器的ip地址和存儲(chǔ),這樣就做到了文件共享和互信。
二:pod和容器的區(qū)別
總結(jié),pod是k8s的最小單元,容器包含在pod中,一個(gè)pod中有一個(gè)pause容器和若干個(gè)業(yè)務(wù)容器,而容器就是單獨(dú)的一個(gè)容器,簡而言之,pod是一組容器,而容器單指一個(gè)容器。