kubernetes中部署kube-prometheus项目解决ControllerManager与Scheduler无法监控问题

文章转载自:https://www.kococ.cn/20210302/cid=697.html

一、问题描述

在部署 kube-prometheus 到 kubernetes 集群中总会遇到一个问题,当 pod 都正常运行的时候,却发现 kube-controller-manager 和 kube-scheduler 并没有正常被监控到,即使是新建了新的 SVC 与两个 Pod 进行绑定但还是不行。

原因如下

版本 1.18 + 现在使用更安全的 https 端口 10257,并默认禁用 http。不幸的是,kube-controller-manager 和 kube-scheduler 都使用了 --secure-port 绑定到 127.0.0.1 而不是 0.0.0.0

解决方法:

更新 /etc/kubernetes/manifests/ 中的清单以将 --bind-address=0.0.0.0 用于调度程序和控制器管理器,将使用正确的绑定地址重新启动 Pod,但是这些设置将无法生存 kubeadm 升级

二、新增、更改 KubeControllerManager 配置

新增 service.yaml

# vim prometheus-kubeControllerManagerService.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-controller-manager
  labels:
    k8s-app: kube-controller-manager # 这个需要跟对应的monitor里的信息保持一致,新版的是 app.kubernetes.io/name: kube-controller-manager
spec:
  selector:
    component: kube-controller-manager
  ports:
  - name: https-metrics
    port: 10257 #端口要和你describe到的ControllerManager的Pod端口信息一致
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
将--bind-address=127.0.0.1 改为 --bind-address=0.0.0.0

由于 kube-controller-manager 是以静态 Pod 运行在集群中的,所以只要修改静态 Pod 目录下对应的 yaml 文件即可。等待一会后,对应服务会自动重启

三、新增、更改 KubeScheduler 配置

新增 service.yaml

# vim kube-prometheus/manifests/prometheus-serviceMonitorKubeScheduler-service.yaml
apiVersion: v1
kind: Service
metadata:
  namespace: kube-system
  name: kube-scheduler
  labels:
    k8s-app: kube-scheduler # 这个需要跟对应的monitor里的信息保持一致,新版的是 app.kubernetes.io/name: kube-scheduler
spec:
  selector:
    component: kube-scheduler
  ports:
  - name: https-metrics
    port: 10259 #端口要和你describe到的ControllerManager的Pod端口信息一致
vim /etc/kubernetes/manifests/kube-scheduler.yaml
将--bind-address=127.0.0.1 改为 --bind-address=0.0.0.0

由于 kube-scheduler 是以静态 Pod 运行在集群中的,所以只要修改静态 Pod 目录下对应的 yaml 文件即可。等待一会后,对应服务会自动重启

四、结果图

posted @ 2022-06-07 11:49  哈喽哈喽111111  阅读(756)  评论(0编辑  收藏  举报