Kubernetes / Prometheus / 监控平台

Prometheus监控CoreDNS

浅时光博客 · 7月11日 · 2022年 · 5.0w 次已读
Grafana监控面板文件
价格:免费
    文件格式Json
    使用说明Grafana导入Json文件
    最近更新2024年02月25日

    一、监控方案说明


    K8s中的域名解析的主流方案是CoreDNS,部署完成K8s集群之后,我们都会部署CoreDNS服务实现集群内部域名解析访问,而且CoreDNS有默认提供监控metrics的接口,这里我们prometheus的用的是kube-prometheus,通过serviceMontor来监控CoreDNS的Service。

    二、创建监控接口SVC


    默认部署的coredns,会自动创建一个kube-dns的Service,业务pod内就是通过访问这个Service来用coredns进行域名的解析。CoreDNS默认用9153端口提供了metrics接口,因此我们还需要新建一个Service,用来暴露CoreDNS的9153端口。

    [root@k8s-master1 coredns]# vim coredns-svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: coredns-metrics
      namespace: kube-system
      labels:
        app: cordns  
    spec:
      ports:
      - name: croedns-metrics
        port: 9153
        protocol: TCP
        targetPort: 9153
      selector:
        k8s-app: kube-dns
      sessionAffinity: None
      type: ClusterIP
    
    [root@k8s-master1 coredns]# kubectl apply -f coredns-svc.yaml
    [root@k8s-master1 coredns]# kubectl get svc -n kube-system

    三、配置Prometheus采集监控数据


    [root@k8s-master1 discovery]# vim prometheus-additional-configs.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: additional-scrape-configs
      namespace: monitoring
    type: Opaque
    stringData:
      additional-scrape-configs.yaml: |
    ……
        - job_name: coredns-metrics
          honor_labels: true
          honor_timestamps: true
          scrape_interval: 15s
          metrics_path: /metrics
          scheme: http
          kubernetes_sd_configs:
          - role: endpoints
            namespaces:
              names:
              - kube-system
          relabel_configs:
          - source_labels: [__config_type]
            separator: ;
            regex: service
            target_label: __config_type
            replacement: $1
            action: replace
          - source_labels: [__meta_kubernetes_endpoint_port_name]
            separator: ;
            regex: 9153-9153-tcp
            replacement: $1
            action: keep
          - source_labels: [__meta_kubernetes_service_name]
            separator: ;
            regex: coredns-metrics
            replacement: $1
            action: keep
          - source_labels: [__meta_kubernetes_pod_node_name]
            separator: ;
            regex: (.*)
            target_label: node
            replacement: $1
            action: replace
          - source_labels: [__meta_kubernetes_namespace]
            separator: ;
            regex: (.*)
            target_label: namespace
            replacement: $1
            action: replace
          - source_labels: [__meta_kubernetes_service_name]
            separator: ;
            regex: (.*)
            target_label: service
            replacement: $1
            action: replace
          - source_labels: [__meta_kubernetes_pod_name]
            separator: ;
            regex: (.*)
            target_label: pod
            replacement: $1
            action: replace
          - source_labels: [__meta_kubernetes_endpoint_port_name]
            separator: ;
            regex: (.*)
            target_label: endpoint
            replacement: $1
            action: replace

    说明:Secret资源创建成功之后,我们要以Secret的方式挂载到Pormetheus服务中去,不然不生效!

    四、检查Prometheus Targets


    五、添加Grafan监控面板



    本文作者:浅时光博客
    原文链接:https://www.dqzboy.com/10400.html
    版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
    免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。