多个 Kubernetes 集群的指标采集+可视化的实践分享

面临越来越丰富的线上办公、学习、娱乐、社交等场景、越来越多的应用、以及越来越快的产品升级速度,企业已经不可能通过人工部署物理服务器来满足业务发展的需要。“云服务““容器化“便成为了当下企业实现可快速扩展与伸缩的基础设施解决方案。Kubernetes(简称 K8s),作为一个开源软件(免费)的,被各类企业(大型互联网企业、中小型企业等)用于管理云平台中多个主机上的容器化的应用,让部署容器化的应用简单并且高效。

基于 Kubernetes 构建的一套自动化运维平台,虽然能够帮助企业降本增效,但是其不透明的健康状态和不能够崩溃的应用系统和业务场景对比,多少让人提心吊胆。就像 “ 一名叫做 k8s 的程序员,被委以重任作为一个100人大家庭的顶梁柱,但是他没有机会去体检,一年、两年、三年...,家庭成员越来越多, k8s 年纪却越来越大,加之工作负荷大、心理压力大、身材日益肥胖,身体健康状态令人堪忧。他却仍然没有机会体检... “那些官方为 k8s 提供的基础指标,只会告诉你 k8s 日益增长的“年龄”与“体重”...罢了,更多健康指标可谓之“黑盒”。

前些天,就遇到了监测 Kubernetes 集群的需求,也借此从玉杰那里学到了“多个 Kubernetes 集群的指标采集+可视化”的小方法。还是那句话“借助工具,真的很重要!”哈哈哈哈哈哈

工具

前提

  • 安装 Kubernetes 1.18+

  • 注册观测云账号(偷偷说:现在有“免费版本”哟)

  • 安装DataKit(我安了一个,还能采集PC、服务器、进程等。总之是我的常用软件)

操作说明

面对接入多个 Kubernetes 集群指标的需求,观测云提供了使用全局 Tag 的方式来进行区分。当集群中只有一个采集对象,比如采集 kubernetes API Server 指标,集群中 DataKit 的数量会大于一个,为了避免指标采集重复,DataKit 开启了选举功能,这个时候区分集群的方式是增加 ENV_GLOBAL_ELECTION_TAGS。

        - name: ENV_GLOBAL_ELECTION_TAGS  
          value: cluster_name_k8s=k8s-prod

而针对非选举类的指标采集,比如为 Pod 增加 annotations 的方式进行指标采集,观测云提供了在 ENV_GLOBAL_HOST_TAGS 环境变量中增加全局 Tag 的方式。注意旧版本这个环境变量名称是 ENV_GLOBAL_TAGS。

        - name: ENV_GLOBAL_HOST_TAGS
          value: host=__datakit_hostname,host_ip=__datakit_ip,cluster_name_k8s=k8s-prod

上述采集到的指标集都会加上 cluster_name_k8s 的 Tag,值是 k8s-prod,这就是区分集群的原理。下面就以采集多个集群中的 kubernetes API Server 指标为例来进行详细说明。

操作步骤

步骤 1: 测试环境集群部署 DataKit

1.1 下载 datakit.yaml

登录观测云,点击『集成』模块,再点击左上角『DataKit』,选择『Kubernetes』,下载 datakit.yaml。

1.2 替换 Token

登录观测云,进入『管理』模块,在『基本设置』里面复制 token,替换 datakit.yaml 文件中的 ENV_DATAWAY 环境变量的 value 值中的 。

1.3 增加全局 Tag

在 datakit.yaml 文件中的 ENV_GLOBAL_TAGS 环境变量值最后增加 cluster_name_k8s=k8s-test。 再增加环境变量 ENV_GLOBAL_ELECTION_TAGS。这样测试环境的集群就是 k8s-test。

        - name: ENV_GLOBAL_ELECTION_TAGS  
          value: cluster_name_k8s=k8s-test

1.4 配置 Kubernetes API Server指标采集

详见 Kubernetes API Server 集成文档

1.5 部署 DataKit

把 datakit.yaml 上传到测试集群的 Master 节点,执行部署命令。

kubectl apply -f datakit.yaml

步骤 2: 生产环境集群部署 DataKit

2.1 修改 datakit.yaml

使用 步骤 1 中的 datakit.yaml,把 两处 k8s-test 改成 k8s-prod,这样生产环境的集群就是 k8s-prod。这里还需要修改一下 api-server.conf 中的 url。

2.2 部署 DataKit

把 datakit.yaml 上传到生产集群的 Master 节点,执行部署命令。

kubectl apply -f datakit.yaml

步骤 3: 视图预览

3.1 指标预览

登录观测云,点击『指标』,搜索 prom_api_server,在 cluster_name_k8s 标签下面已经有两个集群的名称。

3.2 新建视图

登录观测云,点击『场景』->『新建仪表板』,选择 Kubernetes API Server 监控视图,集群名称下拉框可以区分集群了。


作者 | 刘玉杰、一路孙

编辑 | 一路孙

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值