原资源定义prometheus-serviceMonitorKubeScheduler.yaml(k8s:1.18.2)

  1. apiVersion: monitoring.coreos.com/v1
  2. kind: ServiceMonitor
  3. metadata:
  4. labels:
  5. k8s-app: kube-scheduler
  6. name: kube-scheduler
  7. namespace: monitoring
  8. spec:
  9. endpoints:
  10. - interval: 30s # 每30s获取一次信息
  11. port: http-metrics # 对应service的端口名
  12. jobLabel: k8s-app
  13. namespaceSelector: # 表示去匹配某一命名空间中的service,如果想从所有的namespace中匹配用any: true
  14. matchNames:
  15. - kube-system
  16. selector: # 匹配的 Service 的labels,如果使用mathLabels,则下面的所有标签都匹配时才会匹配该service,如果使用matchExpressions,则至少匹配一个标签的service都会被选择
  17. matchLabels:
  18. k8s-app: kube-scheduler

上面是一个典型的 ServiceMonitor 资源文件的声明方式,上面我们通过selector.matchLabels在 kube-system 这个命名空间下面匹配具有k8s-app=kube-scheduler这样的 Service,但是我们系统中根本就没有对应的 Service,所以我们需要手动创建一个 Service:(prometheus-kubeSchedulerService.yaml)

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. namespace: kube-system
  5. name: kube-scheduler
  6. labels:
  7. k8s-app: kube-scheduler
  8. spec:
  9. type: ClusterIP
  10. clusterIP: None
  11. ports:
  12. - name: port
  13. port: 10251
  14. protocol: TCP
  15. ---
  16. apiVersion: v1
  17. kind: Endpoints
  18. metadata:
  19. labels:
  20. k8s-app: kube-scheduler
  21. name: kube-scheduler
  22. namespace: kube-system
  23. subsets:
  24. - addresses:
  25. - ip: 10.111.12.78
  26. - ip: 10.111.12.79
  27. - ip: 10.111.12.80
  28. ports:
  29. - name: http-metrics
  30. port: 10251
  31. protocol: TCP
文档更新时间: 2020-07-08 13:59   作者:张尚