【发布时间】:2017-09-21 00:50:40
【问题描述】:
我在 Google Container Engine 中有一个启用了 Stackdriver 日志代理的容器集群。它正确地从我的容器中提取标准输出日志。现在我想更改 fluentd 配置以指定日志解析器,以便 GCP Logging 视图中显示的日志具有正确的严重性和组件。
按照Stackdriver logging guide from kubernetes.io,我尝试:
- 将 fluentd
ConfigMap获取为 yml 文件 - 根据我的 log4js 日志格式添加了一个新的
<filter> - 在
kube-system命名空间中创建了一个名为fluentd-cm-2的新ConfigMap - 编辑了 fluentd 的
DaemonSet并将其ConfigMap设置为 fluentd-cm-2。我使用kubectl edit ds而不是kubectl replace -f来执行此操作,因为后者失败并显示错误消息:“对象已被修改”,即使在获得DaemonSetyaml 的新副本之后也是如此。
意外结果:DaemonSet 重新启动,但它的配置恢复到原来的ConfigMap,所以我的更改没有生效。
我也尝试过直接编辑ConfigMap (kubectl edit cm fluentd-gcp-config-v1.1 --namespace kube-system) 并保存它,但它也被还原了。
我注意到 fluentd 的 DaemonSet 和 ConfigMap 被标记为 addonmanager.kubernetes.io/mode: Reconcile。我会得出结论,由于这种“协调”模式,GKE 已经覆盖了我的设置。
所以,我的问题是:当 GKE 在集群配置中安装日志代理时,如何更改 Google Container Engine 集群中的 fluentd 配置?
【问题讨论】:
标签: kubernetes google-cloud-platform google-kubernetes-engine fluentd stackdriver