因为我们是二进制安装的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@master01 manifests]# pwd
/data/aqsc_k8s_yaml/kube-prometheus/kube-prometheus-0.8.0/manifests
[root@master01 manifests]# mkdir svc-endpoint/
# 创建个单独的目录[root@master01 manifests]# vim svc-endpoint/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 #这个端口号需要edit到 controller-manager的pod 搜索关键字metrics 或者port查看到端口号
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: 10.1.19.51 #Mater地址
- ip: 10.1.19.52
- ip: 10.1.19.53
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: 10.1.19.51 #Mater地址
- ip: 10.1.19.52
- ip: 10.1.19.53
ports:
- name: http-metrics
port: 10251
protocol: TCP创建这个文件
kubectl apply -f repair-prometheus-scheduler-controller-manager.yaml这些修改后就ok了
看下prometheus ui地址
[root@master01 svc-endpoint]# kubectl get svc -n monitoring prometheus-k8s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-k8s NodePort 10.105.1.233 <none> 9090:32330/TCP 12h
#如果不是NodePort模式 自己修改为 NodePort模式![14-[信创]-kube-prometheus,监控二进制安装的controller-manager和scheduler_github](https://s2.51cto.com/images/blog/front/202505/d77e733716e17b52055954c5b95aba09ba0840.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=,x-oss-process=image/resize,m_fixed,w_1184)
既然动态修改了 我们也可以把源yaml文件也修改掉,防止以后出问题
vim manifests/kubernetes-serviceMonitorKubeControllerManager.yaml
#看好这个目录 是github下面的源码文件 kube-prometheussourceLabels:
- __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-systemvim manifests/kubernetes-serviceMonitorKubeScheduler.yaml
#看好这个目录 是github下面的源码文件 kube-prometheusapiVersion: 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 也不怕了
















