每天5分钟玩转Kubernetes | Liveness探测

书籍来源:cloudman《每天5分钟玩转Kubernetes》

一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!


Liveness探测让用户可以自定义判断容器是否健康的条件。如果探测失败,Kubernetes就会重启容器。

下面举例说明,创建Pod,如下所示。

[root@k8s-master ~]# cat liveness.yml 
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
      periodSeconds: 5
[root@k8s-master ~]# 

启动进程首先创建文件/tmp/healthy,30秒后删除,在我们的设定中,如果/tmp/healthy文件存在,则认为容器处于正常状态,反之则发生故障。

livenessProbe部分定义如何执行Liveness探测:

(1)探测的方法是:通过cat命令检查/tmp/healthy文件是否存在。如果命令执行成功,返回值为零,Kubernetes则认为本次Liveness探测成功;如果命令返回值非零,本次Liveness探测失败。

(2)initialDelaySeconds:10指定容器启动10之后开始执行Liveness探测,我们一般会根据应用启动的准备时间来设置。比如某个应用正常启动要花30秒,那么initialDelaySeconds的值就应该大于 30。

(3)periodSeconds:5指定每5秒执行一次Liveness探测。Kubernetes如果连续执行3次Liveness探测均失败,则会杀掉并重启容器。

下面创建Pod liveness,如图所示。

从配置文件可知,最开始的30秒,/tmp/healthy存在,cat命令返回0,Liveness探测成功,这段时间kubectl describe pod liveness的Events部分会显示正常的日志,如图所示。

每天5分钟玩转Kubernetes | Liveness探测_第1张图片

35秒之后,日志会显示/tmp/healthy已经不存在,Liveness探测失败。再过几十秒,几次探测都失败后,容器会被重启,如图所示。

你可能感兴趣的:(读书笔记,kubernetes,docker,容器)