0

我在Google Container Engine中启用了Stackdriver日志代理的容器集群。它正确地从我的容器中拉出stdout日志。现在我想更改fluentd配置来指定日志解析器,以便GCP日志记录视图中显示的日志具有正确的严重性和组件。如何更改GKE管理日志代理的fluentd配置?

在此之后Stackdriver logging guide from kubernetes.io,我曾尝试:

  1. 获取fluentd ConfigMap作为YML文件
  2. 新增根据我log4js新<filter>日志格式
  3. 创建一个新的ConfigMap命名fluentd -cm-2 in kube-system命名空间
  4. 编辑DaemonSet fluentd并设置其ConfigMapfluentd-cm-2。我使用kubectl edit ds而不是kubectl replace -f,因为后者因错误消息失败而失败:“对象已被修改”,即使在获得DaemonSet yaml的新副本后。

意外的结果:DaemonSet重新启动,但其配置将恢复到原来的ConfigMap,所以我的变化并没有生效。

我也试过直接编辑0​​(kubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system)并保存它,但它也被恢复了。

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

所以,我的问题是:如何在集群配置时通过GKE安装日志记录代理时,如何更改Google Container Engine集群中的fluentd配置?

回答

3

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

但是,您始终可以禁用默认集成并部署您自己的已修补版本的DaemonSet。你可以找出如何禁用的GKE documentation默认集成:

gcloud beta container clusters update [CLUSTER-NAME] \ --logging-service=none

请注意,您禁用默认的整合之后,你必须保持自己新的部署:更新代理,集合中的资源,看着它的健康。

+0

谢谢,我不喜欢跳过先决条件! – edwinbs