我有一个k8s集群。我们的服务是基于队列的。我们的pod订阅了一个事件队列,获取事件并执行任务。那么对于这种服务,如何定义k8s liveness 探针和就绪度探针?

最佳答案

假设您的问题是因为处理 worker 正在使用队列消息,所以它没有公开任何要检查的端口。
在这种情况下,您可以定义livenessProbereadinessProbe自定义命令,接下来是documnetation的示例:

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:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 5
      periodSeconds: 5
另外,请记住您的过程需要花费的时间,并准备调整initialDelaySecondsperiodSeconds以在完全释放之前停止杀死Pod。

08-28 03:45