简介

k8s可以通过存活探针liveness probe检查容器是否还在运行。可以为pod中的容器单独指定存活探针,如果探测失败,k8s将定期执行探针并重启容器

k8s有三种探测容器的机制:

HTTP Get探针对容器的IP地址执行http get请求,如果探测器收到响应,并且相应状态码不代表错误,认为探测成功,如果不响应或者响应失败,则探测失败,容器将被重新启动。

TCP套接字探针尝试与容器指定端口建立tcp连接,如果连接成功,则认为成功,否则认为失败,重启容器。

Exec探针在容器内部执行任意命令,并检查命令的退出状态码,如果状态码是0

,认为探测成功,所有其他的状态码都被认定为失败

在生产环境中的pod,有必要定义存活探针,没有探针,k8s无法知道你的应用是否活着,只要进程还在运行,k8s认为容器是健康的。

使用

[root@master01 tz]# kubectl  apply  -f  liveness.pod.yml

[root@master01 tz]# cat liveness.pod.yml

apiVersion: v1

kind: Pod

metadata:

  name: liveness

spec:

  containers:

  - image: luksa/kubia-unhealthy

    imagePullPolicy: IfNotPresent

    name: tzln

    livenessProbe:

      httpGet:

        path: /

        port: 8080

      initialDelaySeconds: 30

初始化pod查看重启次数为0

等一会儿看发现已经重启两次

查看存活探针的信息

存活探针的属性:延迟(delay)、超时(timeout)、周期(period)

delay=30表示容器启动后30s检测

timeout表示容器的响应时间,如果timeout=1表示容器必须在一秒内响应,不然视为探测失败

period表示每隔多久探测一次容器

failure表示连续失败多少次重启容器

查看失败原因

提示http探针失败,状态码500,名为tzln的容器将被重启

存活探针不会消耗太多的计算资源

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐