我在 Google Kubernetes Engine 上部署了一个 Elasticsearch 集群。我能够使用 PC 上的“kubectl logs”命令查看特定 pod 的日志。
>kubectl logs es-data-0
...
[2018-06-18T07:35:11,220][INFO ][o.e.m.j.JvmGcMonitorService] [es-data-0] [gc][4510405] overhead, spent [290ms] collecting in the last [1s]
[2018-06-18T09:48:19,194][INFO ][o.e.m.j.JvmGcMonitorService] [es-data-0] [gc][4518376] overhead, spent [366ms] collecting in the last [1.1s]
[2018-06-18T10:01:49,344][WARN ][o.e.m.j.JvmGcMonitorService] [es-data-0] [gc][4519183] overhead, spent [641ms] collecting in the last [1s]
我按照本教程部署了用于 Stackdriver 日志记录的 ConfigMap 和 DaemonSet: https://kubernetes.io/docs/tasks/debug-application-cluster/logging-stackdriver/
fluentd pod 正在运行:
>kubectl get pods NAME READY STATUS RESTARTS AGE cerebro-59648dc47c-vr964 1/1 Running 0 25d es-client-7bff44b8f5-2wqcs 1/1 Running 0 12d es-client-7bff44b8f5-vnrhg 1/1 Running 0 12d es-data-0 1/1 Running 0 52d es-data-1 1/1 Running 0 52d es-data-2 1/1 Running 0 52d es-master-6bf767f949-8fpjl 1/1 Running 0 52d es-master-6bf767f949-brjpq 1/1 Running 0 52d es-master-6bf767f949-gx2jp 1/1 Running 0 52d fluentd-gcp-v2.0-7mncl 1/1 Running 0 43m fluentd-gcp-v2.0-rsfmc 1/1 Running 0 43m fluentd-gcp-v2.0-tbh9t 1/1 Running 0 43m kibana-595858b4b7-5npcr 1/1 Running 0 52d nginx-ingress-controller-86c8447687-z4rjq 1/1 Running 2 52d nginx-ingress-default-backend-6664bc64c9-q2hnm 1/1 Running 338 52d
>kubectl get ds --all-namespaces NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE default fluentd-gcp-v2.0 3 3 3 3 3 beta.kubernetes.io/fluentd-ds-ready=true 44m kube-system fluentd-gcp-v2.0.10 3 3 3 3 3 beta.kubernetes.io/fluentd-ds-ready=true 52d kube-system metadata-proxy-v0.1 0 0 0 0 0 beta.kubernetes.io/metadata-proxy-ready=true 52d kube-system nvidia-gpu-device-plugin 0 0 0 0 0 <none> 52d
ConfigMap 存在:
>kubectl get cm
NAME DATA AGE
cerebro-configmap 1 52d
curator-config 2 6d
fluentd-gcp-config 4 47m
ingress-controller-leader-nginx 0 52d
nginx-ingress-controller 1 52d
最后,我进入日志查看器页面,选择“GKE 容器”: https://console.cloud.google.com/logs/viewer
不幸的是,我没有看到任何 pod 的日志。如前所述,使用“kubcetl logs”命令时,我可以从我的电脑上查看所有 pod 的日志。
答案1
- 需要确保集群已设置并启用 Stackdriver 日志记录/监控。
- 继上述文档,你应该有一个名为 counter 的 pod。如果你运行:
$ kubectl logs counter # 您能看到该 pod 的输出吗?
如果你打算使用 Fluentd 为 Kubernetes Engine 定制 Stackdriver Logs,则教程建议首先创建集群服务帐户并分配所需的角色。接下来,使用“no-enable-cloud-logging”创建集群;并部署 Fluentd 守护进程集。
尝试如下所示的高级过滤器应该会有所帮助:
资源.类型=“容器”
资源.标签.pod_id="es-data-0"