我有一个在Kubernetes中运行的python应用程序.该应用程序具有ping运行状况检查,该检查通过REST调用频繁调用,并检查该调用是否返回HTTP 200.当我通过日志控制台查看时,这会使Kubernetes日志变得混乱.
函数定义如下所示:
def ping():
return jsonify({'status': 'pong'})
Run Code Online (Sandbox Code Playgroud)
如何使特定呼叫无法显示在日志中?有没有办法把它放在健康检查功能之上的代码中,比如python decorator?或者在Kubernetes控制台中有一个选项可以配置为忽略此调用吗?
在 kubernetes 中,您拥有stdout
或stderr
将进入 kubernetes 日志的容器中的所有内容。health-check
从 kubernetes 日志中排除ping call remove日志的唯一方法是,在您的应用程序中,您应该将这些 ping 调用的输出重定向到 say 中的某个文件/var/log/
。这将有效地health-check
从stdout
.
一旦输出不在pod中stdout
或不在stderr
pod 中,pod 日志将不会包含来自该特殊区域的日志health-check
您还可以使用 sidecar 容器来简化您的应用程序日志,就像您不希望应用程序的所有日志都在kubectl logs
输出中一样。你可以写那些文件。
正如 kubernetes 的官方文档中所述:
通过让您的 sidecar 容器流式传输到它们自己的 stdout 和 stderr 流,您可以利用已经在每个节点上运行的 kubelet 和日志代理。Sidecar 容器从文件、套接字或日志中读取日志。每个单独的 sidecar 容器将日志打印到自己的 stdout 或 stderr 流。
这种方法允许您将多个日志流与应用程序的不同部分分开,其中一些可能缺乏对写入 stdout 或 stderr 的支持。重定向日志背后的逻辑是最小的,因此它几乎不是一个显着的开销。
有关 Kubernetes 日志记录的更多信息,请参阅官方文档:
https://kubernetes.io/docs/concepts/cluster-administration/logging/
归档时间: |
|
查看次数: |
594 次 |
最近记录: |