云容器引擎 CCE-Prometheus监控多个集群:操作步骤

时间:2023-11-01 16:18:15

操作步骤

  1. 分别获取目标集群的bearer_token 信息。

    1. 在目标集群创建rbac权限。
      登录到目标集群后台节点,创建prometheus_rbac.yaml文件。
      apiVersion: v1kind: ServiceAccountmetadata:  name: prometheus-test  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata:  name: prometheus-testrules:- apiGroups:  - ""  resources:  - nodes  - services  - endpoints  - pods  - nodes/proxy  verbs:  - get  - list  - watch- apiGroups:  - "extensions"  resources:    - ingresses  verbs:  - get  - list  - watch- apiGroups:  - ""  resources:  - configmaps  - nodes/metrics  verbs:  - get- nonResourceURLs:  - /metrics  verbs:  - get---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:  name: prometheus-testroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: prometheus-testsubjects:- kind: ServiceAccount  name: prometheus-test  namespace: kube-system

      执行以下命令创建rbac权限。

      kubectl apply -f prometheus_rbac.yaml

    2. 获取目标集群bearer_token信息。
      • 1.21以前版本的集群中,Pod中获取Token的形式是通过挂载ServiceAccount的Secret来获取Token,这种方式获得的Token是永久的。该方式在1.21及以上的版本中不再推荐使用,并且根据社区版本迭代策略,在1.25及以上版本的集群中,ServiceAccount将不会自动创建对应的Secret。

        1.21及以上版本的集群中,直接使用TokenRequest API获得Token,并使用投射卷(Projected Volume)挂载到Pod中。使用这种方法获得的Token具有固定的生命周期,并且当挂载的Pod被删除时这些Token将自动失效。详情请参见Token安全性提升说明

      • 如果您在业务中需要一个永不过期的Token,您也可以选择手动管理ServiceAccount的Secret。尽管存在手动创建永久ServiceAccount Token的机制,但还是推荐使用TokenRequest的方式使用短期的Token,以提高安全性。

      首先获取serviceaccount信息。

      kubectl describe sa prometheus-test -n kube-system

      kubectl describe secret prometheus-test-token-hdhkg -n kube-system

      记录下这个token值,就是要搜集的bearer_token信息。

  2. 配置bearer_token 信息。

    登录到Prometheus所在机器,进入Prometheus的安装目录,将目标集群的token信息保存在文件中。

  3. 配置Prometheus监控job。

    示例job监控的是容器指标。如果需要监控其他指标,可自行添加job编写抓取规则。

      - job_name: k8s_cAdvisor    scheme: https    bearer_token_file: k8s_token #上一步中的token文件    tls_config:      insecure_skip_verify: true    kubernetes_sd_configs:  #kubernetes 自动发现配置    - role: node    #node类型的自动发现      bearer_token_file: k8s_token #上一步中的token文件      api_server: https://192.168.0.153:5443  #K8s集群 apiserver地址      tls_config:        insecure_skip_verify: true   #跳过对服务端的认证    relabel_configs:  ##用于在抓取metrics之前修改target的已有标签    - target_label: __address__      replacement: 192.168.0.153:5443      action: replace      ##将metrics_path地址转换为/api/v1/nodes/${1}/proxy/metrics/cadvisor      #相当于通过APIServer代理到kubelet上获取数据    - source_labels: [__meta_kubernetes_node_name]   #指定需要处理的源标签      regex: (.+)    #匹配源标签的值,(.+)表示源标签什么值都可以匹配上      target_label: __metrics_path__     #指定了需要replace后的标签      replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor  # 表示替换后的标签即__metrics_path__  对应的值。其中${1}表示正则匹配的值,即nodename    - target_label: cluster      replacement: xxxxx   ##根据实际情况填写 集群信息。也可不写###下面这个job是监控另一个集群  - job_name: k8s02_cAdvisor    scheme: https    bearer_token_file: k8s02_token #上一步中的token文件    tls_config:      insecure_skip_verify: true    kubernetes_sd_configs:     - role: node          bearer_token_file: k8s02_token #上一步中的token文件      api_server: https://192.168.0.147:5443  #K8s集群 apiserver地址      tls_config:        insecure_skip_verify: true   #跳过对服务端的认证    relabel_configs:  ##用于在抓取metrics之前修改target的已有标签    - target_label: __address__      replacement: 192.168.0.147:5443      action: replace    - source_labels: [__meta_kubernetes_node_name]      regex: (.+)      target_label: __metrics_path__      replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor    - target_label: cluster      replacement: xxxx    ##根据实际情况填写 集群信息。也可不写

  4. 启动prometheus服务。

    配置完毕后,启动prometheus服务

    ./prometheus --config.file=prometheus.yml

  5. 登录prometheus服务访问页面,查看监控信息。

support.huaweicloud.com/bestpractice-cce/cce_bestpractice_10009.html