一、安装客户端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等相关监控信息