使用 kubectl log 命令从 Kubernetes 集群中容器中的特定文件获取日志

Get logs from a specific file within container in Kubernetes cluster using kubectl log command

我有一个应用程序将日志存储在文件中的可配置位置。 假设 /abc/pqr/application.log

应用程序正在迁移到 Kubernetes,它将 运行 放在一个 pod 中。如果我 运行 kubectl log <pod-name>,我会得到打印在 stdout 上的任何内容,我可以将其重定向到一个文件。我想反其道而行之,我在上面的位置有一个包含日志的文件,我希望 kubectl logs <pod-name> 从该文件打印日志。

例如,如果 运行 kubectl logs kafka 对于使用 bitnami/kafka 部署的 kafka pod,我从 /opt/bitnami/kafka/logs/server.log 获取日志。我想模仿这种行为。

kubectl logs 命令从 stdoutstderr 获取所有内容,因此您需要在那里提供日志。

容器化应用程序将日志写入 stdoutstderr 是一种常见的做法。

这种方式主要有两种选择:

  1. 调整应用程序,使其将日志也写入 stdout 和文件。 例如。使用 shell 可以用 tee 命令完成。

    请查找带有命令说明的 good answers

  2. 使用一个 sidecar 容器,它将从文件中获取日志并将它们转换成它自己的 stdout。 请找到 Using a sidecar container with the logging agent

关于 kubernetes 日志记录(包括容器)的有用link: