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

edw*_*nbs 6 fluentd google-cloud-platform kubernetes google-kubernetes-engine stackdriver

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

遵循kubernetes.io的这个Stackdriver日志指南,我试图:

  1. 获得流利ConfigMap的yml文件
  2. <filter>根据我的log4js日志格式添加了一个新的
  3. 在命名空间中创建了一个ConfigMap名为fluentd-cm-2的新kube-system命名
  4. 编辑了DaemonSet精通,并设置ConfigMap流利的-cm-2.我使用kubectl edit ds而不是kubectl replace -f因为后者失败并显示错误消息:"对象已被修改",即使在获取了DaemonSetyaml 的新副本之后.

意外结果:DaemonSet重新启动,但其配置恢复为原始配置ConfigMap,因此我的更改未生效.

我也尝试过编辑ConfigMap直接(kubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system)并保存它,但它也被还原了.

我注意到,DaemonSet并且ConfigMap为流利的人标记了addonmanager.kubernetes.io/mode: Reconcile.我会得出结论,由于这种"协调"模式,GKE已经覆盖了我的设置.

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

Mik*_*kov 8

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

但是,您始终可以禁用默认集成并部署自己的修补版DaemonSet.您可以在GKE文档中找到如何禁用默认集成:

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

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