k8s三大探针
startupProbe
、livenessProbe
和 readinessProbe
是容器的健康检查机制
-
livenessProbe
用于检查容器是否仍然在运行。- 如果
livenessProbe
失败,Kubernetes 将认为容器处于不健康状态,并采取根据配置的策略进行相应的操作,例如重新启动容器。
- 如果
-
readinessProbe
用于确定容器是否已经准备好接受流量。- 如果
readinessProbe
失败,Kubernetes 将认为容器不准备好接受流量,并将不会将流量路由到该容器。
- 如果
-
startupProbe
用于检查容器是否已经启动成功。- 在容器首次启动后一段时间内周期性地执行健康检查。
- 与
livenessProbe
不同,startupProbe
的目的是确保容器在启动后的一段时间内变为健康状态,而不是持续监视容器的运行状态。 - 如果
startupProbe
失败,Kubernetes 将尝试重启容器。
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: my-app-container
image: my-app-image
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 30 # 容器启动后等待30秒再开始livenessProbe
periodSeconds: 10 # 每隔10秒进行一次livenessProbe
failureThreshold: 3 # 定义连续多少次探测失败后才将容器标记为失败,不填默认是3
startupProbe:
httpGet:
path: /startup
port: 80
initialDelaySeconds: 5 # 容器启动后等待5秒再开始startupProbe
periodSeconds: 5 # 每隔5秒进行一次startupProbe
failureThreshold: 3 # 定义连续多少次探测失败后才将容器标记为失败,不填默认是3
readinessProbe:
httpGet:
path: /ready
port: 80
initialDelaySeconds: 10 # 容器启动后等待10秒再开始readinessProbe
periodSeconds: 5 # 每隔5秒进行一次readinessProbe
failureThreshold: 3 # 定义连续多少次探测失败后才将容器标记为失败,不填默认是3