Kubernetes 本身命令行界面去管理集群内的资源对象,例如有需求想查看某一些Pod在任意的时间段性能的使用情况,如何通过 Elastic Stack 进行一站式的数据采集,数据清洗,数据落地,数据可视化,让数据发挥真正的价值呢?
涉及到 Elastic Stack 中 Metricbeat 是用于采集 Kubernetes 相关的性能指标, Elasticsearch 是用于对于数据落地存储和搜索的引擎, Kibana 是用于对数据可视化的工具。
首先 Kubernetes 需要部署 Kuberentes State Metric 以支持 Metricbeat 对响应的 API 进行数据采集。
下载官方的模板在本地文件系统 wget https://raw.githubusercontent.com/elastic/beats/7.9/deploy/kubernetes/metricbeat-kubernetes.yaml
修改 ConfigMap 中指定的 Elasticsearch 主机相关的配置,并添加 Kibana的主机
output.elasticsearch: hosts: ['http://elasticsearch:9200'] username: elastic password: xxx setup.kibana: host: "kibana:5601"应用 YAML 配置创建对应的 Kubernetes 资源 kubectl apply -f metricbeat-kubernetes.yaml
进入 Pod 修改配置 kubectl exec -it metricbeat-xxx /bin/bash
设置 Metricbeat 创建 Kibana上的 Index Pattern 和 Dashboard metricbeat setup
通过 Kibana 中的 Dashboard 功能 展示目前 Kubernetes 中的资源指标情况