第十三章 九析带你轻松完爆 helm3 Prometheus

网友投稿 229 2022-10-30

第十三章 九析带你轻松完爆 helm3 Prometheus

本系列文章:第一章:九析带你轻松完爆 helm3 安装第二章:九析带你轻松完爆 helm3 公共仓库第三章:九析带你轻松完爆 helm3 私有仓库第四章:九析带你轻松完爆 helm3 chart第五章:九析带你轻松完爆 helm3 release第六章:九析带你轻松完爆 helm3 gitlab第七章:九析带你轻松完爆 helm3 nginx-ingress第八章:九析带你轻松完爆 helm3 gitlab nfs第九章:九析带你轻松完爆 helm3 nexus第十章:九析带你轻松完爆 helm3 heapster第十一章:九析带你轻松完爆 helm3 kubernetes-dashboard第十二章:九析带你轻松完爆 helm3 harbor第十三章:九析带你轻松完爆 helm3 prometheus

目录

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

10 后记

10.1 安装 nginx-ingress

10.2 service type 变为 ClusterIP

10.3 编写 Ingress

10.4 创建 ingress

10.5 访问 prometheus

1 前言

本文采用 helm v3.0.0;k8s v1.16.3。

2 下载 Prometheus

helm 搜索 Prometheus:

helm  search repo prometheus

helm 下载解压 Prometheus:

helm fetch stable/prometheustar -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 修改为 extensions/v1beta1:

4.5 验证 prometheus 安装

如果执行安装后,显示如下内容:

执行如下操作语句,如果出现如下结果,则说明安装成功:

helm list -n prometheus

但安装成功,并不代表运行成功。还需要做进一步的配置。

5 安装 nfs

如何安装 nfs 服务器,请参考本人《轻松完爆 nfs 安装》,不用担心,简单到爆,让你分分钟轻松完爆。

mkdir -p /data/nfs/prometheus/2gmkdir -p /data/nfs/prometheus/8gchmod 777 -R /data/nfs/prometheussystemctl 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: v1kind: PersistentVolumemetadata:    name: prometheus-2gspec:    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: v1kind: PersistentVolumemetadata:    name: prometheus-8gspec:    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.yamlkubectl 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 轻松完爆。

10 后记

如果你跟我一样,喜欢优雅的技术,而不喜欢 NodePort 方式,想使用 Ingress 通过自定义域名来访问 Prometheus,可以进行如下修改。

10.1 安装 nginx-ingress

使用 ingress 前,必须确保 nginx-ingress 已安装,安装详情请参考本人《helm3 安装 nginx-ingress》,确保 nginx-ingress 安装方式为宿主机网络(即:hostNetwork=true)。

10.2 service type 变为 ClusterIP

kubectl edit svc -n prometheus prometheus-prometheus-server

10.3 编写 Ingress

创建 ingress 资源文件 prometheus-ingress.yaml :

apiVersion: extensions/v1beta1kind: Ingressmetadata:    annotations:        kubernetes.io/ingress.class: nginx        kubernetes.io/tls-acme: "true"    labels:        app: prometheus-ingress        name: prometheus-ingress        namespace: prometheusspec:    rules:    - host: jiuxi.prometheus.org        paths:        - backend:            serviceName: prometheus-prometheus-server            servicePort: 9090           path: /

10.4 创建 ingress

kubectl apply -f prometheus-ingress.yaml

10.5 访问 prometheus

用浏览器打开  /etc/hosts 文件,添加域名解析记录,确保 IP 是 nginx-ingress pod 所在主机的 IP,这里容易搞错,切记):

自此,helm3 轻松完美完爆 prometheus。你可以长吁一口气,然后大声尖叫了。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于CH7004视频编码器的VGA接口设计
下一篇:特斯拉的快充系统充电接口电路设计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~