因为我们是二进制安装的k8s需要手动配置scheduler和controller-manager

直接edit修改

[root@k8s-master1 ~]# kubectl -n monitoring edit servicemonitors.monitoring.coreos.com kube-controller-manager
......
......
    - action: drop
      regex: etcd_(debugging|disk|request|server).*
      sourceLabels:
      - __name__
    port: http-metrics #将这里修改为http  原是https  并且要和avc和endpoint 的名字对应 kube-controller-manager的
    scheme: http   #将这里修改为http  原是https     并且要和avc和endpoint 的名字对应 kube-controller-manager的
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: app.kubernetes.io/name
  
  
  ......
  ......
  
    jobLabel: app.kubernetes.io/name
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-controller-manager  #这里的标签要和下面创建的svc和endpoint一致!必须一致  kube-controller-manager的
[root@k8s-master1 ~]# kubectl -n monitoring edit servicemonitors.monitoring.coreos.com kube-scheduler
 ......
 ......
  labels:
    app.kubernetes.io/name: kube-scheduler
  name: kube-scheduler
  namespace: monitoring
  resourceVersion: "10539915"
  uid: 1dd84064-d3bc-42b8-aefe-6ff3aa63f57f
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 30s
    port: http-metrics      #这里要修改为http  原是https     并且要和avc和endpoint 的名字对应 kube-scheduler 的
    scheme: http            #这里要修改为http  原是https   并且要和avc和endpoint 的ports.name对应  kube-scheduler 的
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: app.kubernetes.io/name
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-scheduler  #这个标签要和下面的svc和endpoint一致 必须一致!! kube-scheduler 的

创建svc和endpoint

我们需要给这个kube-controller-manager 配置svc和endpoint

root@guoguo-M5-Pro:/apps/k8s/prometheus# vim repair-prometheus-scheduler-controller-manager.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-controller-manager
  labels:
    app.kubernetes.io/name: kube-controller-manager
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - name: http-metrics  #这里和上面的 kube-controller-manager  spec.endpoints.port 的一致
    port: 10252
    targetPort: 10252
    protocol: TCP

---
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app.kubernetes.io/name: kube-controller-manager   #这个标签是和 上面 kube-controller-manager 标签要一致
  name: kube-controller-manager
  namespace: kube-system
subsets:
- addresses:
  - ip: 172.17.20.101   #这些是master的地址
  - ip: 172.17.20.102
  - ip: 172.17.20.103
  ports:
  - name: http-metrics #这里和上面的 kube-controller-manager  spec.endpoints.port 的一致
    port: 10252
    protocol: TCP

---

apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-scheduler
  labels:
    app.kubernetes.io/name: kube-scheduler  #这个标签是和 上面 kube-scheduler 标签要一致
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - name: http-metrics  #这里和上面的 kube-scheduler  spec.endpoints.port 的一致
    port: 10251
    targetPort: 10251
    protocol: TCP

---
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    app.kubernetes.io/name: kube-scheduler   #这个标签是和 上面 kube-scheduler 标签要一致
  name: kube-scheduler  #这里和上面的 kube-scheduler  spec.endpoints.port 的一致
  namespace: kube-system
subsets:
- addresses:
  - ip: 172.17.20.101   #这些是master的地址
  - ip: 172.17.20.102
  - ip: 172.17.20.103
  ports:
  - name: http-metrics
    port: 10251
    protocol: TCP

创建这个文件

kubectl apply -f repair-prometheus-scheduler-controller-manager.yaml

这些修改后就ok了

看下prometheus ui地址

root@guoguo-M5-Pro:/apps/k8s/kube-prometheus/manifests# kubectl get svc -n monitoring prometheus-k8s
NAME             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
prometheus-k8s   NodePort   10.99.157.9   <none>        9090:36141/TCP   157m
#如果不是NodePort模式 自己修改为 NodePort模式

Kubenretes K8s Prometheus监控二进制安装的controller-manager和scheduler_kubernetes

既然动态修改了 我们也可以把源yaml文件也修改掉,防止以后出问题

vim kube-prometheus/manifests/kubernetes-serviceMonitorKubeControllerManager.yaml

#看好这个目录  是github下面的源码文件  kube-prometheus

      sourceLabels:
      - __name__
    - action: drop
      regex: etcd_(debugging|disk|request|server).*
      sourceLabels:
      - __name__
    port: http-metrics #改为http
      #port: https-metrics
      #scheme: https
    scheme: http  #改为http
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: app.kubernetes.io/name
  namespaceSelector:
    matchNames:
    - kube-system
vim kube-prometheus/manifests/kubernetes-serviceMonitorKubeScheduler.yaml
#看好这个目录  是github下面的源码文件  kube-prometheus
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app.kubernetes.io/name: kube-scheduler
  name: kube-scheduler
  namespace: monitoring
spec:
  endpoints:
  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    interval: 30s
    port: http-metrics #改为http
      #port: https-metrics
      #scheme: https
    scheme: http #改为http
    tlsConfig:
      insecureSkipVerify: true
  jobLabel: app.kubernetes.io/name
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
      app.kubernetes.io/name: kube-scheduler

这俩修改完 就算 再次apply 也不怕了