livenessProbe探针

-
2024-07-08

livenessProbe探针:

exec

执行一段命令,判断返回值

kind: Pod
apiVersion: v1
metadata:
  name: exec
  labels:
     apps: myweb
spec:
  containers:
  - name: exec
    image:nginx:1.20.1-alpine
    command: 
    - /bin/bash
    - -c
    - touch /tmphealthy; sleep 5; rm -f /tmp/healthy; sleep 600
    # 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
    livenessProbe:
      # 使用exec的方式去做健康检查
      exec:
        # 自定义检查的命令
        command:
        - cat
        - /tmp/ healthy
      # 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
      failureThreshold: 3
      # 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
      initialDelaySeconds: 15
      # 指定探针检测的频率,默认是10s,最小值为1.
      periodSeconds: 1
      # 检测服务成功次数的累加值,默认值为1次,最小值1.
      successThreshold: 1
      # 一次检测周期超时的秒数,默认值是1秒,最小值为1.
      timeoutSeconds: 1
  • 类型: 使用 exec 方法执行一个命令。
  • 命令: 执行 cat /tmp/healthy
  • initialDelaySeconds: 在容器启动后 15 秒开始执行首次健康检查。
  • periodSeconds: 每 1 秒执行一次健康检查。
  • timeoutSeconds: 每次检查的超时时间为 1 秒。
  • failureThreshold: 如果连续 3 次健康检查失败,则认为容器不健康,将重启容器。
  • successThreshold: 成功的健康检查累计次数为 1 次即视为健康。

httpGet

判断http返回响应码,判断返回小于400 大于500

kind: Pod
apiVersion: v1
metadata:
  name: httpget
  labels:
     apps: 
spec:
  volumes:
  - name: data
    emptyDir: {}
  containers:
  - name: httpget
    image: nginx:1.20.1-alpine
    volumeMounts:
    - name: data
      mountPath: /usr/share/nginx/html
    # 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
    livenessProbe:
      # 使用httpGet的方式去做健康检查
      httpGet:
        # 指定访问的端口号
        port: 80
        # 检测指定的访问路径
        path: /index.html
      # 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
      failureThreshold: 3
      # 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
      initialDelaySeconds: 65
      # 指定探针检测的频率,默认是10s,最小值为1.
      periodSeconds: 1
      # 检测服务成功次数的累加值,默认值为1次,最小值1.
      successThreshold: 1
      # 一次检测周期超时的秒数,默认值是1秒,最小值为1.
      timeoutSeconds: 1

启动与延时:容器启动后,探针将在65秒后开始执行健康检查。这个初始延时是为了给容器足够的时间来启动和达到稳定状态,避免在启动阶段就被错误地认为是不健康的。

检查频率:一旦开始,探针每秒检查一次(periodSeconds: 1)。这意味着探针将频繁地检查容器的状态。

超时设置:每次探针的执行都有1秒的超时时间(timeoutSeconds: 1)。如果命令在1秒内没有完成,这次探针检查会被视为失败。

失败阈值:如果探针连续三次检测失败(failureThreshold: 3),Kubernetes 会认为容器不健康并进行重启。这意味着容器在约3秒内连续失败后会被重启。

成功阈值:成功阈值(successThreshold)在这种情况下设为1(默认也通常是1),意味着探针只需要成功一次就足以认为容器是健康的。但在实际应用中,这个设置通常用于就绪探针(readiness probes),用来控制流量何时开始转发到 Pod。对于活跃探针(liveness probes),此值通常留为1,因为活跃探针的目的是确定容器是否需要重启,而不是控制流量。

tcpSocket

测试端口是否能连接

kind: Pod
apiVersion: v1
metadata:
  name: tcpsocket
  labels:
     apps: myweb
spec:
  containers:
  - name: tcpsocket
    image: nginx:1.20.1-alpine
    command:
    - /bin/sh
    - -c
    - nginx ; sleep 10; nginx -s stop ; sleep 600
    # 健康状态检查,周期性检查服务是否存活,检查结果失败,将重启容器。
    livenessProbe:
      # 使用tcpSocket的方式去做健康检查
      	tcpSocket:
        	port: 80
      	# 检测服务失败次数的累加值,默认值是3次,最小值是1。当检测服务成功后,该值会被重置!
      	failureThreshold: 3
      	# 指定多久之后进行健康状态检查,即此时间段内检测服务失败并不会对failureThreshold进行计数。
      	initialDelaySeconds: 15
      	# 指定探针检测的频率,默认是10s,最小值为1.
      	periodSeconds: 1
      	# 检测服务成功次数的累加值,默认值为1次,最小值1.
      	successThreshold: 1
      	# 一次检测周期超时的秒数,默认值是1秒,最小值为1.
      	timeoutSeconds: 1

目录