https://blog.51cto.com/11093860/2337707
©著作权归作者所有:来自51CTO博客作者腿快抖断了的原创作品,如需转载,请注明出处,否则将追究法律责任
一:在探讨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是一组容器,而容器单指一个容器。