0

我有多容器应用程序,它是应用程序(执行 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 容器发出停止运行的信号,我将不胜感激?

4

0 回答 0