官网:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes
健康检查在K8s中以探针的形式来实现,包括3个探针,存活(Liveness)、就绪(Readiness)和启动(Startup)探针。
failureThreshold * periodSeconds
时间,存活探测任务就会接管对容器的探测,对容器死锁作出快速响应。 如果启动探测一直没有成功,容器会在 300 秒后被杀死,并且根据 restartPolicy
来执行进一步处置。存活探针livenessProbe实例
[root@k8s-master yaml]# cat liveness.yaml
apiVersion: v1
kind: Pod
metadata:labels:test: livenessname: liveness-exec
spec:containers:- name: livenessimage: busyboxargs:- /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600livenessProbe:exec:command:- cat- /tmp/healthyinitialDelaySeconds: 10periodSeconds: 5
就绪检查与存活检查配置方式一致。唯一区别就是要使用 readinessProbe
字段,而不是 livenessProbe
字段。
支持以下三种检查方法:
探针配置:
failureThreshold * periodSeconds
。[root@k8s-master yaml]# cat healthcheck.yaml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: webname: web
spec: replicas: 1 selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:restartPolicy: Alwayscontainers:- image: java-demo imagePullPolicy: IfNotPresentname: java-demo livenessProbe:tcpSocket:port: 8080 initialDelaySeconds: 30 # kubelet 在执行第一次探测前应该等待 30 秒periodSeconds: 20 # kubelet 应该每 20 秒执行一次存活探测timeoutSeconds: 2 # 探测超时后等待 2 秒钟继续探测failureThreshold: 2 # 当探测失败时,Kubernetes 的重试次数。 对存活探测而言,放弃就意味着重新启动容器。 对就绪探测而言,放弃意味着 Pod 会被打上未就绪的标签。readinessProbe:tcpSocket:port: 8080 initialDelaySeconds: 30periodSeconds: 20