美文网首页
kubernetes笔记-Init容器

kubernetes笔记-Init容器

作者: 潘猛_9f76 | 来源:发表于2019-01-04 16:04 被阅读0次

          init容器是在普通容器之前运行的专用容器,可以包含普通容器映像中不存在的应用程序或安装脚本。        一个pod可以包含多个普通容器和多个init容器。在 Pod 中所有容器的名称必须唯一。

        init容器在普通容器启动前顺序执行。如果init容器失败,则认为pod失败,K8S会根据pod的重启策略来重启这个容器,直到成功。

        init容器需要在pod.spec中的initContainers数组中定义(与3pod.spec.containers数组相似)。init容器的状态在.status.initcontainerStatus字段中作为容器状态的数组返回(与status.containerStatus字段类似)。init容器支持普通容器的所有字段和功能,除了readinessprobe。

        Init 容器只能修改image 字段,修改image 字段等于重启 Pod,Pod 重启所有Init 容器必须重新执行。

        因为Init 容器可能会被重启、重试或者重新执行,所以 Init 容器的代码应该是幂等的。在 Pod 上使用 activeDeadlineSeconds,在容器上使用 livenessProbe,相当于为 Init 容器活跃设置了一个期限,能够避免 Init 容器一直失败。以下为init container的例子:

    1、新建一个包含两个init 容器一个普通容器的pod配置文件initcontainer.yaml

    2、创建Pod后,由于域名无法解析,所以init容器无法执行成功,所以状态处于Init:0/2的状态

    3、通过kubectl describe pod,可以看到第一个init container处于Running状态,ready为False

    4、创建SVC,将myservice指向www.baidu.com,使init-myservice容器执行成功,init-db处于running状态,ready为False

    5、同理,启动svc mydb后,init-db执行成功,myapp-pod进入RUNNING状态

    相关文章

      网友评论

          本文标题:kubernetes笔记-Init容器

          本文链接:https://www.haomeiwen.com/subject/dockrqtx.html