k8s部署mysql-exporter
时间: 2025-09-05 20:41:45 AIGC 浏览: 16
### 部署 MySQL Exporter 到 Kubernetes
为了在 Kubernetes 上成功部署 MySQL Exporter,可以遵循以下方法:
#### 准备工作
确保已安装并配置好 `kubectl` 和 Helm 客户端工具。另外,确认集群中有可用的 MySQL 实例。
#### 创建 Secret 存储敏感数据
由于连接到 MySQL 数据库通常需要用户名和密码等凭证信息,在此之前应该先创建一个包含这些凭据的秘密对象 (secret),这可以通过 `.docker/config.json` 的内容来实现[^1]。下面是一个 YAML 文件的例子用于定义 secret:
```yaml
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
type: Opaque
data:
username: <base64-encoded-username>
password: <base64-encoded-password>
```
注意:这里的 `<base64-encoded-username>` 和 `<base64-encoded-password>` 应替换为实际经过 base64 编码后的字符串表示形式。
#### 下载或构建 Prometheus MySQL Exporter 图像
如果打算直接拉取官方镜像,则不需要额外操作;但如果想要自定义某些参数或者使用特定版本的话,可能就需要自己动手制作 Dockerfile 并推送至私有仓库中去。
#### 使用 Deployment 资源管理应用实例
接下来编写 deployment.yaml 来描述如何运行 exporter 进程以及它所需要的环境变量设置:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: mysql-exporter
name: mysql-exporter-deployment
spec:
replicas: 1
selector:
matchLabels:
app: mysql-exporter
template:
metadata:
labels:
app: mysql-exporter
spec:
containers:
- envFrom:
- secretRef:
name: mysql-secret
args:
- "--config.my-cnf=/etc/mysql/my.cnf"
command:
- "/bin/mysqld_exporter"
image: "prom/mysqld-exporter:v0.12.1"
livenessProbe:
httpGet:
path: /metrics
port: 9104
name: mysqld-exporter
ports:
- containerPort: 9104
volumeMounts:
- mountPath: /etc/mysql/
name: config-volume
volumes:
- configMap:
defaultMode: 420
items:
- key: my.cnf
path: my.cnf
name: mysql-configmap
name: config-volume
---
apiVersion: v1
kind: Service
metadata:
labels:
app: mysql-exporter
name: mysql-exporter-service
spec:
ports:
- nodePort: 30001
port: 9104
protocol: TCP
targetPort: 9104
selector:
app: mysql-exporter
type: NodePort
```
上述配置文件不仅指定了容器启动所需的命令行选项,还设置了存活探针(liveness probe)以监控服务状态,并开放了一个 HTTP 接口供外部访问 metrics 数据。
#### 将资源清单应用于集群
保存上面两个 YAML 片段分别为 `secret.yaml`, `deployment.yaml`. 现在就可以利用 kubectl apply 命令将其提交给 API Server 处理了:
```bash
$ kubectl create namespace monitoring
$ kubectl apply -f deployment.yaml -n monitoring
```
这样就完成了整个过程!
阅读全文
相关推荐



















