k8s_探针专题

关于探针

生产环境中一定要给pod设置探针,不然pod内的应用发生异常时,K8s将不会重启pod。

需要遵循以下几个原则(本人自己总结,仅供参考):

  1. 探针尽量简单,不要消耗过多资源。因为探针较为频繁的定期执行,过于复杂和消耗资源的探针对k8s和生产环境是不利的。
  2. 探针返回的结果尽量代表pod的健康状态,而不是简单的返回。可以适当做一些pod健康性检查。特别要避免探针返回了健康状态,但实际pod处于异常状态。
  3. 探针返回的状态需要代表的是本pod的健康状态,不要受外部组件影响。比如pod连接了一个数据服务,如果数据服务异常,此时探针不要返回异常。不然k8s认为pod处于异常,不停重启pod,但这种操作对于修复异常没有任何帮助,反而不停拖累k8s。
    在 Kubernetes 中,探针(Probe)用于检查 Pod 内容器的健康状况和可用性。

常用的探针有三种:

  1. 存活探针(Liveness Probe):用于检查容器是否存活。如果探测失败,Kubernetes 将杀死容器并根据策略重启。
  2. 就绪探针(Readiness Probe):用于检查容器是否准备好接受流量。如果探测失败,Pod 将从服务的端点列表中移除。
  3. 启动探针(Startup Probe):用于检查容器是否已成功启动。如果探测失败,Kubernetes 将根据策略重启容器。启动探针的优先级高于存活探针,在启动探针成功之前,存活探针不会生效。

每种探针都有多个可配置的参数,可以帮助我们在生产环境中更细致地监控和管理 Pod。以下是一个详细的 Pod 配置示例,其中包含了所有三种探针及其常用参数:

yaml 复制代码
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: example-image:latest
    ports:
    - containerPort: 8080

    # 存活探针(Liveness Probe)配置
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
        httpHeaders:
        - name: Custom-Header
          value: Awesome
      initialDelaySeconds: 30
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 3

    # 就绪探针(Readiness Probe)配置
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 3

    # 启动探针(Startup Probe)配置
    startupProbe:
      httpGet:
        path: /startup
        port: 8080
      initialDelaySeconds: 0
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 30

    # 其他探针类型(如TCP和命令执行)示例
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 30
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 3

    readinessProbe:
      exec:
        command: ["sh", "-c", "echo 'hello'"]
      initialDelaySeconds: 5
      periodSeconds: 10
      timeoutSeconds: 5
      successThreshold: 1
      failureThreshold: 3

探针参数说明

  • initialDelaySeconds: 探针首次启动前的延迟时间。
  • periodSeconds: 探针的执行周期。
  • timeoutSeconds: 探针执行的超时时间。
  • successThreshold: 成功阈值。连续成功的次数达到该值时,认为探针检查通过。
  • failureThreshold: 失败阈值。连续失败的次数达到该值时,认为探针检查失败。

通过合理配置探针及其参数,可以有效地监控和管理 Pod 的状态,确保应用在生产环境中的高可用性和可靠性。

相关推荐
Patrick在香港2 小时前
Python Docker镜像从1.2GB到89MB:多阶段构建的完整优化实录
java·python·docker·信息可视化·容器·数据分析·ai编程
上海安当技术3 小时前
敏感数据怎么防拖库?信封加密(DEK+KEK 二层密钥)架构设计与 Java 实战
java·开发语言·python
我是唐青枫3 小时前
Java JCommander 实战详解:用注解解析命令行参数
java·开发语言
大鹏说大话3 小时前
C++ 内存布局详解:类、虚函数、虚表底层原理
java·开发语言
还是鼠鼠3 小时前
Spring AI连接DeepSeek与通义千问:application.yaml配置详解
java·通义千问·spring ai·deepseek
计算机小白一个4 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯
sunburn-5 小时前
Java 队列全面详解:从入门到面试实战
java·开发语言·汇编·ide·idea
vx-程序开发6 小时前
springboot农产品运输服务平台---附源码75498
java·javascript·spring boot·python·eclipse·django·php
zzh___zzh7 小时前
SQL 窗口函数 ROW_NUMBER、RANK、DENSE_RANK 常用方法笔记
java
计科土狗7 小时前
GESP六级专题之类与对象
java·前端·数据库