K8S Health Check健康检查(七)

1.Liveness探测

Liveness方式采用的是当容器运行返回非0,出现报错时,探测失败,K8S就会根据restartPolicy重启策略进行自动重启容器,来恢复容器服务

Lineness.yaml配置
apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness
spec:
  restartPolicy: OnFailure
  containers:
  - name: liveness
    image: busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy;sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 10    #指定容器启动后10s后开始Liveness探测,当应用的启动时间为30s,那么initialDelaySeconds的数值要大于30
      periodSeconds: 5            #指定每5s执行一次Liveness探测

2.Readiness探测

Readiness的方式是,当容器启动后,探测此服务为正常,才将容器加到负载均衡池中,对外提供服务。

readiness.yaml配置,语法和Lineness基本相同

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: readiness
  name: readiness
spec:
  restartPolicy: OnFailure
  containers:
  - name: readiness
    image: busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy;sleep 30;rm -rf /tmp/healthy;sleep 600
    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 10
      periodSeconds: 5

readinessProbe探测方法
1:exec ,通过命令的方式;
2:httpGet,判断成功的方法是http请求返回的代码在200-400之间,不在范围,不接受service请求,每隔periodSeconds时间探测一次,连续3次探测失败,容器会从负载均衡中移除,直到下次探测成功加入。探测方式http://[container_ip]:8080/path返回值

3.两种探测方法的比较

(1)Liveness探测和Readiness探测是两种健康检查机制,不配置的话,对两种探测方式采用相同的默认行为,则通过容器启动进程的返回值判断探测是否成功。
(2)两种探测方法参数基本一致,主要在于探测失败后的处理机制问题,Liveness在健康检查失败后,通过重启容器达到自愈,而Readiness探测出现问题后,将容器设置为不可用,将不再对外提供服务
(3)Liveness探测和Readiness两种方式是独立的,不互相依赖,可以单独使用,也可以配合使用。

你可能感兴趣的:(K8S Health Check健康检查(七))