k8s pod和容器概念的區分
阿新 • • 發佈:2019-01-02
一:在探討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是一組容器,而容器單指一個容器。