我在 Google 容器引擎中有一个容器集群,并启用了 Stackdriver 日志代理。它正确地从我的容器中提取标准输出日志。现在我想更改 Fluentd 配置以指定日志解析器,以便 GCP 日志记录 View 中显示的日志具有正确的严重性和组件。
关注此Stackdriver logging guide from kubernetes.io ,我尝试过:
- 掌握流利的语言
ConfigMap
作为 yml 文件 - 添加了新的
<filter>
根据我的log4js日志格式 - 创建了一个新的
ConfigMap
在kube-system
中命名为fluidd-cm-2命名空间 - 编辑了
DaemonSet
对于 fluidd 并设置其ConfigMap
到fluidd-cm-2。我使用kubectl edit ds
做到了这一点而不是kubectl replace -f
因为后者失败并显示错误消息:“对象已被修改”,即使在获取DaemonSet
的新副本之后也是如此。 yaml。
意外结果:DaemonSet
重新启动,但其配置恢复为原始 ConfigMap
,所以我的更改没有生效。
我还尝试编辑 ConfigMap
直接( kubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system
)并保存它,但它也被恢复。
我注意到DaemonSet
和ConfigMap
对于 fluidd 标记为 addonmanager.kubernetes.io/mode: Reconcile
。我的结论是,由于这种“协调”模式,GKE 已经覆盖了我的设置。
所以,我的问题是:当 GKE 在集群配置上安装日志记录代理时,如何更改 Google Container Engine 集群中的 fluidd 配置?
最佳答案
请查看 documentation page you mentioned 上的先决条件部分。那里提到,在 GKE 上,您无法更改默认的 Stackdriver Logging 集成。原因是 GKE 维护此配置:更新代理、监视其运行状况等。不可能为所有可能的配置提供相同级别的支持。
但是,您始终可以禁用默认集成并部署您自己的 DaemonSet 修补版本。您可以在 GKE documentation 中了解如何禁用默认集成。 :
gcloud beta 容器集群更新 [CLUSTER-NAME]\
--logging-service=无
请注意,禁用默认集成后,您必须自行维护新部署:更新代理、设置资源、观察其运行状况。
关于kubernetes - 如何更改 GKE 管理的日志记录代理的 Fluentd 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333758/