使用fabric8在Kubernetes上搭建日志和度量环境

首先

这篇文章是2016年Kubernetes Advent Calendar第6天的投稿。我们将在Kubernetes上建立日志收集和监控机制。

准备事前工作

在使用fabric8事前搭建Kubernetes环境的情况下,我们假设在本地已经成功搭建了minikube环境。

構築日誌记录

在fabric8中,我们公开了一个名为Logging的清单,作为日志收集的机制,您可以轻松部署它到Kubernetes上。Logging内部实际上由Elasticsearch、Fluentd和Kibana组成(遗憾的是,Elasticsearch和Kibana不是最新版本的5)。

不选择Logstash而选择Fluentd的原因是因为Fluentd支持Docker的日志驱动程序,并且能够直接传输Docker容器的标准输出(stdout)使用日志驱动程序。

步驟

从fabric8清单的公开页面上,您可以查看logging的yaml文件,并执行以下命令。

kubectl apply -f http://central.maven.org/maven2/io/fabric8/platform/packages/logging/2.4.5/logging-2.4.5-kubernetes.yml

由于Elasticsearch需要持久卷,因此请执行以下命令以生成持久卷。

gofabric8 volumes

当步骤完成后,每个pod和service已经启动完成,请访问Kibana服务。

建立度量方式

在fabric8中,我们提供了一个名为Metrics的清单,作为监控机制,你可以轻松地部署在Kubernetes上。 Metrics在内部由Prometheus.io和Grafana构成。

如果使用fabric8-maven-plugin来部署spring-boot应用程序,就能够通过Jolokia获取JMX指标。

步骤

从fabric8清单公开页面中查看metrics的yaml,并执行以下命令。

kubectl apply -f http://central.maven.org/maven2/io/fabric8/platform/packages/metrics/2.4.5/metrics-2.4.5-kubernetes.yml

Prometheus 需要一个持久卷,因此执行以下命令以生成持久卷。

gofabric8 volumes

当这些步骤完成后,每个Pod和服务都启动完毕,请访问Grafana服务。

最后(的结论)

所以,我们使用fabric8在Kubernetes上轻松构建了基于Elaasticseaarch-Fluentd-Kibana的日志记录环境和基于Prometheus-Grafana的指标环境。在这篇文章中,我们仅仅是搭建了一个可触及的环境,但首先试用一下,我们已经准备好验证它在实际运营中的可用性以及确定可能的缺失部分。我们将基于这个环境进行各种验证。