• k8s之三大探针


    一、探针类型

    livenessProbe存活性探针,从容器启动开始,由kubelet定期执行检测,用于判断容器是不是健康,如果不满足健康条件,那么 Kubelet 会杀死容器(杀死的是container不是pod),并根据restartPolicy重启策略(Always,OnFailure,Never)来判断容器是否要进行重启操作;
    readinessProbe 就绪性探针,用于判断容器内的程序是否存活,如果不满足健康条件,那么会自动从Service的 EndPoint 列表中去除该pod的 IP:Port;
    startupProbe启动探针,k8s1.16新增,主要解决在慢启动程序或复杂程序中readinessProbe、livenessProbe探针无法较好的判断程序是否启动、是否存活,进而引入startupProbe探针为readinessProbe、livenessProbe探针服务。

    如果三个探针同时存在,则先执行startupProbe探针,其他两个探针将会被暂时禁用,直到startupProbe一次探测成功,其他2个探针才启动,如果startupProbe探测失败,kubelet 将杀死容器,并根据restartPolicy重启策略来判断容器是否要进行重启操作。

    二、探测方式


    ExecAction:在容器中执行指定的命令,如果执行成功,退出码为 0 则探测成功。
    HTTPGetAction:通过容器的IP地址、端口号及路径调用 HTTP Get方法,如果响应的状态码大于等于200且小于400,则认为容器 健康。
    TCPSocketAction:通过容器的 IP 地址和端口号执行 TCP 检 查,如果能够建立 TCP 连接,则表明容器健康。
     
    探针探测结果有以下值:
    Success:表示通过检测。
    Failure:表示未通过检测。
    Unknown:表示检测没有正常进行。

    三、探针字段


    探针(Probe)有许多可选字段,可以用来更加精确的控制Liveness和Readiness两种探针的行为(Probe):
    initialDelaySeconds:容器启动后要等待多少秒后就探针开始工作,单位“秒”,默认是 0s,最小值是 0s;
    periodSeconds:执行探测的时间间隔(单位是秒),默认为 10s,最小值是 1s,
    timeoutSeconds:探针执行检测请求后,等待响应的超时时间,默认为 1s,最小值是 1s,
    successThreshold:探针检测失败后认为成功的最小连接成功次数,默认为 1,在 Liveness和startup探针中必须为 1,最小值为 1。
    failureThreshold:探测失败的重试次数,重试一定次数后将认为失败,默认为 3,最小值为 1


    四、例子

    1. ports:
    2. - name: liveness-port
    3. containerPort: 8080
    4. hostPort: 8080
    5. livenessProbe:
    6. httpGet:
    7. path: /healthz
    8. port: liveness-port
    9. failureThreshold: 1
    10. periodSeconds: 10
    11. startupProbe:
    12. httpGet:
    13. path: /healthz
    14. port: liveness-port
    15. failureThreshold: 30
    16. periodSeconds: 10

  • 相关阅读:
    现在学RPA,还有前途吗,会不会太卷?
    从裸机到嵌入式Linux—总纲
    【线性代数基础进阶】向量-part2
    C++哈希(位图,布隆过滤器,哈希切分)
    MyBatis 事务源码分析
    cloudenative2-1-go进阶
    Elasticsearch REST API 初探:索引与搜索文档的奥秘
    java计算机毕业设计学生综合考评管理系统源程序+mysql+系统+lw文档+远程调试
    拓世大模型 | 立足行业所需,发力终端,缔造智能无限可能
    vite-element-plus
  • 原文地址:https://blog.csdn.net/qq_34562093/article/details/126962022