使用污点和容忍度

您可以使用污点和容忍度来控制 OpenTelemetry Collector pod 调度到哪些节点上。当您希望将特定的 基础设施节点 专用于可观测性工作负载时,这非常有用。

将 Collector 调度到基础设施节点

要将 OpenTelemetry Collector 调度到基础设施节点,请在 OpenTelemetryCollector 自定义资源中配置 nodeSelectortolerations 字段。

前提条件

  • 必须安装 Alauda Build of OpenTelemetry v2 Operator。
  • 基础设施节点 必须配置为具有相应的标签和污点。

操作步骤

  1. 验证您的基础设施节点已正确添加标签并设置污点:

    kubectl get nodes -l node-role.kubernetes.io/infra= -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
  2. 使用 nodeSelectortolerations 创建或更新 OpenTelemetryCollector 资源:

    apiVersion: opentelemetry.io/v1beta1
    kind: OpenTelemetryCollector
    metadata:
      name: otel
      namespace: opentelemetry-collector
    spec:
      nodeSelector:
        node-role.kubernetes.io/infra: ""
      tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/infra
          value: reserved
          operator: Equal
      config:
        # ... collector config
    1. spec.nodeSelector:将 Collector pod 约束为仅在与指定标签匹配的节点上运行。在此示例中,是带有 node-role.kubernetes.io/infra: "" 标签的节点。
    2. spec.tolerations:允许 Collector pod 调度到具有匹配污点的节点上。NoSchedule 效果会阻止没有此容忍度的其他 pod 调度到这些节点上。
    3. spec.tolerations[].operator:设置为 Equal,以要求污点键和值完全匹配。

验证

验证 Collector pod 是否已调度到基础设施节点上:

kubectl get pods -n opentelemetry-collector -o wide

确认 NODE 列显示的是基础设施节点名称。