如果存在日志行,则重新启动 kubernetes pod

如果存在日志行,则重新启动 kubernetes pod

如果在日志中看到某条日志行,是否有内置或优雅的方法可以自动重新启动 kubernetes pod?

答案1

不存在任何内置的活性探测器,能够直接检查kubectl logs容器内进程正在写入的输出stdout

但是,如果你的容器的进程将其日志消息写入文件,或者你能够将进程的输出重定向到容器内的文件(例如,使用tee,但请注意正确旋转文件),则可以使用活性探测器。

让我们假设,日志被写入/var/log/my-service.log,并且每当我们观察时time to say good bye,我们都需要重新启动容器。

我们可以通过使用以下 pod 规范来实现这种行为:

spec:
  containers:
  - image: busybox
    name: sf-1102768
    command: ["/bin/sh", "-c", "mkdir -p /var/log && echo hello && sleep 60 && echo time to say good bye > /var/log/my-service.log && sleep 3600 && echo hm... still here"]
    livenessProbe:
      exec:
        command: ["/bin/sh", "-c", "! grep -q 'time to say good bye' /var/log/my-service.log"]
      initialDelaySeconds: 5
      periodSeconds: 5

相关内容