本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
Thanos 是一个高可用的指标系统,可以添加到现有的 Prometheus 部署之上,提供跨所有 Prometheus 实例的全局查询视图。
Thanos 概述
商标说明:本软件列表由 Bitnami 打包。产品中提到的各个商标分别归各自公司所有,使用这些商标并不意味着任何关联或认可。
helm install my-release oci://registry-1.docker.io/bitnamicharts/thanos
如需在生产环境中使用 Thanos,可尝试 VMware Tanzu Application Catalog,这是 Bitnami 目录的商业版本。
自 2025 年 8 月 28 日起,Bitnami 将改进其公共目录,在新的 Bitnami Secure Images 计划 下提供精选的强化、安全聚焦的镜像。作为此过渡的一部分:
这些变更旨在通过推广软件供应链完整性和最新部署的最佳实践,提高所有 Bitnami 用户的安全态势。有关更多详细信息,请访问 Bitnami Secure Images 公告。
Thanos 适用于需要集中管理和查询多个 Prometheus 实例数据的环境,特别适合以下场景:
要使用发布名称 "my-release" 安装图表:
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/thanos
注意:您需要将占位符
REGISTRY_NAME和REPOSITORY_NAME替换为 Helm 图表注册表和仓库的引用。例如,对于 Bitnami,您需要使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
这些命令使用默认配置在 Kubernetes 集群上部署 Thanos。配置 部分列出了可以在安装过程中配置的参数。
提示:使用
helm list列出所有发布
此图表允许您安装多个 Thanos 组件,因此您可以部署如下架构:
+--------------+ +--------------+ +--------------+ | Thanos |----------------> | Thanos Store | | Thanos | | Query | | | Gateway | | Compactor | +--------------+ | +--------------+ +--------------+ push | | | +--------------+ alerts +--------------+ | | storages | Downsample & | Alertmanager | <----------| Thanos | <----| | query metrics | compact blocks | (*) | | Ruler | | | | +--------------+ +--------------+ | \/ | ^ | | +----------------+ | | push alerts +--------------|----> | MinIO® (*) | <---------+ | | | | +------------------------------+ | +----------------+ |+------------+ +------------+| | ^ || Prometheus |->| Thanos || <----------------+ | || (*) |<-| Sidecar (*)|| query | inspect |+------------+ +------------+| metrics | blocks +------------------------------+ | +--------------+ | Thanos | | Bucket Web | +--------------+
注意:标有 (*) 的组件由子图表(如 Bitnami MinIO® 图表)或外部图表(如 Bitnami kube-prometheus 图表)提供。
有关部署此架构的详细说明,请查看 集成 Thanos 与 Prometheus 和 Alertmanager 部分。
Bitnami 图表允许为图表部署内的所有容器设置资源请求和限制。这些在 resources 值内(检查参数表)。对于生产工作负载,设置请求至关重要,这些请求应根据您的具体用例进行调整。
为简化此过程,图表包含 resourcesPreset 值,该值根据不同的预设自动设置 resources 部分。在 bitnami/common 图表 中查看这些预设。但是,在生产工作负载中不建议使用 resourcesPreset,因为它可能无法完全适应您的特定需求。有关容器资源管理的更多信息,请参阅 官方 Kubernetes 文档。
通过将 metrics.enabled 设置为 true,此图表可以与 Prometheus 集成。这将在服务中公开 Thanos 原生 Prometheus 端点。它将具有必要的注释,可以被 Prometheus 自动抓取。
要使集成工作,必须安装 Prometheus 或 Prometheus Operator。安装 Bitnami Prometheus helm 图表 或 Bitnami Kube Prometheus helm 图表,可以轻松在集群中拥有可用的 Prometheus。
通过设置值 metrics.serviceMonitor.enabled=true,图表可以部署用于与 Prometheus Operator 集成的 ServiceMonitor 对象。确保在集群中安装了 Prometheus Operator CustomResourceDefinitions,否则将失败并显示以下错误:
no matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
安装 Bitnami Kube Prometheus helm 图表 以获得必要的 CRD 和 Prometheus Operator。
Thanos 可以通过设置 *.tls.enabled=true(在 query.grpc.client、query.grpc.server、storegateway.grpc.server 和 receive.grpc.server 部分下)值来加密通信。图表允许三种配置选项:
*.tls.ca、*.tls.cert、*.tls.key(在 query.grpc.client、query.grpc.server、storegateway.grpc.server 和 receive.grpc.server 部分下)值提供证书内容。*.tls.existingSecret(在 query.grpc.client、query.grpc.server、storegateway.grpc.server 和 receive.grpc.server 部分下)值提供您自己的密钥。除了提供密钥名称外,还需要为 ca-cert、tls-cert 和 tls-key 元素设置密钥映射。例如:receive: grpc: server: tls: existingSecret: name: foo keyMapping: ca-cert: ca.pem tls-cert: cert.pem tls-key: key.pem
*.tls.autoGenerated=true(在 query.grpc.client、query.grpc.server、storegateway.grpc.server 和 receive.grpc.server 部分下)让图表自动生成证书。在生产环境中强烈建议使用不可变标签。这确保如果相同的标签使用不同的镜像更新,您的部署不会自动更改。
如果主容器有新版本、重大更改或严重漏洞,Bitnami 将发布新图表更新其容器。
如果您想向任何 Thanos 组件添加额外标志,可以使用 XXX.extraFlags 参数,其中 XXX 是您需要替换为实际组件的占位符。例如,要向 Thanos Store Gateway 添加额外标志,请使用:
storegateway: extraFlags: - --sync-block-duration=3m - --chunk-pool-size=2GB
这也适用于多行标志。当您想配置特定组件的缓存而不使用 configMap 时,这非常有用。例如,要配置 Thanos Query Frontend 的 query-range 响应缓存,使用:
queryFrontend: extraFlags: - | --query-range.response-cache-config= type: MEMCACHED config: addresses: - <MEMCACHED_SERVER>:11211 timeout: 500ms max_idle_connections: 100 max_async_concurrency: 10 max_async_buffer_size: 10000 max_get_multi_concurrency: 100 max_get_multi_batch_size: 0 dns_provider_update_interval: 10s expiration: 24h
此 helm 图表支持使用自定义 Objstore 配置。
您可以使用 objstoreConfig 参数指定 Objstore 配置。
此外,您还可以使用包含配置文件的外部 Secret。这通过设置 existingObjstoreSecret 参数来完成。请注意,这将覆盖先前的选项。如果需要,您还可以使用 existingObjstoreSecretItems 提供自定义 Secret Key,请注意您的 Secret 的路径应为 objstore.yml。
此 helm 图表支持为 Query 使用自定义服务发现配置。
您可以使用 query.sdConfig 参数指定服务发现配置。
此外,您还可以使用包含服务发现配置文件的外部 ConfigMap。这通过设置 query.existingSDConfigmap 参数来完成。请注意,这将覆盖先前的选项。
此 helm 图表支持使用自定义 Ruler 配置。
您可以使用 ruler.config 参数指定 Ruler 配置。
此外,您还可以使用包含配置文件的外部 ConfigMap。这通过设置 ruler.existingConfigmap 参数来完成。请注意,这将覆盖先前的选项。
此 helm 图表支持使用 HTTPS 和基本身份验证。基础功能是实验性的,未来可能会更改,图表中的相关设置也是如此。 有关更多信息,请参阅 Thanos 文档。
可以使用以下值启用此功能:
https.enabled=true。启用 HTTPS 要求用户提供 Thanos 的 TLS 证书和密钥,可以使用以下选项之一完成:
https.existingSecret 提供密钥。该密钥必须包含 tls.crt 或 tls.key 键(可以使用 https.keyFilename 和 https.certFilename 值重命名键名)。https.cert 和 https.key 值下提供证书和密钥。https.autoGenerated=true,使用此值 Helm 将在图表初始化期间生成自签名密钥对。不推荐用于生产环境。auth.basicAuthUsers.*。一个键/值字典,其中键对应将有权访问 Thanos 的用户,值是明文密码。密码稍后将使用 bcrypt 加密。
或者,使用值 httpConfig 或 existingHttpConfigSecret 提供您自己的 Thanos http 配置文件。这可能导致忽略 https.* 或 auth.* 下的任何设置,除了与 TLS 证书相关的设置。使用这些参数提供配置文件时,除非应用以下修复之一,否则图表探针将无法初始化:
https.enabled 或 auth.basicAuthUsers 至少有一个用户,与您提供的配置文件匹配。这样探针将相应地配置 HTTPS 和/或基本身份验证。<component>.customLivenessProbe、<component>.customReadinessProbe 和 <component>.customStartupProbe 配置您自己的探针。Thanos 存储支持基于时间的分区。
设置时间分区将根据 timePartitioning 列表中的项目数创建 N 个存储 statefulsets。每个项目必须包含支持格式的查询最小和最大时间(在 Thanos 文档 中找到更多详细信息)。
注意:将
timePartitioning列表留空 ([]) 将创建一个用于所有数据的单个存储。
例如,要使用 3 个存储,您可以使用如下所示的 values.yaml:
timePartitioning: # 一个用于 6 周前数据的存储 - min: "" max: -6w # 一个用于 6 周前至 2 周前数据的存储 - min: -6w max: -2w # 一个用于 2 周内数据的存储 - min: -2w max: ""
您还可以为每个 storegateway statefulset 指定不同的资源和限制配置。这通过向每个您希望更改的项目添加 resources.requests 和 resources.limits 来完成,如下所示:
timePartitioning: # 一个用于 6 周前数据的存储 - min: "" max: -6w # 一个用于 6 周前至 2 周前数据的存储 - min: -6w max: -2w resources: # 分区的可选资源声明 requests: cpu: 10m memory: 100Mi limits: cpu: 20m memory: 100Mi # 一个用于 2 周内数据的存储 - min: -2w max: ""
您可以使用此图表和 Bitnami kube-prometheus 图表 将 Thanos 与 Prometheus 和 Alertmanager 集成,步骤如下:
注意:在此示例中,我们将使用 MinIO®(子图表)作为 Objstore。每个组件都将部署在 "monitoring" 命名空间中。
objstoreConfig: |- type: s3 config: bucket: thanos endpoint: {{ include "thanos.minio.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:9000 access_key: minio secret_key: minio123 insecure: true query: dnsDiscovery: sidecarsService: kube-prometheus-prometheus-thanos sidecarsNamespace: monitoring bucketweb: enabled: true compactor: enabled: true store


免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429