目录
- 导航
- 前言
- 技术支持
- 相关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,输入用户名密码后看到以下内容即证明部署成功(数据不同属于正常现象)。