kubernetes 学习日志 - pod生命周期

kubernetes 学习日志 - pod生命周期

kubectl向api server发送指令,api server通过读取etcd内的配置信息调度kubelet,kubelet通过CRI执行容器环境初始化,在初始化的时候会启动一个pause基础容器,接下来执行多个initC的初始化(线性初始化),若InitC正常退出,则进入MainC。

readness:判断容器内的进程是否可被外网访问,可访问,readness检测完成则pod的状态为:running或reading

liveness:在容器运行的整个过程中,liveness检测一直持续,当liveness检测容器内的进程已经是僵尸进程(不能正常提供对外访问)但进程没有停止,系统会自动执行pod的重启或删除。

 

1、InitC容器

kubernetes 学习日志 - pod生命周期

kubernetes 学习日志 - pod生命周期作用 

 作用4:InitC容器可以直接访问具有安全权限的文件,若应用程序容器需要访问这些文件,则可以通过initC读取后再写入到应用容器中。

 作用5:情景:当前一个pod中有两个容器,一个容器运行mysql应用程序,一个容器运行Apache服务,Apache服务需要连接mysql数据库,若连接mysql数据库时MySQL数据库未完全启动,则连接失败,有可能触发pod重启等,要避免这种情况,则需要mysql容器完全启动后再启动Apache服务,故可以在启动Apache容器前,通过apache的InitC容器来监听mysql是否启动成功。

kubernetes 学习日志 - pod生命周期

init书写模板以及作用五使用示例: 

 kubernetes 学习日志 - pod生命周期

   kubernetes 学习日志 - pod生命周期

特殊说明:

kubernetes 学习日志 - pod生命周期

kubernetes 学习日志 - pod生命周期

此外:initC的容器端口可以重复。 

删除pod需要先删除控制器,否则控制器有可能通过期望副本参数自动创建一个新得pod

kubernetes 学习日志 - pod生命周期