一、探针
容器内应用的监测机制,根据不同的探针来判断容器应用当前的状态
一)类型
1、StartupProbe
k8s 1.16 版本新增的探针,用于判断应用程序是否已经启动了。
当配置了 startupProbe 后,会先禁用其他探针,直到 startupProbe 成功后,其他探针才会继续。
作用:由于有时候不能准确预估应用一定是多长时间启动成功,因此配置另外两种方式不方便配置初始化时长来检测,而配置了 statupProbe 后,只有在应用启动成功了,才会执行另外两种探针,可以更加方便的结合使用另外两种探针使用。
startupProbe:
httpGet:
path: /api/startup
port: 80
2、LivenessProbe
用于探测容器中的应用是否运行,如果探测失败,kubelet 会根据配置的重启策略进行重启,若没有配置,默认就认为容器启动成功,不会执行重启策略。
例如:Java 内存溢出后,容器挂掉了,但Pod还在,它会要基于 yaml 中重启策略 restartPolicy 来进行重启。但是它如何知道容器挂掉了呢?这就是基于探针技术。
livenessProbe:
failureThreshold: 5
httpGet:
path: /health
port: 8080
scheme: HTTP
initialDelaySeconds: 60
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
3、ReadinessProbe
用于探测容器内的程序是否健康,它的返回值如果返回 success,那么就认为该容器已经完全启动,并且该容器是可以接收外部流量的。
例如:在启动服务后,还要进行初始化、加载数据到内存或进行一些数据处理,在这些处理完之前,不要让这个容器启动成功,且不能接受外部流量请求,这个就是利用探针技术
readinessProbe:
failureThreshold: 3 # 错误次数
httpGet:
path: /ready
port: 8181
scheme: HTTP
periodSeconds: 10 # 间隔时间
successThreshold: 1
timeoutSeconds: 1
二)探测方式
ExecAction
TCPSocketAction
HTTPGetAction
三)参数配置
生命周期
Pod 退出流程
删除操作
Endpoint 删除 pod 的 ip 地址
Pod 变成 Terminating 状态
执行 preStop 的指令
PreStop 的应用
注册中心下线
数据清理
数据销毁