livenessProbe探针:※
exec※
执行一段命令,判断返回值
kind: Pod
apiVersion: v1
metadata:
name: exec
labels:
apps: myweb
spec:
containers:
- name: exec
image:nginx:1.20.1-alpine
command:
- /bin/bash
- -c
- touch /tmphealthy; sleep 5; rm -f /tmp/healthy; sleep 600
# 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
livenessProbe:
# 使用exec的方式去做健康检查
exec:
# 自定义检查的命令
command:
- cat
- /tmp/ healthy
# 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
failureThreshold: 3
# 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
initialDelaySeconds: 15
# 指定探针检测的频率,默认是10s,最小值为1.
periodSeconds: 1
# 检测服务成功次数的累加值,默认值为1次,最小值1.
successThreshold: 1
# 一次检测周期超时的秒数,默认值是1秒,最小值为1.
timeoutSeconds: 1
- 类型: 使用
exec
方法执行一个命令。- 命令: 执行
cat /tmp/healthy
。- initialDelaySeconds: 在容器启动后 15 秒开始执行首次健康检查。
- periodSeconds: 每 1 秒执行一次健康检查。
- timeoutSeconds: 每次检查的超时时间为 1 秒。
- failureThreshold: 如果连续 3 次健康检查失败,则认为容器不健康,将重启容器。
- successThreshold: 成功的健康检查累计次数为 1 次即视为健康。
httpGet※
判断http返回响应码,判断返回小于400 大于500
kind: Pod
apiVersion: v1
metadata:
name: httpget
labels:
apps:
spec:
volumes:
- name: data
emptyDir: {}
containers:
- name: httpget
image: nginx:1.20.1-alpine
volumeMounts:
- name: data
mountPath: /usr/share/nginx/html
# 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
livenessProbe:
# 使用httpGet的方式去做健康检查
httpGet:
# 指定访问的端口号
port: 80
# 检测指定的访问路径
path: /index.html
# 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
failureThreshold: 3
# 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
initialDelaySeconds: 65
# 指定探针检测的频率,默认是10s,最小值为1.
periodSeconds: 1
# 检测服务成功次数的累加值,默认值为1次,最小值1.
successThreshold: 1
# 一次检测周期超时的秒数,默认值是1秒,最小值为1.
timeoutSeconds: 1
启动与延时:容器启动后,探针将在65秒后开始执行健康检查。这个初始延时是为了给容器足够的时间来启动和达到稳定状态,避免在启动阶段就被错误地认为是不健康的。
检查频率:一旦开始,探针每秒检查一次(
periodSeconds: 1
)。这意味着探针将频繁地检查容器的状态。超时设置:每次探针的执行都有1秒的超时时间(
timeoutSeconds: 1
)。如果命令在1秒内没有完成,这次探针检查会被视为失败。失败阈值:如果探针连续三次检测失败(
failureThreshold: 3
),Kubernetes 会认为容器不健康并进行重启。这意味着容器在约3秒内连续失败后会被重启。成功阈值:成功阈值(
successThreshold
)在这种情况下设为1(默认也通常是1),意味着探针只需要成功一次就足以认为容器是健康的。但在实际应用中,这个设置通常用于就绪探针(readiness probes),用来控制流量何时开始转发到 Pod。对于活跃探针(liveness probes),此值通常留为1,因为活跃探针的目的是确定容器是否需要重启,而不是控制流量。
tcpSocket※
测试端口是否能连接
kind: Pod
apiVersion: v1
metadata:
name: tcpsocket
labels:
apps: myweb
spec:
containers:
- name: tcpsocket
image: nginx:1.20.1-alpine
command:
- /bin/sh
- -c
- nginx ; sleep 10; nginx -s stop ; sleep 600
# 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
livenessProbe:
# 使用tcpSocket的方式去做健康检查
tcpSocket:
port: 80
# 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
failureThreshold: 3
# 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
initialDelaySeconds: 15
# 指定探针检测的频率,默认是10s,最小值为1.
periodSeconds: 1
# 检测服务成功次数的累加值,默认值为1次,最小值1.
successThreshold: 1
# 一次检测周期超时的秒数,默认值是1秒,最小值为1.
timeoutSeconds: 1