我有多容器应用程序,它是应用程序(执行 cronjob)+ logstash。Cronjob 容器执行 java 进程并在完成后将文件写入共享文件系统,即 /usr/share/example/config/pod/done。Logstash 容器(docker logstash 镜像)启动用于弹性搜索的 API 端点,并从主容器中读取日志并发送到 elasticSearch。因为,cronjob 容器在作业完成后完成,但 logstash 容器继续运行,因为它不知道它现在必须停止运行,我正在尝试使用 livelinessProbe exec 块来向 logstash 容器发出退出容器的信号。
name: logstash
image: docker.elastic.co/logstash/logstash:7.10.2
imagePullPolicy: IfNotPresent
livenessProbe:
exec:
command:
- /bin/sh
- -c
- |
if [ -f /usr/share/logstash/config/pod/done ]; then
echo "file exists"
exit 0
else
echo "file doesn't exists"
fi
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
我尝试了上面的代码块,但注意到这些 livelinessProbe 命令没有被执行,并且我的 logstash 容器继续运行,这使我的 pod 处于“未准备好”状态。
如果有人可以帮助我了解如何从 livelinessProbe 执行命令,以便它向我的 logstash 容器发出停止运行的信号,我将不胜感激?