Pod的就绪性探测

Pod对象启动后容器可能并非直接处于可用状态。此时不应该将其暴露给用户。这种情况下就需要就绪性探测。其定义方式和属性与存活性探测大体一致,只是就绪性探测在探测失败时不会重启或杀死容器。将存活性探测中的livenessProbe改为readinessProbe即可定义就绪性探测。参考下面的示例:

apiVersion: v1
kind: Pod
metadata:
  name: readiness-exec
spec:
  containers:
  - name: readiness
    image: busybox
    args: ["/bin/sh", "-c", "while true; do rm -f /tmp/ready; sleep 30; touch /tmp/ready; sleep 30; done"]
    readinessProbe:
      exec:
        command: ["test", "-e", ,"/tmp/ready"]
      initialDelaySeconds: 5
      periodSeconds: 5

未定义就绪性探测的Pod对象在Pod进入“Running”状态后将立即就绪,在容器需要时间进行初始化的场景中,在应用真正就绪之前必然无法正常响应客户端请求,因此,生产实践中,必须为关键性Pod资源中的容器定义就绪性探测机制。