• K8S pod的生命周期


    pod生命周期示意图

    容器生命周期的几种行为:

    初始化容器

    初始化容器即 pod 内主容器启动之前要运行的容器,主要是做一些前置工作,初始化容器具有以下特征:

    1. 初始化容器必须首先执行,若初始化容器运行失败,集群会一直重启初始化容器直至完成,注意,如果 pod 的重启策略为 Never,那初始化容器启动失败后就不会重启。
    2. 初始化容器必须按照定义的顺序执行,初始化容器可以通过 pod 的 spec.initContainers 进行定义。

    声明周期钩子函数

    Kubernetes 为容器提供了两种生命周期钩子:

    • Poststart:于容器创建完成之后立即运行的钩子程序。
    • preStop:容器终止之前立即运行的程序,是以同步方式的进行,因此其完成之前会阻塞 删除容器的调用

    备注:钩子程序的执行方式有“Exec”和“HTTP”两种。 

    容器探测

    容器探测分为存活性探测和就绪性探测容器探测是kubelet对容器健康状态进行诊断,容器探测的方式主要以下三种:

    • ExecAction:在容器中执行命令,根据返回的状态码判断容器健康状态,返回0即表示成功,否则为失败。
    • TCPSocketAction: 通过与容器的某TCP端口尝试建立连接进行诊断,端口能打开即为表示成功,否则失败。
    • HTTPGetAction:向容器指定 URL 发起 HTTP GET 请求,响应码为2xx或者是3xx为成功,否则失败

    Pod终止过程

    终止过程主要分为如下几个步骤:

    1. 用户发出删除 pod 命令
    2. Pod 对象随着时间的推移更新,在宽限期(默认情况下30秒),pod 被视为“dead”状态
    3. 将 pod 标记为“Terminating”状态
    4. 第三步同时运行,监控到 pod 对象为“Terminating”状态的同时启动 pod 关闭过程
    5. 第三步同时进行,endpoints 控制器监控到 pod 对象关闭,将pod与service匹配的 endpoints 列表中删除
    6. 如果 pod 中定义了 preStop 钩子处理程序,则 pod 被标记为“Terminating”状态时以同步的方式启动执行;若宽限期结束后,preStop 仍未执行结束,第二步会重新执行并额外获得一个2秒的小宽限期
    7. Pod 内对象的容器收到 TERM 信号
    8. 宽限期结束之后,若存在任何一个运行的进程,pod 会收到 SIGKILL 信号
    9. Kubelet 请求 API Server 将此 Pod 资源宽限期设置为0从而完成删除操作
  • 相关阅读:
    Flink实战(八十五):FLINK-SQL应用场景(5)Flink 与 hive 结合使用(四)Hive Read & Write
    Flink实战(八十四):FLINK-SQL应用场景(4)Flink 与 hive 结合使用(三)Hive Dialect
    Flink基础(四十二):FLINK-SQL应用场景(3)配置
    Flink基础(四十一):FLINK-SQL应用场景(2)Catalogs
    Flink基础(四十):FLINK-SQL函数(4) 函数(五)自定义函数(三)
    Flink基础(三十九):FLINK-SQL函数(3) 函数(四)自定义函数(二)
    kata agent CreateSandbox & CreateContainer
    kata agent
    kataShared file system
    kata 深入
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/15785870.html
Copyright © 2020-2023  润新知