一旦主容器在作业/Cron 作业中终止,就杀死 Sidecar 容器

问题描述 投票:0回答:1

我们在 Jobs/Cron Jobs 中面临有关 sidecar 的问题。我们使用 EFK 堆栈进行日志记录,并使用 filebeat 作为 sidecar 容器来传输日志 应用程序到 ElasticSearch。但是,在批处理作业中实现此操作时,一旦主容器(主作业脚本)终止,边车容器就不会被终止。所以工作永远不会 转至已完成/已终止状态。有关如何处理此问题的任何指示。 - 一旦主容器终止,就杀死边车容器。

jobs sidecar
1个回答
0
投票

来自 https://carlosbecker.com/posts/k8s-sidecar-shutdown/

我仍然需要对此进行测试,但基本上容器之间有一个共享卷。主容器本质上是一个带有陷阱的finally 块,当文件退出时会触及文件。

然后 sidecar 容器会轮询该文件是否存在,并在存在时存在。

containers:
- name: agent
  command: ["/bin/sh", "-c"]
  args:
  - |
    trap 'touch /usr/share/pod/done' EXIT
    buildkite-agent-entrypoint start \
      --disconnect-after-job \
      --disconnect-after-idle-timeout=50    
# ...
  volumeMounts:
  - mountPath: /usr/share/pod
    name: tmp-pod
- name: dind
  command: ["/bin/sh", "-c"]
  args:
  - | 
    dockerd-entrypoint.sh &
    while ! test -f /usr/share/pod/done; do
      echo 'Waiting for the agent pod to finish...'
      sleep 5
    done
    echo "Agent pod finished, exiting"
    exit 0
# ...
  volumeMounts:
  - mountPath: /usr/share/pod
    name: tmp-pod
    readOnly: true
# ...
volumes:
- emptyDir: {}
  name: tmp-pod
# ...

很恶心吧?希望1.28的一流sidecar容器能够为这种情况提供更好的支持

© www.soinside.com 2019 - 2024. All rights reserved.