我有一个k8s集群。我们的服务是基于队列的。我们的pod订阅了一个事件队列,获取事件并执行任务。那么对于这种服务,如何定义k8s liveness 探针和就绪度探针?
最佳答案
假设您的问题是因为处理 worker 正在使用队列消息,所以它没有公开任何要检查的端口。
在这种情况下,您可以定义livenessProbe
和readinessProbe
自定义命令,接下来是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
另外,请记住您的过程需要花费的时间,并准备调整initialDelaySeconds
和periodSeconds
以在完全释放之前停止杀死Pod。