第15章 Kubernetes集群日志管理
Kubernetes开发了一个Elasticsearch附加组件来实现集群的日志管理。这是Elasticsearch、Fluentd和Kibana的组合。Elasticsearch是一个搜索引擎,负责存储日志并提供查询接口;Fluentd负责从Kubernetes搜集日志并发送给Elasticsearch;Kibana提供了一个Web GUI,用户可以浏览和搜索存储在Elasticsearch中的日志,如图15-1所示。

图15-1
15.1 部署
Elasticsearch附加组件本身会作为Kubernetes的应用在集群里运行,其YAML配置文件可从https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch获取,如图15-2所示。

图15-2
可将这些YAML文件下载到本地目录,比如addons,通过kubectl apply -f addons/部署,如图15-3所示。

图15-3
这里有一点需要注意:后面我们会通过NodePort访问Kibana,需要注释掉kibana-deployment.yaml中的环境变量SERVER_BASEPATH,否则无法访问,如图15-4所示。

图15-4
所有的资源都部署在kube-system Namespace里,如图15-5所示。

图15-5
DaemonSet fluentd-es从每个节点收集日志,然后发送给Elasticsearch,如图15-6所示。

图15-6
Elasticsearch以StatefulSet资源运行,并通过Service elasticsearch-logging对外提供接口。这里已经将Service的类型通过kubectl edit修改为NodePort。
可通过http://192.168.56.106:32607/验证Elasticsearch已正常工作,如图15-7所示。

图15-7
Kibana以Deployment资源运行,用户可通过Service kibana-logging访问其Web GUI。这里已经将Service的类型修改为NodePort,如图15-8所示。

图15-8
通过http://192.168.56.106:30319/访问Kibana,如图15-9所示。

图15-9
Kibana会显示Index Pattern创建页面。直接单击Create,Kibana会自动完成后续配置,如图15-10所示。

图15-10
这时,单击左上角的Discover就可以查看和检索Kubernetes日志了,如图15-11所示。

图15-11
Kubernetes日志管理系统已经就绪,用户可以根据需要创建自己的Dashboard,具体方法可参考Kibana官方文档。
15.2 小结
Elasticsearch附加组件本身会作为Kubernetes的应用在集群里运行,以实现集群的日志管理。它是Elasticsearch、Fluentd和Kibana的组合。
Elasticsearch是一个搜索引擎,负责存储日志并提供查询接口。
Fluentd负责从Kubernetes搜集日志并发送给Elasticsearch。
Kibana提供了一个Web GUI,用户可以浏览和搜索存储在Elasticsearch中的日志。