部署模式
OpenTelemetryCollector 自定义资源支持多种部署模式,允许您根据遥测数据收集需求选择最合适的策略。
Deployment
这是标准的部署模式,也是大多数使用场景的默认选项。
StatefulSet
当您的工作负载需要持久状态管理,例如使用 Collector 的 File Storage Extension 或实现 Tail Sampling Processor 时,推荐使用 StatefulSet 部署模式。该模式确保每个 Collector 实例在重启后保持其身份和存储。
DaemonSet
对于需要从集群中每个节点收集遥测数据的场景,DaemonSet 部署模式是理想选择。这在使用 Collector 的 Filelog Receiver 捕获所有节点的容器日志时尤其有用。
Sidecar
Sidecar 部署模式将 Collector 直接注入到应用 Pod 中,支持两种主要用例:
-
日志文件访问:当您需要从容器内部读取日志文件时,将 Collector 作为 sidecar 注入,并通过共享卷(如
emptyDir)配置 Filelog Receiver 以访问日志。 -
本地主机遥测转发:当应用通过
localhost发送遥测数据时,sidecar Collector 可以接收这些数据,并通过加密和认证连接将其转发到外部服务。
Sidecar 注入配置
使用 sidecar 部署模式时,必须配置以下两项:
- 在
OpenTelemetryCollector自定义资源中设置spec.mode: sidecar - 在 Pod 或命名空间上添加
sidecar.opentelemetry.io/inject注解
sidecar.opentelemetry.io/inject 注解可以应用于 Pod 级别或命名空间级别。如果两者都设置,当注解值为 false 或指定具体的 OpenTelemetryCollector CR 名称时,Pod 级别注解优先。
支持的注解值:
- 注解接受以下值:
false:禁用 Collector 注入(注解缺失时的默认行为)true:使用同一命名空间下的OpenTelemetryCollectorCR 配置注入 Collector<collector_name>:使用同一命名空间下指定名称<collector_name>的OpenTelemetryCollectorCR 注入 Collector<namespace>/<collector_name>:使用指定命名空间<namespace>下的<collector_name>OpenTelemetryCollectorCR 注入 Collector
带 sidecar 注入的示例部署:
sidecar.opentelemetry.io/inject 注解必须放置在 spec.template.metadata.annotations(Pod 模板)下,不能放在 Deployment 自身的 metadata.annotations 下。
- 该配置将
my-collectorOpenTelemetryCollectorCR 中定义的 Collector 作为 sidecar 容器注入到此 Deployment 创建的每个 Pod 中。