如何更改GKE管理的日志代理的流畅配置?

时间:2017-09-21 00:50:40

标签: kubernetes google-cloud-platform google-kubernetes-engine fluentd stackdriver

我在Google容器引擎中有一个容器群集,启用了Stackdriver日志代理。它正确地从我的容器中提取stdout日志。现在我想更改fluentd配置以指定日志解析器,以便GCP Logging视图中显示的日志具有正确的严重性和组件。

Stackdriver logging guide from kubernetes.io之后,我试图:

  1. 将流利的ConfigMap作为yml文件
  2. 根据我的log4js日志格式添加了新的<filter>
  3. ConfigMap命名空间
  4. 中创建了一个名为 fluentd-cm-2 的新kube-system
  5. 为流利的人编辑DaemonSet并将其ConfigMap设置为流利的-cm-2 。我使用kubectl edit ds代替kubectl replace -f执行了此操作,因为后者失败并显示错误消息:“对象已被修改”,即使获得了DaemonSet yaml的新副本。
  6. 意外结果:DaemonSet已重新启动,但其配置已恢复为原始ConfigMap,因此我的更改未生效。

    我还尝试直接编辑ConfigMapkubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system)并保存,但也已恢复。

    我注意到流利的DaemonSetConfigMap标有addonmanager.kubernetes.io/mode: Reconcile。我会得出结论,由于这种“协调”模式,GKE已经覆盖了我的设置。

    所以,我的问题是:当GKE在集群配置上安装日志代理时,如何更改Google Container Engine集群中的流畅配置?

2 个答案:

答案 0 :(得分:6)

请查看documentation page you mentioned上的“先决条件”部分。它在那里提到,在GKE上你不能改变默认的Stackdriver Logging集成。原因是GKE维护此配置:更新代理,监视其运行状况等。无法为所有可能的配置提供相同级别的支持。

但是,您始终可以禁用默认集成并部署自己的修补版DaemonSet。您可以在GKE documentation

中找到如何禁用默认集成的方法

/InputOrder/Order/OrderLine[Product/Email/ProductType="EMAIL"]

请注意,在您禁用默认集成后,您必须自己维护新部署:更新代理,设置资源,查看其运行状况。

答案 1 :(得分:0)

这是一个使用您自己的流利守护进程的解决方案,非常类似于GKE附带的守护进程。

https://cloud.google.com/solutions/customizing-stackdriver-logs-fluentd