k8s - pod 的生命周期

先上图,通过图来看看pod的生命周期

当kubectl调用创建pod的命令之后,pod会经历以下几个阶段,跟着图来走

如图,这个pod里面会有n个容器

1. init container(初次化容器)

每个容器都可以存放一些初次容器(init container),这个初次容器的目的就在运行真正容器之前的一些准备工作,例如拷贝文件,初次化文件,或者获取一些敏感字段如密码,秘钥等。为什么这样做呢?有以下几个点

  • a.假设每个容器里面都带有一些拷贝的命令工具,如zip,或者crul等工具,就会造成每一个容器的大小会增加,因为这些unzip等工具,在容器运行当中是不会使用到的,这样变成工具冗余了,所以希望能在初次化容器中完成所有工作后就把容器关闭。
  • b.因为在真正启动的容器当中,是不可以访问敏感字段空间的,所以初次化容器就能把需要的敏感字段拿到后,赋予给主容器当中,这样就不会出现主容器的安全性问题了。
  • c.这里注意的是,初次容器是同步运行的,按顺序执行,第一初次化容器执行容器失败,是不会进入第二个初次化容器的。
  • d.这里也涉及到初次化容器的启动策略

 

2. start (启动容器)

初次化容器全部执行完成后,将会全部被杀掉,然后主容器将会被启动

 

3. readiness (探针)

启动过程中,会带有探针,目的是检查容器是否启动成功,如果成功,才会把服务端口暴露出去

 

4. liveness (存活)

在整个过程中会检查主容器的存活状态

 

5. stop (停止容器

最后就是停止容器,这里必须是人为的停止或者控制器停止

posted @ 2020-01-20 17:41  长命百岁  阅读(444)  评论(0编辑  收藏  举报