本系列文章:node
第一章:九析带你轻松完爆 helm3 安装
第二章:九析带你轻松完爆 helm3 公共仓库nginx第三章:九析带你轻松完爆 helm3 私有仓库git
第四章:九析带你轻松完爆 helm3 chartapi
第五章:九析带你轻松完爆 helm3 release浏览器
第六章:九析带你轻松完爆 helm3 gitlab服务器
第七章:九析带你轻松完爆 helm3 nginx-ingressapp
第八章:九析带你轻松完爆 helm3 gitlab nfside
第九章:九析带你轻松完爆 helm3 nexusgitlab
第十章:九析带你轻松完爆 helm3 heapsterfetch
目录
1 前言
2 下载 Prometheus
3 建立 prometheus 命名空间
4 安装 prometheus
4.1 修改 deployment apiVersion
4.2 添加 daemonset selector
4.3 添加 deployment selector
4.4 修改 ingress apiVersion
4.5 验证 prometheus 安装
5 安装 nfs
6 建立 pv
7 验证 prometheus
8 修改 service type
9 访问 prometheus
1 前言
本文采用 helm v3.0.0;k8s v1.16.3。
2 下载 Prometheus
helm 搜索 Prometheus:
helm search repo prometheus
helm 下载解压 Prometheus:
helm fetch stable/prometheus
tar -zxvf prometheus-5.4.0.tgz
3 建立 prometheus 命名空间
kubectl create ns prometheus
4 安装 prometheus
第一个 prometheus 是 helm release 名,第二个是命名空间,第三个是 prometheus 本地解压缩目录。
helm install prometheus -n prometheus prometheus
4.1 修改 deployment apiVersion
若是在安装过程当中有以下错误:
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Deployment" in version "extensions/v1beta1"
执行以下语句轻松完爆:
grep -irl 'extensions/v1beta1' prometheus/ | xargs sed -i 's#extensions/v1beta1#apps/v1#g'
4.2 添加 daemonset selector
若是再次安装有以下错误:
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(DaemonSet.spec): missing required field "selector" in io.k8s.api.apps.v1.DaemonSetSpec
编辑 templates/node-exporter-daemonset.yaml 文件,添加以下内容:
4.3 添加 deployment selector:
再次安装若是报以下错:
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(Deployment.spec): missing required field "selector" in io.k8s.api.apps.v1.DeploymentSpec
编辑 templates/alertmanager-deployment.yaml 文件,添加以下内容:
编辑 templates/kube-state-metrics-deployment.yaml 文件,添加以下内容:
编辑 templates/pushgateway-deployment.yaml 文件,添加以下内容:
编辑 templates/server-deployment.yaml 文件,添加以下内容:
4.4 修改 ingress apiVersion
再次安装若是报以下错:
Error: unable to build kubernetes objects from release manifest: unable to recognize "": no matches for kind "Ingress" in version "apps/v1"
编辑 templates/alertmanager-ingress.yaml 文件,将 apps/v1 修改成 extenstions/v1beta1:
4.5 验证 prometheus 安装
若是执行安装后,显示以下内容:
执行以下操做语句,若是出现以下结果,则说明安装成功:
helm list -n prometheus
但安装成功,并不表明运行成功。还须要作进一步的配置。
5 安装 nfs
如何安装 nfs 服务器,请参考本人《轻松完爆 nfs 安装》,不用担忧,简单到爆,让你分分钟轻松完爆。
mkdir -p /data/nfs/prometheus/2g
mkdir -p /data/nfs/prometheus/8g
chmod 777 -R /data/nfs/prometheus
systemctl restart nfs
6 建立 pv
安装完 nfs 后,查看 prometheus pvc:
kubectl get pvc -n prometheus
发现 pvc 处于 pending 状态,缘由在于并无可用的 pv 能够使用,须要手动建立 pv。
发现 pvc 的申请规格有 2 种,分别是 2Gi 和 8Gi。下面分别建立 pv 资源文件, 注意这里的 server 地址就是 nfs 服务器所在地址。
建立 pv-prometheus-2g.yaml 文件,内容以下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: prometheus-2g
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
server: 10.110.101.106
path: /data/nfs/prometheus/2g
建立 pv-prometheus-8g.yaml 文件,内容以下:
apiVersion: v1
kind: PersistentVolume
metadata:
name: prometheus-8g
spec:
capacity:
storage: 8Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
server: 10.110.101.106
path: /data/nfs/prometheus/8g
执行以下语句建立 pv:
kubectl apply -f pv-prometheus-2g.yaml
kubectl apply -f pv-prometheus-8g.yaml
查看 pvc 状态:
kubectl get pvc -n prometheus
自此,pvc 和 pv 已经关联。
7 验证 prometheus
查看 prometheus pod 运行状态,发现 prometheus-server 并无启动成功:
kubectl get pod -n prometheus
查看容器日志状态发现报以下错误:
err="Error loading config couldn't load configuration (--config.file=/etc/config/prometheus.yml): parsing YAML file /etc/config/prometheus.yml: yaml: line 160: mapping values are not allowed in this context"
解决方案:
kubectl edit configmap -n prometheus prometheus-prometheus-server
定位 “target_label: kubernetes_pod_namealerting:”
修改成:
修改完保存退出,而后删除 prometheus-prometheus-server pod,让控制器再从新生成新的 pod,从而读取修改过的 configmap 信息。再次查看整个 pod 状态,发现所有启动成功:
8 修改 service type
将 prometheus service type 修改成 NodePort 类型:
kubectl patch svc -n prometheus prometheus-prometheus-server -p '{"spec": {"type": "NodePort"}}'
kubectl get svc -n prometheus
9 访问 prometheus
打开浏览器,访问 prometheus-server,注意端口正确,本人是 30347:
自此,helm3 安装 prometheus 轻松完爆。