探针是由每个Node上的kubelet定期执行的诊断
(这里复习下,每个Node上有一个kubelet和kube-proxy,kubelet用于管理pod等等组件
k8s - Container probe 容器探针
k8s - Container probe 容器探针

通过kubelet调用container实现的handler来执行诊断,有三种类型的handler:

  • cmd.如果命令以0执行完毕视为成功
  • tcp.端口打开视为成功
  • httpget.响应>=200并且小于400视为成功

每个探针有3个可能的结果:

  • success
  • failure
  • unknown:诊断失败,不做行动

可以选择性的执行三种类型的探针:

  • livenessProbe:反应容器是否在运行。如果探针失败,kubelet杀死容器,容器受restart policy影响。
    (复习下restart policy。restartpolicy在podspec中,有always/onfailure/never,默认值是always。三种控制器job/replicationController/daemonset有对应的podTemplate,replicationController是唯一符合always的。建议创建控制器,让控制强创建pod,而不是自行创建pod)

  • readinessProbe:反应容器是否准备好接受请求。如果探针失败,endpoints控制器从所有匹配该pod的service的endpoints中移除该pod ip。在初始delay前探针默认状态是failure。

  • startupprobe:反应容器中应用是否开启。直到该探针成功,其他探针才会生效。如果探针失败,kubelet杀死该容器。

When should you use a liveness probe?

如果你的容器遇到问题或者变得不健康能自己crash,那么不需要liveness探针;kubelet会自动根据restartPolicy执行正确的行动。

When should you use a readiness probe?

如果你想仅在探针成功时才开始发送流量到pod,指定readiness探针。readiness探针代表探针成功后pod才会开始接收流量。如果你的容器需要加载大量数据/配置文件/启动期间合并,指定readiness探针。

相关文章:

  • 2021-09-02
  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2021-12-20
  • 2022-01-07
  • 2021-11-24
  • 2021-06-17
猜你喜欢
  • 2021-09-02
  • 2022-12-23
  • 2021-09-02
  • 2021-09-02
  • 2021-10-29
相关资源
相似解决方案