生产环境k8s中使用helm部署prometheus+grafana监控k8s集群中相关node和pod

一、安装客户端helm

1.这里介绍两种方式安装helm;

a.通过过压缩包进行安装

下载 Helm :

https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz

解压 Helm
tar -zxvf helm-v3.0.0-linux-amd64.tar.gz
复制客户端执行文件到 bin 目录下
cp linux-amd64/helm /usr/local/bin/

b.安装方式二(脚本安装)

下载执行脚本:

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 > get_helm.sh

修改脚本权限

chmod 700 get_helm.sh

安装:

./get_helm.sh

注意:如果你k8s集群里面已经安装了helm可以忽略以上步骤

2、添加新的仓库地址

helm repo add stable https://kubernetes-charts.storage.googleapis.com

查看本地已添加的存储库

helm search repo stable

二、使用helm部署prometheus+grafana

拉取prometheus镜像:helm pull stable/prometheus-operator

tar zxvf prometheus-operator-8.3.2.tgz
cd prometheus-operator/
安装 CRD
kubectl apply -f crds/

创建monitoring名称空间

kubectl create namespace monitoring

修改相关配置文件暴露grafana端口对外提供访问:

cd /root/k8s/prometheus-operator/charts/grafana
vim values.yaml 找到以下内容添加:
service:
type: NodePort #需要添加的
port: 80
targetPort: 3000
nodePort: 30033 需要填的的端口

修改Prometheus监听集群Etcd端口

cd /root/k8s/prometheus-operator/charts/grafana
vim values.yaml 找到以下内容添加:
service:
type: NodePort #需要添加的
port: 80
targetPort: 3000
nodePort: 30033 需要填的的端口


cd /root/k8s/prometheus-operator
vim values.yaml
#修改Prometheus监听集群Etcd端口,文件的741行
...
service:
port: 2381 #默认为2379,修改为2381
targetPort: 2381 #默认为2379,修改为2381
# selector:
# component: etd

....

修改配置文件暴露Prometheus对外访问端口

#Prometheus对外端口默认是30090,文件的1226行
#网络类型默认是clusterIP,文件的1234行

...
nodePort: 30090 #默认端口
## Loadbalancer IP
## Only use if service.type is "loadbalancer"
loadBalancerIP: ""
loadBalancerSourceRanges: []
## Service type
##
type: NodePort #默认为clusterIP,修改为NodePort
...

修改etcd.yamlmetrics-urls的监听地址:
vim /etc/kubernetes/manifests/etcd.yaml
改为: - --listen-metrics-urls=http://0.0.0.0:2381

修改完成后重启更新下etcd的pod:

kubectl apply -f /etc/kubernetes/manifests/etcd.yaml

安装Prometheus-Operator
helm install prometheus --namespace=monitoring ./ --set prometheusOperator.createCustomResource=false

修改配置后更新:
helm upgrade prometheus ./ -nmonitoring
helm upgrade prometheus ./ -nmonitoring
#Grafana默认密码是:prom-operator
#可以在values.yaml文件里修改:adminPassword: prom-operator
查看历史更新记录
helm history prometheus -nmonitoring

搭建后如果出现monitoring/prometheus-prometheus-oper-kube-proxy/0 (0/3 up) 无法监控到的问题,需要更改kube-proxy默认的configmap

#查看kube-system名称空间下的configmap
kubectl get cm -nkube-system
NAME DATA AGE
coredns 1 22d
extension-apiserver-authentication 6 22d
kube-flannel-cfg 2 22d
kube-proxy 2 22d
kubeadm-config 2 22d
kubelet-config-1.17 1 22d
#修改configmap
kubectl edit cm/kube-proxy -nkube-system
...
kind: KubeProxyConfiguration
metricsBindAddress: "0.0.0.0:10249" #10249是默认的proxy metrics监听端口,可能会发生此配置为空的情况,这时需要手动修改为0.0.0.0:10249
mode: ""
nodePortAddresses: null
...

部署完成后使用以下命令查看相关pod启动情况:

[root@k8s-master prometheus-operator]# kubectl get pod -A | grep monitoring

查看grafana以及prometheus的service启动情况:

kubectl get svc -A |grep  monitoring

注意:这里面没有通过给相关pod设置nodeSelector节点标签使用其调度到固定的node上,所以使用每个节点IP地址加上相关端口号都能进行访问;

 登录http://192.168.111.158:30033 可以查看到相关node/pod等相关监控信息

原文地址:https://www.cnblogs.com/abner123/p/13155543.html