目录

  • 导航
  • 前言
  • 技术支持
  • 相关yaml文件
  • minio-service.yaml
  • minio-service-web.yaml
  • minio.yaml
  • 部署
  • 验证


导航

进阶之路:从零到一在k8s上部署高可用prometheus —— 总览进阶之路:从零到一在k8s上部署高可用prometheus —— 准备工作进阶之路:从零到一在k8s上部署高可用prometheus —— exporter进阶之路:从零到一在k8s上部署高可用prometheus —— consul进阶之路:从零到一在k8s上部署高可用prometheus —— prometheus-operator进阶之路:从零到一在k8s上部署高可用prometheus —— prometheus进阶之路:从零到一在k8s上部署高可用prometheus —— alertmanager进阶之路:从零到一在k8s上部署高可用prometheus —— minio进阶之路:从零到一在k8s上部署高可用prometheus —— thanos receive、thanos query

前言

经过前面几章的部署,我们已经搭建起了一套可用的监控平台(没错,prometheus + alertmanager的组合已经可以实现监控的基本要求了)。但是我们之前部署的三节点prometheus只是三个采集同样数据的离散节点而已,各个节点之间没有关联,困扰我们的单点故障问题并没有解决,接下来我们将通过thanos receive着手解决这一问题。
thanos receive的热数据是保存在本地的tsdb里的,但是冷数据目前只支持通过对象存储来持久化,所以本章我们先来通过minio提供一个简单的对象存储服务。

技术支持

有的小伙伴在按照文章操作时遇到了各种各样奇奇怪怪的问题,私信上解决问题的效率又比较低。大家可以试试用AI解决自己的问题,既学到了新东西又解决了问题美滋滋~目前我用下来最好用的还是GPT,3.5模型足以解决各类编程问题了,但是使用有一定门槛(魔法上网+海外支付)。如果没有条件的小伙伴可以试试这个,送的100次对话足够解决问题了。

相关yaml文件

minio-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: minio-ifcloud
spec:
  type: ClusterIP
  ports:
    - name: api
      port: 9000
      targetPort: 9000
      protocol: TCP
    - name: console
      port: 9001
      targetPort: 9001
      protocol: TCP
  selector:
    app: minio-ifcloud

minio-service-web.yaml

kind: Service
apiVersion: v1
metadata:
  name: minio-ifcloud-web
  labels:
    app: minio-ifcloud-web
spec:
  ports:
    - name: http-web
      protocol: TCP
      port: 9001
      targetPort: 9001
      nodePort: 30006
  selector:
    app: minio-ifcloud
  type: NodePort
  sessionAffinity: None

minio.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: minio-ifcloud
spec:
  selector:
    matchLabels:
      app: minio-ifcloud
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: minio-ifcloud
    spec:
      containers:
      - name: minio-ifcloud
        image: minio/minio
        command:
        - /bin/sh
        - -c
        - "mkdir -p /storage/thanos && /usr/bin/minio server /storage --console-address ':9001'"
        env:
        - name: MINIO_ACCESS_KEY
          value: "minio" # 默认用户名
        - name: MINIO_SECRET_KEY
          value: "Zhu@88jie" # 默认密码
        ports:
        - name: api
          containerPort: 9000
          protocol: TCP
        - name: console
          containerPort: 9001
          protocol: TCP
        volumeMounts:
        - name: storage
          mountPath: "/storage"
      volumes:
      - name: storage
        emptyDir: {}

部署

# 将以上文件放在目录/yaml/minio下
# 执行以下命令验证yaml文件正确性
kubectl apply -f /yaml/minio -n prom-ha --dry-run=client

# 验证无误后执行以下命令创建相关k8s资源
kubectl apply -f /yaml/minio -n prom-ha

验证

部署完成后访问http://192.168.25.80:30006,输入用户名密码后看到以下内容即证明部署成功(数据不同属于正常现象)。

k8s 部署rabitmq nfs k8s 部署minio_高可用