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