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