我在Google容器引擎中有一个容器群集,启用了Stackdriver日志代理。它正确地从我的容器中提取stdout日志。现在我想更改fluentd配置以指定日志解析器,以便GCP Logging视图中显示的日志具有正确的严重性和组件。
在Stackdriver logging guide from kubernetes.io之后,我试图:
ConfigMap
作为yml文件<filter>
ConfigMap
命名空间kube-system
DaemonSet
并将其ConfigMap
设置为流利的-cm-2 。我使用kubectl edit ds
代替kubectl replace -f
执行了此操作,因为后者失败并显示错误消息:“对象已被修改”,即使获得了DaemonSet
yaml的新副本。意外结果: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集群中的流畅配置?
答案 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