问题描述
我正在使用 pushgateway
公开来自短期批处理作业的指标。
目前,pushgateway 实例是在裸机上启动的,我在其中安装了一个 docker 卷,以便在容器重新启动的情况下保留指标(与 --persistence.file
参数结合使用)。
这里是用于运行容器的 docker-compose.yml
文件的摘录:
pushgateway:
image: prom/pushgateway:v1.2.0
restart: unless-stopped
volumes:
- pushgw-data:/data
ports:
- "${PUSHGW_PORT:-9091}:9091"
command: --persistence.file="/data/metric.store"
我要迁移到没有持久卷但配备了 s3 兼容对象存储的(私有)kubernetes 集群。
从 github 上的 this issue 似乎可以将 s3 定位为检查点,但如果没有进一步的输入,我不知道如何实现这一点,这是我通过在网上搜索信息找到的最好方法。>
谁能指出我正确的方向?
解决方法
所以最后 https://serverfault.com/questions/976764/kubernetes-run-aws-s3-sync-rsync-against-persistent-volume-on-demand 为我指明了正确的方向。
这是 $notifiable
描述符的摘录,它按预期工作:
deployment.yaml
注意 pushgateway 的 docker 镜像的入口点覆盖。在我的情况下,我将 10 秒延迟开始,您可能需要调整延迟以满足您的需要。这个延迟是必要的,因为 pushgateway 容器将比 sidecar 启动得更快(我想也是因为与 s3 的网络交换)。
如果 pushgateway 在不存在度量标准存储文件时启动,则不会使用/考虑它。但更糟糕的是,当您第一次向 pushgateway 发送数据时,它会覆盖该文件。此时,来自 sidecar 容器的“同步”也将覆盖原始“副本”,因此请注意并确保在试验此延迟值之前备份指标文件。