通过Telegraf采集k8s指标

Telegraf自带的inputs.kube_inventory插件可以实现k8s指标采集

官方参考文档: kube-inventory

说明:本例子中kube-inventory通过静态令牌文件认证方式请求kube-apiserver(根据token内容连接apiserver)

1、首先编辑Telegraf的配置文件telegraf.conf,编辑插件内容,如图:

说明:

  • url:kube-apiserver的地址和端口,如果是高可用集群可填写VIP:Port
  • bearer_token:连接kube-apiserver需要的token
  • resopnse_timeout:超时时间
  • resource_exclude:采集资源排除的指标
  • resource_include:采集资源包含的指标
  • tls:资源认证,目前没有配置TLS认证
  • insecure_skip_verify:跳过安全认证

注意:如果token直接写字符串那么字段名是bearer_token_string,如果以文件形式那就是bearer_token

2、获取bearer_token的值, 可通过rbac授权方式获取,操作如下:

2.1 在k8s的master节点,创建rbac.yaml文件内容如下:

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: influx:cluster:viewer
  labels:
    rbac.authorization.k8s.io/aggregate-view-telegraf: "true"
rules:
  - apiGroups: [""]
    resources: ["persistentvolumes", "nodes"]
    verbs: ["get", "list"]

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: influx:telegraf
aggregationRule:
  clusterRoleSelectors:
    - matchLabels:
        rbac.authorization.k8s.io/aggregate-view-telegraf: "true"
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: influx:telegraf:viewer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: influx:telegraf
subjects:
  - kind: ServiceAccount
    name: telegraf
    namespace: default
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: telegraf
  namespace: default

2.2 创建完ServiceAccount后可自动创建与ServiceAccount关联的token,如图:

查看此token的内容如下:

注:此token即为telegraf连接到kube-apiserver所用的token

2.3 回到telegraf所在机器,将上述token保存到token.csv文件中,如图:

注:访问token有两种方式,第一种通过文件,第二种直接将token配置在文件中,如图1中的bearer_token_string字段

3、重启telegraf,在监控页面查看指标,如图:

标签