K8s - Kubernetes使用详解14(集群日志管理:Elasticsearch)
十四、集群日志管理:Elasticsearch
1,Elasticsearch 介绍
(1)Kubernetes 开发了一个 Elasticsearch 附加组件来实现集群的日志管理。这是一个 Elasticsearch、Fluentd 和 Kibana 的组合。
(2)它们分工如下:
- Fluentd 负责从 Kubernetes 搜集日志并发送给 Elasticsearch;
- Elasticsearch 是一个搜索引擎,负责存储日志并提供查询接口;
- Kibana 提供了一个 Web GUI,用户可以浏览和搜索存储在 Elasticsearch 中的日志。
通过在每台 node 上部署一个以 DaemonSet 方式运行的 fluentd 来收集每台 node 上的日志。Fluentd 将 docker 日志目录 /var/lib/docker/containers 和 /var/log 目录挂载到 Pod 中,然后 Pod 会在 node 节点的 /var/log/pods 目录中创建新的目录,可以区别不同的容器日志输出,该目录下有一个日志文件链接到 /var/lib/docker/contianers 目录下的容器日志输出。
2,安装配置
(1)Elasticsearch 附加组件本身会作为 Kubernetes 的应用在集群里运行,其 YAML 配置文件可从如下地址获取:
(2)我们可以将这个 6 个YAML 文件都下载下来:
wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-service.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/es-statefulset.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentd-es-configmap.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/fluentd-es-ds.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-deployment.yaml wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/cluster/addons/fluentd-elasticsearch/kibana-service.yaml
(3)为了后面我们可以通过 NodePort 访问 Kibana,首先需要修改 kibana-deployment.yaml,注释掉里面的环境变量 SERVER_BASEPATH
(4)接着修改 kibana-service.yaml,增加 type: NodeType 配置:
(5)接着修改 es-service.yaml,同样增加 type: NodeType 配置:
(6)最后执行如下命令对这 6 个 YAML 文件进行部署:
kubectl apply -f .
(7)执行如下命令查看安装了哪些 Pod:
kubectl get --namespace=kube-system pod
注意:这里我们可能会发现 elasticsearch-loggin 的 pod 不断的 restart,无法正常启动。可能是内存资源不足导致的(比如 node 节点只有 2G 内存)将内存调整为 4G, pod 运行恢复正常。
(8)执行如下命令查看安装的 Service:
kubectl get --namespace=kube-system services
(9)可以看到 Elasticsearch 对外提供的节点端口为 32728,我们使用浏览器访问 http://MASTER_IP: 32728/ 看到如下数据则说明 Elasticsearch 已正常工作。
3,使用说明
(1)从上面可以看到 Kibana 在节点上监听的端口是 32739,因此我们使用浏览器访问如下地址即可打开监控页面:
- http://YOUR_MASTER_IP:32739/
(2)Kibana 会显示 Index Pattern 创建页面。直接点击 Create,Kibana 会自动完成后续配置。
(3)这时,点击左上角的 Discover 就可以查看和检索 Kubernetes 日志了。