kubernetes - 如何更改 GKE 管理的日志记录代理的 Fluentd 配置?

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

我在 Google 容器引擎中有一个容器集群,并启用了 Stackdriver 日志代理。它正确地从我的容器中提取标准输出日志。现在我想更改 Fluentd 配置以指定日志解析器,以便 GCP 日志记录 View 中显示的日志具有正确的严重性和组件。

关注此Stackdriver logging guide from kubernetes.io ,我尝试过:

  1. 掌握流利的语言 ConfigMap作为 yml 文件
  2. 添加了新的<filter>根据我的log4js日志格式
  3. 创建了一个新的 ConfigMapkube-system中命名为fluidd-cm-2命名空间
  4. 编辑了 DaemonSet对于 fluidd 并设置其 ConfigMapfluidd-cm-2。我使用 kubectl edit ds 做到了这一点而不是kubectl replace -f因为后者失败并显示错误消息:“对象已被修改”,即使在获取 DaemonSet 的新副本之后也是如此。 yaml。

意外结果:DaemonSet重新启动,但其配置恢复为原始 ConfigMap ,所以我的更改没有生效。

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

我注意到DaemonSetConfigMap对于 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/

相关文章:

node.js - 如何解决GKE容器中的EADDRINUSE问题?

kubernetes - 当pod无法调度时, "Insufficient cpu (3)"中的3指的是什么?

kubernetes - 在kubernetes pod中将URL解析为其他URL

kubernetes - kubeadm init error CPU 1 is less than required 2

node.js - 基于Firebase功能的云通用 Angular 超时

python-3.x - stackdriver 日志记录客户端库缺少 python 的严重性

kubernetes - GKE - 无法使 cuda 与 pytorch 一起工作

kubernetes - 滚动更新部署后 AWS ALB 目标不正常

Kubernetes Ingress 路径重写

Kubernetes服务-如何区分相同的目标端口