主要还是理解容器和POD之间的关系,之前有这样的误解:POD等于容器,其实不然。POD类似于虚拟机,而容器相当于虚拟机中的进程。所以,POD其实可以包含多个容器,多个容器共享POD的隔离环境。我们进入容器内部,观察到的POD环境都是相同的。

POD表示的是一组资源,在一个POD上可以包含多个容器。理解POD可以从命令上理解:配置文件是一个YML类型的格式,里面可以声明多个相关的容器。YML文件作为一个API对象,声明中的Container就表示容器。

结合API对象YML的定义,可以反映出POD和容器的区分,和整体隔离环境相关的都声明在POD的定义中,而和具体容器相关的声明在Container中。

在同一个POD内,多个容器之间共用同一套网络环境,POD是如何实现的呢?其实POD在实例化的时候,首先会实例一个Infr的容器,而YML文件中声明的其它容器,都会加入到Infr容器的网络中。

这么想来,容器内部也有等级划分,类似于微服务拆分,有些属于核心基础服务,有些属于业务服务。容器也有很多分类,比如InitContainer容器,会在其它容器创建之前创建。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐