kube-prometheus问题小计

欢迎加入本站的kubernetes技术交流群,QQ群号:450203387,微信群:加Blue_L。


最近再Kubernetes集群上部署kube-prometheus套件遇到了一点小问题,再次记录一下。

按照官方的快速指引部署到集群中后,发现没有部署custom-metrics和external-metrics服务,而正好需要使用这两个功能做自动扩缩容,因此按照该文档进行自定义部署,但是这里遇到了一些小问题。

首先按照文档中的指引,安装jbjsonnetgojsontoyaml这几个命令:

# 此处静态编译为了拿到任何地方都能直接用
yum install -y glibc-devel
go install -a -ldflags='-linkmode external -extldflags -static' github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
go install -a github.com/google/go-jsonnet/cmd/jsonnet@latest
go install -a github.com/brancz/gojsontoyaml@latest
mkdir bin/
cp ~/go/bin/{gojsontoyaml,jsonnet,jb} bin/
export PATH=`pwd`/bin:$PATH

jb init  # Creates the initial/empty `jsonnetfile.json`
jb install github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus@release-0.9
# jb update

# 下载对应版本的build.sh和example.jsonnet文件
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.9/example.jsonnet -O example.jsonnet
$ wget https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.9/build.sh -O build.sh
# 编辑example.jsonnet,去掉被注释掉的custom metrics和external metrics部分
sh build.sh example.jsonnet
# 上面命令会重新生成manifests目录
kubectl apply -f manifests/setup
kubectl apply -f manifests

遇到的问题如下:

一丶无法获取pods的cpu指标,通过打开prometheus的日志发现,访问kubelet的10250端口没权限(应该是和集群配置有关),通过修改下面文件,将kubelet监控的https-metrics改为http-metrics,这样会访问kubelet的10250端口获取cadvisor指标。

# 将serviceMonitorKubelet监控中的https-metrics改为http-metrics
./vendor/github.com/prometheus-operator/kube-prometheus/jsonnet/kube-prometheus/components/k8s-control-plane.libsonnet

二丶获取Pod的指标无权限,因为默认生成的prometheus的clusterrole中缺少了相关权限

# 将prometheus的clusterrole增加了权限
./vendor/kube-prometheus/components/prometheus.libsonnet

三丶在example.jsonnet中可自定义镜像配置(如下),但是grafana部分使用了一个jsonnet中的std.split函数,使用“:”分割,导致生成的grafana镜像配置丢失了后面的端口和路径,目前手动修改manifests中的grafana deployment解决:

    values+:: {
      common+: {
        namespace: 'monitoring',
        images: {
          alertmanager: 'mydomain.com:1234/prometheus/alertmanager:v' + $.values.common.versions.alertmanager,
          blackboxExporter: 'mydomain.com:1234/prometheus/blackbox-exporter:v' + $.values.common.versions.blackboxExporter,
          grafana: 'mydomain.com:1234/grafana/grafana:v' + $.values.common.versions.grafana,
          kubeStateMetrics: 'hmydomain.com:1234/kube-state-metrics/kube-state-metrics:v' + $.values.common.versions.kubeStateMetrics,
          nodeExporter: 'mydomain.com:1234/prometheus/node-exporter:v' + $.values.common.versions.nodeExporter,
          prometheus: 'mydomain.com:1234/prometheus/prometheus:v' + $.values.common.versions.prometheus,
          prometheusAdapter: 'mydomain.com:1234/prometheus-adapter/prometheus-adapter:v' + $.values.common.versions.prometheusAdapter,
          prometheusOperator: 'mydomain.com:1234/prometheus-operator/prometheus-operator:v' + $.values.common.versions.prometheusOperator,
          prometheusOperatorReloader: 'mydomain.com:1234/prometheus-operator/prometheus-config-reloader:v' + $.values.common.versions.prometheusOperator,
          kubeRbacProxy: 'mydomain.com:1234/brancz/kube-rbac-proxy:v' + $.values.common.versions.kubeRbacProxy,
          configmapReload: 'mydomain.com:1234/jimmidyson/configmap-reload:v' + $.values.common.versions.configmapReload,
        },
      },

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注