首页 > 其他分享 >15.9 grafana-deployment-yaml讲解

15.9 grafana-deployment-yaml讲解

时间:2024-09-24 14:26:32浏览次数:10  
标签:name 15.9 端口 grafana port yaml deployment spec metadata


本节重点介绍 :

  • grafana yaml讲解

grafana 需要的pv

  • 对应的路径为 /var/lib/grafana,主要存放的内容有
  • 本地sqlit db存放 grafana.db
  • 本地插件
  • 本地告警截图
  • yaml如下
---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: grafana-storageclass
  local:
    path: /data/grafana
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-node01

grafana-storageclass

  • WaitForFirstConsumer 延迟挂载
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: grafana-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: grafana-storageclass
  resources:
    requests:
      storage: 1Gi

对外暴露服务的nodeport

---
apiVersion: v1
kind: Service
metadata:
  name: grafana-node-port
  labels:
    name: grafana-node-port
spec:
  type: NodePort      #这里代表是NodePort类型的
  ports:
  - port: 80          #这里的端口和clusterIP 对应,即80,供内部访问。
    targetPort: 3000  #端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081
    protocol: TCP
    nodePort: 30000   # 所有的节点都会开放此端口,此端口供外部调用。
  selector:
    app: grafana           #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。

grafana deployment

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        supplementalGroups:
        - 0
      containers:
        - name: grafana
          image: grafana/grafana:7.5.2
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              name: http-grafana
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /robots.txt
              port: 3000
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 2
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            tcpSocket:
              port: 3000
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 250m
              memory: 750Mi
          volumeMounts:
            - mountPath: /var/lib/grafana
              name: grafana-pv
      volumes:
        - name: grafana-pv
          persistentVolumeClaim:
            claimName: grafana-pvc
  • 就绪探针使用 /robots.txt
  • 存活探针使用 tcp 3000端口的检测
  • securityContext.fsGroup= 472 表示允许id=472的 用户组使用卷
  • supplementalGroups:0 控制容器可以添加的组 ID

完整的grafana deployment yaml如下

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: grafana-storageclass
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: grafana
  name: grafana
spec:
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      securityContext:
        fsGroup: 472
        supplementalGroups:
        - 0
      containers:
        - name: grafana
          image: grafana/grafana:7.5.2
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              name: http-grafana
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /robots.txt
              port: 3000
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 2
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            tcpSocket:
              port: 3000
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 250m
              memory: 750Mi
          volumeMounts:
            - mountPath: /var/lib/grafana
              name: grafana-pv
      volumes:
        - name: grafana-pv
          persistentVolumeClaim:
            claimName: grafana-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: grafana-node-port
  labels:
    name: grafana-node-port
spec:
  type: NodePort      #这里代表是NodePort类型的
  ports:
  - port: 80          #这里的端口和clusterIP 对应,即80,供内部访问。
    targetPort: 3000  #端口一定要和container暴露出来的端口对应,nodejs暴露出来的端口是8081,所以这里也应是8081
    protocol: TCP
    nodePort: 30000   # 所有的节点都会开放此端口,此端口供外部调用。
  selector:
    app: grafana           #这里选择器一定要选择容器的标签,之前写name:kube-node是错的。
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: grafana-storageclass
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

---

apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana-pv
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: grafana-storageclass
  local:
    path: /data/grafana
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-node01

本节重点总结 :

  • grafana yaml讲解


标签:name,15.9,端口,grafana,port,yaml,deployment,spec,metadata
From: https://blog.51cto.com/moonfdd/12099422

相关文章

  • cloud run job yaml file
    在GoogleCloudRun中,CloudRunJobs允许你运行一次性任务。下面是一个简单的CloudRunJob的YAML文件示例,它可以帮助你定义一个Job。这个文件将定义一个Job运行时的镜像、任务个数和执行参数等。CloudRunJobYAML示例yaml复制代码apiVersion:run.googleapis.co......
  • 从零开始掌握 Kubernetes:Pod 和 Deployment 的幕后故事
     1.引言在如今的技术世界中,随着微服务架构的广泛应用和云原生理念的兴起,应用程序的开发、部署和管理发生了翻天覆地的变化。容器技术的出现使得开发者可以轻松地将应用及其所有依赖打包在一个轻量级、可移植的容器中,这种方式大大提升了应用的部署效率和一致性。然而,随着应......
  • D22 kubernetes 工作负载资源对象-Deployment{应用回滚、应用扩缩容、应用下线、应用
    1、应用回滚简介 在滚动更新过程中,如果新版本的pod启动失败或者已升级完成,但新版本中存在bug,则可以选择回滚到之前的可用版本。‘kubectlrollout‘命令可以方便的执行回滚和其他滚动更新管理,该命令支持Deployment、DaemonSet和statefulset资源查看博客网站的历史版本[root@......
  • 在k8s中,客户端访问服务的链路流程,ingress--->service--->deployment--->pod--->container
                                                                图片来源:自己画的ingress是一个API资源。客户端访问ingress的不同urlingress给客户端返回不同的服务。就和nginx反向代理服务器一样。根据......
  • k8s官网下载模板yaml方法
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。Kubernetes官网下载模板yaml方法指南概述Kubernetes(简称K8s)是一个开源的容器编排平台,可以实现容器化应用的部署、扩展和管理。Kubernetes官网提供了丰富的资源和文档,其中包括各种示例的模板yaml文件,用于快速部署应用和配置资源。......
  • OPEA Deployment
    RKE2deploymentK8sexportKUBECONFIG=/etc/rancher/rke2/rke2.yamlmkdir-p~/.kube/sudocp/etc/rancher/rke2/rke2.yaml~/.kube/configsudochown$USER:$USER~/.kube/config#https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/curl-LO"......
  • YAML 与 JSON、XML 比较及 YAML 使用最佳实践
    YAML(YAMLAin'tMarkupLanguage的递归缩写)是一种人类可读的数据序列化格式,通常用于配置文件、数据交换和设置管理。它简洁且易于读写,尤其适合在编程语言之间传递配置数据。以下是一些YAML的基本概念和语法示例:基本语法键值对:name:JohnDoeage:30嵌套:person:name:JohnDoe......
  • vue3 使用 codemirror 实现yaml文件的在线编辑
    vue3使用codemirror实现yaml文件的在线编辑1.使用情形2.插件下载3.封装yaml编辑器组件4.父组件使用5.js-yaml使用6.备注1.使用情形需要对yaml文件进行在线编辑,并且进行基础格式验证2.插件下载vue-codemirror在线代码编辑器插件js-yaml用于转换jso......
  • 使用kube-prometheus部署k8s监控---超详细(Kubernetes Deployment of Kubernetes Moni
    ......
  • spring boot 项目报错找不到compose.yaml文件
    springboot的项目引用了spring-boot-docker-compose,运行时没问题,但是将该项目放到了一个父项目中作为一个module后,在idea里直接运行的话会报错找不到compose.yaml文件,因为idea试图去父项目的路径下找。如果直接在子项目的路径里运行:mvnspring-boot:run是没问题的,可以启动。......