17-[信创]-Kube-Prometheus监控coreDNS_Time

因为我们是二进制安装的coreDNS需要调整一下

1.查看coreDNS暴漏的prometheus端口号/metrics

[root@k8s-master1 data]# kubectl edit pod -n kube-system node-local-dns-4jck7
#随便找个dns的pod进去看下  搜索关键字 metrics
......
......
    ports:
    - containerPort: 53
      hostPort: 53
      name: dns
      protocol: UDP
    - containerPort: 53
      hostPort: 53
      name: dns-tcp
      protocol: TCP
    - containerPort: 9253 
      hostPort: 9253   #这是给prometheus暴漏的端口号
      name: metrics   #这里
      protocol: TCP
......
......

得到端口号测试一下

[root@master01 manifests]# curl 10.1.19.51:9253/metrics | tail -3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 39833    0 39833    0     0  37.9M      0 --:--:-- --:--:-- --:--:-- 37.9M
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes -1


#没问题开始配置

2.查看prometheus监控coredns的标签 在原有基础上添加无头service和endpoints

可以去查看prometheus的yaml文件 ServiceMonitorCoreDNS配置文件

[root@master01 manifests]# kubectl -n kube-system get svc kube-dns --show-labels
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE   LABELS
kube-dns   ClusterIP   10.96.0.2    <none>        53/UDP,53/TCP,9153/TCP   27h   k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=CoreDNS

#看上面的标签 需要下面指定哦!!!不一样一定要替换
vim manifests/kubernetes-serviceMonitorCoreDNS.yaml

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app.kubernetes.io/name: coredns
  name: coredns
  namespace: monitoring
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 15s
    port: metrics
  jobLabel: app.kubernetes.io/name
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
  #    app.kubernetes.io/name: kube-dns
      k8s-app: kube-dns  # 修正为 CoreDNS 的标准标签[1,6](@ref)

或者动态查看

root@guoguo-M5-Pro:/apps/k8s/prometheus/etcd# kubectl edit -n monitoring servicemonitors.monitoring.coreos.com

3.写个无头svc和endpoints

[root@master01 manifests]# vim servicemonitor/promteheus-coredns.yaml

#无头svc
---
apiVersion: v1
kind: Service
metadata:
  name: kube-coredns-prometheus
  namespace: kube-system
  labels:
    k8s-app: kube-dns
spec:
  ports:
  - name: metrics
    port: 9253
    targetPort: 9253
    protocol: TCP
  type: ClusterIP
  selector:
    k8s-app: kube-dns
  clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
  name: kube-coredns-prometheus
  namespace: kube-system
  labels:
    k8s-app: kube-dns
subsets:
- addresses:
  - ip: 10.1.19.51
  - ip: 10.1.19.52
  - ip: 10.1.19.53
  - ip: 10.1.19.54
  - ip: 10.1.19.55
  - ip: 10.1.19.56
  ports:
  - name: metrics
    port: 9253
    protocol: TCP

执行后去prometheus ui 页面查看

serviceMonitor/monitoring/coredns/0 (8/8 up)