当前位置: 首页 > news >正文

Kubernetes(k8s)探针(Probes)

文章目录

  • Kubernetes(k8s)探针(Probes)
    • 准备开始
    • Kubernetes 的探针(Probes)探针类型
      • 1. Liveness Probe(存活探针)
      • 2.readinessProbe(就绪探针)
      • 3. 配置 Probe

Kubernetes(k8s)探针(Probes)

官方文档:https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

准备开始

你必须拥有一个 Kubernetes 的集群,且必须配置 kubectl 命令行工具让其与你的集群通信。

Kubernetes 的探针(Probes)探针类型

Kubernetes 的探针(Probes)是用来检查 Pod 及其容器的健康状态的重要机制,主要有两种类型:Liveness Probe 和 Readiness Probe。

  • Kubelet 使用 liveness probe(存活探针)来确定何时重启容器。
    许多长时间运行的应用最终会进入损坏状态,除非重新启动,否则无法被恢复。 Kubernetes 提供了存活探针来发现并处理这种情况。

  • Kubelet 使用 readiness probe(就绪探针)来确定容器是否已经就绪可以接受流量。
    只有当 Pod 中的容器都处于就绪状态时 kubelet 才会认定该 Pod 处于就绪状态。该信号的作用是控制哪些 Pod 应该作为 service 的后端。如果 Pod 处于非就绪状态,那么它们将会被从 service 的 load balancer 中移除。

就绪和存活探测可以在同一个容器上并行使用。 两者共同使用,可以确保流量不会发给还未就绪的容器,当这些探测失败时容器会被重新启动。

1. Liveness Probe(存活探针)

Liveness Probe 用于检测容器是否处于存活状态。如果探针失败,Kubernetes 将自动重启该容器。这通常是用于检测程序是否卡死或进入不可恢复的状态。

存活探针是一种从应用故障中恢复的强劲方式,但应谨慎使用。 你必须仔细配置存活探针,确保它能真正标示出不可恢复的应用故障,例如死锁。

apiVersion: v1
kind: Pod
metadata:
  labels:
    test: liveness
  name: liveness-exec
spec:
  containers:
  - name: liveness
    image: registry.k8s.io/busybox
    args:
    - /bin/sh
    - -c
    - touch /tmp/healthy; sleep 30; rm -f /tmp/healthy; sleep 600
    livenessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5

在这个配置文件中,可以看到 Pod 中只有一个 Container。 periodSeconds 字段指定了 kubelet 应该每 5 秒执行一次存活探测。 initialDelaySeconds 字段告诉 kubelet 在执行第一次探测前应该等待 5 秒。 kubelet 在容器内执行命令 cat /tmp/healthy 来进行探测。 如果命令执行成功并且返回值为 0,kubelet 就会认为这个容器是健康存活的。 如果这个命令返回非 0 值,kubelet 会杀死这个容器并重新启动它。

2.readinessProbe(就绪探针)

有时候,应用会暂时性地无法为请求提供服务。 例如,应用在启动时可能需要加载大量的数据或配置文件,或是启动后要依赖等待外部服务。 在这种情况下,既不想杀死应用,也不想给它发送请求。 Kubernetes 提供了就绪探针来发现并缓解这些情况。 容器所在 Pod 上报还未就绪的信息,并且不接受通过 Kubernetes Service 的流量。

就绪探针的配置和存活探针的配置相似。 唯一区别就是要使用 readinessProbe 字段,而不是 livenessProbe 字段。

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

3. 配置 Probe

Probe 中有很多精确和详细的配置,通过它们你能准确的控制 liveness 和 readiness 检查:

  • initialDelaySeconds:容器启动后第一次执行探测是需要等待多少秒。
  • periodSeconds:执行探测的频率。默认是 10 秒,最小 1 秒。
  • timeoutSeconds:探测超时时间。默认 1 秒,最小 1 秒。
  • successThreshold:探测失败后,最少连续探测成功多少次才被认定为成功。默认是 1。对于 liveness 必须是 1。最小值是 1。
  • failureThreshold:探测成功后,最少连续探测失败多少次才被认定为失败。默认是 3。最小值是 1。

相关文章:

  • 游戏引擎学习第87天
  • 不到1M的工具,使用起来非常丝滑!
  • 【RK3588嵌入式图形编程】-SDL2-鼠标输入处理
  • 概率论、组合数学知识点汇总
  • AI 数字人革新术:内核揭秘、应用实战、最新进展与未来蓝图
  • 性能测试工具篇
  • 【面试】面试常见的智力题
  • STM32自学记录(九)
  • 【Android】设计一个圆角矩形的WebView
  • P4330 [COCI 2006/2007 #1] Debug / P2177 内存杀手
  • 使用SQL分析季度畅销书:深入理解窗口函数与分组聚合
  • 数据预处理都做什么,用什么工具
  • MySQL安装MySQL服务时提示Install-Remove of the Service Denied
  • vim常用快捷键
  • 利用Python爬虫按图搜索1688商品(拍立淘):实战案例指南
  • Kafka日志数据深度解析:从基础查看到高级操作全攻略
  • ruby 的安装
  • 闭环和闭环管理是什么?
  • Redis的一些内存优化方案
  • 257. 二叉树的所有路径
  • 网站html静态化/一起来看在线观看免费
  • 做网站需要解析吗/百度在线客服
  • 网站的小图标怎么做的/河南网站seo推广
  • 潍坊专业网站建设公司/现在推广一般都用什么软件
  • app开发必须要网站吗/网站seo优化外包顾问
  • 山东省建设执业资格注册管理中心网站/知识营销