kubernetes - 如何在 Kubernetes 中使日志消息静音?

标签 kubernetes

我有一个在 Kubernetes 中运行的 python 应用程序。该应用程序有一个 ping 运行状况检查,它会通过 REST 调用频繁调用,并检查该调用是否返回 HTTP 200。当我通过日志控制台查看 Kubernetes 日志时,这会使 Kubernetes 日志变得困惑。

函数定义如下所示:

def ping():
    return jsonify({'status': 'pong'})

如何使日志中显示的特定调用静音?有没有办法可以将它放在代码中,例如运行状况检查功能之上的 python 装饰器?或者 Kubernetes 控制台中是否有选项可以配置为忽略此调用?

最佳答案

在 kubernetes 中,您在 stdout 上拥有的容器中的所有内容或 stderr将进入 kubernetes 日志。排除health-check日志的唯一方法从 kubernetes 日志中删除 ping 调用是,在您的应用程序中,您应该将这些 ping 调用的输出重定向到某个文件,例如 /var/log/ .这将有效地删除 health-check 的输出来自 stdout 的 ping .

一旦输出不在 stdoutstderr在 pod 中,pod 日志不会包含来自那个特殊的日志 health-check
您还可以使用 sidecar 容器来简化您的应用程序日志,例如如果您不希望所有应用程序日志都在 kubectl logs 中输出。你可以写那些文件。

正如 kubernetes 的官方文档中所述:

By having your sidecar containers stream to their own stdout and stderr streams, you can take advantage of the kubelet and the logging agent that already run on each node. The sidecar containers read logs from a file, a socket, or the journald. Each individual sidecar container prints log to its own stdout or stderr stream.



这种方法允许您将多个日志流与应用程序的不同部分分开,其中一些可能缺乏对写入 stdout 或 stderr 的支持。重定向日志背后的逻辑很小,所以它几乎不是一个显着的开销。

有关 Kubernetes 日志记录的更多信息,请参阅官方文档:

https://kubernetes.io/docs/concepts/cluster-administration/logging/

关于kubernetes - 如何在 Kubernetes 中使日志消息静音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54024663/

相关文章:

kubernetes - 如何检查 Kubernetes 对象是否已完全删除?

kubernetes - 入口将域 www 重写为非 www url

kubernetes - GKE群集不受StackDriver监视

kubernetes - 入口端点在 GKE 上显示响应为 200 的空白页面

库伯内特斯 1.4.3 : Why DaemonSet is scheduled on master

Kubernetes configMap 还是持久卷?

kubernetes - 如何从另一个用户管理 kubectl

kubernetes - 节点关闭后, Pane 显示为 “Terminating”

kubernetes - Apache的Mesos和Google的Kubernetes有什么区别

docker - kubernetes yaml 文件中的容器端口是什么