k8s的几种探针

参考官方文档: https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/#container-probes

存活探针-livenessProbe

指示容器是否正在运行。如果存活态探测失败,则 kubelet 会杀死容器, 并且容器将根据其重启策略决定未来。如果容器不提供存活探针, 则默认状态为 Success。


定义探针存活命令

参考: 定义探针存活命令

检查机制


exec存活检查示例

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
    - name: liveness
      image: k8s.gcr.io/busybox
      args:
        - /bin/sh
        - -c
        - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600

      # 配置存活探针
      livenessProbe:
        # 在容器内执行指定命令,如果命令退出时返回码为 0 则认为诊断成功。
        exec:
          command:
            - cat
            - /tmp/healthy
        # 容器初始化延迟秒数(多少秒后开始检查存活)
        initialDelaySeconds: 5
        # 多少秒执行一次存活指令
        periodSeconds: 5

httpGet存活检查示例

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-http
spec:
  containers:
    - name: liveness
      image: k8s.gcr.io/liveness
      args:
        - /server

      # 配置存活探针
      livenessProbe:
        # 执行httpget请求
        httpGet:
          # 请求的路径
          path: /healthz
          # 请求的端口
          port: 8080
          # 添加自定义请求头
          httpHeaders:
            # 添加字段
            - name: Custom-Header
              # 添加字段的值
              value: Awesome
        # 容器初始化延迟秒数
        initialDelaySeconds: 3
        # 多少秒检查一次存活
        periodSeconds: 3

就绪探针-readinessProbe

指示容器是否准备好为请求提供服务。如果就绪态探测失败, 端点控制器将从与 Pod 匹配的所有服务的端点列表中删除该 Pod 的 IP 地址。 初始延迟之前的就绪态的状态值默认为 Failure。 如果容器不提供就绪态探针,则默认状态为 Success。


tcpSocket就绪探针和存活探针示例

tcpSocket的原理有点像telnet ip地址 端口号,检查端口是否开放.

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
    - name: goproxy
      image: k8s.gcr.io/goproxy:0.1
      ports:
        - containerPort: 8080

      # 配置就绪探针
      readinessProbe:
        # 使用tcp端口检查方式配置就绪探针
        tcpSocket:
          # 检查8080端口是否开放
          port: 8080
        # 容器初始化延迟秒数
        initialDelaySeconds: 5
        # 多少秒执行一次就绪检查
        periodSeconds: 10

      # 配置存活探针
      livenessProbe:
        # 使用tcp端口检查方式配置存活探针,类似于telnet
        tcpSocket:
          # 检查8080端口是否开放
          port: 8080
        # 容器初始化延迟秒数
        initialDelaySeconds: 15
        # 多少秒执行一次存活检查
        periodSeconds: 20

启动探针-startupProbe

指示容器中的应用是否已经启动。如果提供了启动探针,则所有其他探针都会被 禁用,直到此探针成功为止。如果启动探测失败,kubelet 将杀死容器,而容器依其 重启策略进行重启。 如果容器没有提供启动探测,则默认状态为 Success。


猜你喜欢

转载自blog.csdn.net/omaidb/article/details/121802883