如果在日志中看到某条日志行,是否有内置或优雅的方法可以自动重新启动 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