Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理。这是一个 Elasticsearch、Fluentd 和 Kibana 的组合。Elasticsearch 是一个搜索引擎,负责存储日志并提供查询接口;Fluentd 负责从 Kubernetes 搜集日志并发送给 Elasticsearch;Kibana 提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的日志。
部署
Elasticsearch 附加组件本身会作为 Kubernetes 的应用在集群里运行,其 YAML 配置文件可从 https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/fluentd-elasticsearch 获取。
可将这些 YAML 文件下载到本地目录,比如 addons
,通过 kubectl apply -f addons/
部署。
这里有一点需要注意:后面我们会通过 NodePort 访问 Kibana,需要注释掉 kibana-deployment.yaml
中的环境变量 SERVER_BASEPATH
,否则无法访问。
所有的资源都部署在 kube-system
Namespace 里。
DaemonSet fluentd-es
从每个节点收集日志,然后发送给 Elasticsearch。
Elasticsearch 以 StatefulSet 资源运行,并通过 Service elasticsearch-logging
对外提供接口。这里已经将 Service 的类型通过 kubectl edit
修改为 NodePort。
可通过 http://192.168.56.106:32607/
验证 Elasticsearch 已正常工作。
Kibana 以 Deployment 资源运行,用户可通过 Service kibana-logging
访问其 Web GUI。这里已经将 Service 的类型修改为 NodePort。
通过 http://192.168.56.106:30319/
访问 Kibana。
Kibana 会显示 Index Pattern 创建页面。直接点击 Create
,Kibana 会自动完成后续配置。
这时,点击左上角的 Discover
就可以查看和检索 Kubernetes 日志了。
Kubernetes 日志管理系统已经就绪,用户可以根据需要创建自己的 Dashboard,具体方法可参考 Kibana 官方文档。
小结
Elasticsearch 附加组件本身会作为 Kubernetes 的应用在集群里运行,以实现集群的日志管理。它是一个 Elasticsearch、Fluentd 和 Kibana 的组合。
Elasticsearch 是一个搜索引擎,负责存储日志并提供查询接口。
Fluentd 负责从 Kubernetes 搜集日志并发送给 Elasticsearch。
Kibana 提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的日志。