Kubernetes——Pod就绪性探测

Pod就绪性探测

  Pod 对象启动后,容器应用通常需要一段时间才能完成其初始化过程,例如加载配置或数据,甚至有些程序需要运行某类的预热过程,若在此阶段完成之前即接入客户端的请求,势必会因为等待太久而影响用户体验。因此,应该避免于 Pod 对象启动后立即让其处理客户端请求,而是等待初始化工作完成并转为 "就绪" 状态,尤其是存在其他提供相同服务的 Pod 对象的场景更是如此。

  与存活性探测机制类似,就绪性探测是用来判断容器就绪与否的周期性(默认周期为10秒钟)操作,它用于探测容器是否已经初始化完成并可服务于客户端请求,探测操作返回 "success" 状态时,即为传递容器已经 "就绪" 的信号。

  与存活性探测机制相同,就绪性探测也支持 exec、http get 和 tcp socket 三种探测方式,且各自的定义机制也都相同。但与存活性探测触发的操作不同的是,探测失败时,就绪性探测不会杀死或重启容器以保证其健康性,而是通知其尚未就绪,并触发依赖于其就绪状态的操作(例如,从 Service 对象移除此 Pod 对象)以确保不会有客户端请求接入此 Pod 对象。即便在运行过程中,Pod 就绪性探测依然有其价值所在,例如 Pod A 依赖到的 Pod B 因网络故障等原因而不可用时,Pod A 上的服务应该转为未就绪状态,以免无法向客户端提供完整的响应。

  一个简单的示例如下面的配置清单(readiness-exec.yaml)所示,它会在 Pod 对象创建完成 5 秒钟后使用 test -e /tmp/ready 命令来探测容器的就绪性,命令执行成功即为就绪,探测周期为 5 秒钟:

1
2
3
4
5
6
7
8
9
10
spec:
  containers:
  - name: readiness-exec
    image: busybox
    args:["/bin/sh", "-c", "while true;do rm -f /tmp/ready; sleep 30; touch /tmp/ready; sleep 300;done"]
    livenessProbe:
      exec:
        command:["test","-e","/tmp/ready"]
      initialDelaySeconds: 5
      periodSeconds: 5

或者:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
livenessProbe:
  httpGet:
    path: /actuator/health
    port: 8293
    scheme: HTTP
  initialDelaySeconds: 60
  timeoutSeconds: 1
  periodSeconds: 5
  successThreshold: 1
  failureThreshold: 30
startupProbe:
  httpGet:
    path: /actuator/health
    port: 8293
    scheme: HTTP
  initialDelaySeconds: 60
  timeoutSeconds: 1
  periodSeconds: 5
  successThreshold: 1
  failureThreshold: 30
posted @   左扬  阅读(131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
levels of contents
点击右上角即可分享
微信分享提示