prometheus监控kube-controller-manager

第一种方法:

创建kube-controller-manager的service

cat kube-controller-manager.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/port: "32108"
    prometheus.io/scrape: "true"
  labels:
    component: kube-controller-manager
    tier: control-plane
  name: kube-controller
  namespace: kube-system
spec:
  clusterIP:
  ports:
  - name: metrics
    port: 10252
    protocol: TCP
    targetPort: 10252
    nodePort: 32108
  selector:
    component: kube-controller-manager
    tier: control-plane
  type: NodePort

kubectl apply -f kube-controller-manager.yaml

集群外部访问k8s集群中pod应用,流量走向:物理节点ip:port—>service ip:port–>pod ip:port

第二种方法:

kubectl delete -f kube-controller-manager.yaml

修改prometheus-cfg的yaml文件,新增一个job来监控kube-controller-manager cat prometheus-cfg.yaml

---
kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    app: prometheus
  name: prometheus-config
  namespace: monitor-sa
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s
      scrape_timeout: 10s
      evaluation_interval: 1m
    scrape_configs:
    - job_name: kubernetes-node
      kubernetes_sd_configs:
      - role: node
      relabel_configs:
      - source_labels: [__address__]
        regex: (.*):10250
        replacement: ${1}:9100
        target_label: __address__
        action: replace
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: kubernetes-node-cadvisor
      kubernetes_sd_configs:
      - role:  node
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __address__
        replacement: kubernetes.default.svc:443
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        target_label: __metrics_path__
        replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
    - job_name: kubernetes-apiserver
      kubernetes_sd_configs:
      - role: endpoints
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
        action: keep
        regex: default;kubernetes;https
    - job_name: kubernetes-service-endpoints
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
        action: replace
        target_label: __scheme__
        regex: (https?)
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
        action: replace
        target_label: __address__
        regex: ([^:]+)(?::d+)?;(d+)
        replacement: $1:$2
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_service_name]
        action: replace
        target_label: kubernetes_name 
    - job_name: kubernetes-schedule
      scrape_interval: 5s
      static_configs:
      - targets: [192.168.124.16:10251]
    - job_name: kubernetes-controller-manager
      scrape_interval: 5s
      static_configs:
      - targets: [192.168.124.16:10252]


kubectl delete -f prometheus-cfg.yaml
kubectl apply  -f prometheus-cfg.yaml

kubectl delete -f prometheus-deploy.yaml 
kubectl apply -f prometheus-deploy.yaml
经验分享 程序员 微信小程序 职场和发展