24. 安装使用grafana

一、安装grafana
1. 准备一块存储

准备一块存储供grafana容器挂载,以持久化自己的数据,否则当grafana容器重启或漂移时,原数据将会丢失。
此处我们通过nfs做一个网络磁盘(nfs的使用此处不进行扩展)
我们在172.10.10.100节点上创建nfs磁盘
mkdir /data/K8SVOLUMES
vi /etc/exports

/data/K8SVOLUMES   *(rw,sync,no_wdelay,no_root_squash)

no_root_squash:当登录 NFS 主机使用共享目录的使用者是 root 时,其权限将被转换成为匿名使用者,通常它的 UID 与 GID,都会变成 nobody 身份

systemctl restart nfs
检查

➜  ~ showmount 172.10.10.100 -e
Export list for 172.10.10.100:
/data/K8SVOLUMES *
/data/NFS_SHARE  172.10.10.0/24
2. 创建PV和PVC资源
  • PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。
  • PVC 的全称是:PersistentVolumeClaim(持久化卷声明),PVC 是用户存储的一种声明,PVC 和 Pod 比较类似,Pod 消耗的是节点,PVC 消耗的是 PV 资源,Pod 可以请求 CPU 和内存,而 PVC 可以请求特定的存储空间和访问模式。对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用 PVC 即可。

grafana-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana
spec:
  capacity:
    storage: 1Gi
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    server: 172.10.10.100
    path: /data/K8SVOLUMES
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana
  namespace: kube-mon
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

namespace: kube-mon 在前面搭建prometheus时创建了

3. 创建grafana k8s资源

grafana-dp.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  namespace: kube-mon
  labels:
    app: grafana
spec:
  revisionHistoryLimit: 5
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        runAsUser: 472
      containers:
      - image: harbor.hzwod.com/public/grafana:7.5.5
        name: grafana
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3000
          name: grafana
        env:
        - name: GF_SECURITY_ADMIN_USER
          value: admin
        - name: GF_SECURITY_ADMIN_PASSWORD
          value: admin
        readinessProbe:
          failureThreshold: 10
          httpGet:
            path: /api/health
            port: 3000
            scheme: HTTP
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 30
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /api/health
            port: 3000
            scheme: HTTP
          initialDelaySeconds: 10
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          limits:
            cpu: 100m
            memory: 256Mi
          requests:
            cpu: 100m
            memory: 256Mi
        volumeMounts:
        - mountPath: /var/lib/grafana
          subPath: grafana
          name: storage
#     需配置pvc资源配合使用挂载
      volumes:
      - name: storage
        persistentVolumeClaim:
          claimName: grafana
4. 创建svc访问grafana

grafana-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: kube-mon
  labels:
    app: grafana
spec:
  type: LoadBalancer
  selector:
    app: grafana
  ports:
    - port: 80
      targetPort: 3000
      nodePort: 8002
二、配置prometheus数据源
  • 查看prometheus集群服务
    在这里插入图片描述

  • grafana配置数据源
    http://prometheus:9090 这里的prometheus是coreDns中的域名,若非同namespace下则域名需添加上namespace
    在这里插入图片描述当然也是能添加哎其他数据源的,如前几张我们搭建heapster时用的influxDB

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐