主容器完成后如何优雅地关闭 sidecar 容器

问题描述

我有一个包含 2 个容器的 kubernetes 清单文件。主容器正在收集特定时间段的数据和其他(logstash)容器读取主容器的日志并将其发送到 ELK 堆栈。 主容器完成其工作后,优雅地发出信号或关闭 logstash 容器的最佳方法是什么?

解决方法

目前,无法将容器显式标记为“Sidecar”(尽管有 long-lasting KEP 来实现它)。

这意味着您能做的最好的事情是使用命令定义 Container Lifecycle Hook 以优雅地关闭您的 sidecar 容器。类似的东西:

  containers:
  - name: logstash-container
    image: logstash-image
  - name: your-main-container
    image: your-main-container-image
    lifecycle:
      preStop:
        exec:
          command: ["/bin/sh","-c","gracefully terminate logstash"]done"]