因为我们是二进制安装的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模式
既然动态修改了 我们也可以把源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 也不怕了