kube-prometheus的现状
大家知道prometheus已经成为k8s云原生体系越来越倚重的监控告警系统,prometheus虽然监控功能在云原生体系下有相当大的优势,但是其部署组件较多,又颇为复杂,这时候,kube-prometheus的全家桶功能给大家解决了部署上的难题,覆盖了常用的监控组件、告警组件及监控模版;但也有很多东西需要我们进一步完善,例如告警模板的自定义、监控数据的持久化存储、grafana模版和数据的持久化存储、阈值的调整等等;目前我们先说说grafana持久化。
grafana持久化
grafana作为kube-prometheus全家桶中的一员,对于数据的可视化展示提供了帮助,但其并没有实现持久化的存储,这样带来的后果是,你如果想安装一个pannel,或者重启了grafana,如果没有备份的话,就会导致你所有的模版数据随着pod的销毁而功亏一篑,因为我们的k8s是托管在腾讯云,所以以腾讯云k8s为例,解决这个持久化问题。
动态存储供应storageclass
讲到持久化,很多人会习惯用PV/PVC,创建一个pv,再定义并绑定pvc,再pod挂载,如果你有很多项目需要持久存储的话,就会需要创建很多个pv,这时候storageclass就出来,它提供一种自动创建PV的机制,相当于pv的模板,腾讯云提供了默认的存储插件,下面看示例:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: k8s-grafana
provisioner: cloud.tencent.com/qcloud-cbs
parameters:
paymode: POSTPAID
type: CLOUD_PREMIUM
zone: "200004"
- provisioner为腾讯云提供的存储插件,我选择的是云硬盘
- paymode: POSTPAID 按量计费
- zone: 用于指定可用区
PVC
PVC是用来描述希望使用什么样的或者说是满足什么条件的存储,它的全称是Persistent Volume Claim,也就是持久化存储声明
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: k8s-grafana-claim
namespace: monitoring
annotations:
volume.beta.kubernetes.io/storage-class: "k8s-grafana"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
注意:volume.beta.kubernetes.io/storage-class要保持和第一步storageclass的名字一致,这样才能绑定上
其它的访问模式和资源申请就不用多说了
pod中如何使用
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: grafana
name: grafana
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- image: grafana/grafana:6.4.3
name: grafana
ports:
- containerPort: 3000
name: http
volumeMounts:
- mountPath: /var/lib/grafana:Z
name: grafana-storage
readOnly: false
- name: grafana-storage
persistentVolumeClaim:
claimName: k8s-grafana-claim
persistentVolumeClaim的名字要跟上面建的pvc相关联。
kubectl apply -f grafana-deployment.yaml应用后,添加几个模板上次测试一下,发现已经不会丢数据了
网友评论