• Русский
  • Использование taints и tolerations

    Вы можете использовать taints и tolerations, чтобы управлять тем, на каких узлах будут планироваться pod'ы OpenTelemetry Collector. Это полезно, когда нужно выделить определенные инфраструктурные узлы для рабочих нагрузок, связанных с observability.

    Планирование Collector на инфраструктурных узлах

    Чтобы разместить OpenTelemetry Collector на инфраструктурных узлах, настройте поля nodeSelector и tolerations в пользовательском ресурсе OpenTelemetryCollector.

    Предварительные требования

    • Должен быть установлен Alauda Build of OpenTelemetry v2 Operator.
    • инфраструктурные узлы должны быть настроены с соответствующими метками и taints.

    Процедура

    1. Убедитесь, что ваши инфраструктурные узлы правильно помечены и имеют taints:

      kubectl get nodes -l node-role.kubernetes.io/infra= -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
    2. Создайте или обновите ресурс OpenTelemetryCollector с nodeSelector и tolerations:

      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: Ограничивает pod'ы Collector так, чтобы они запускались только на узлах, соответствующих указанным меткам. В этом примере — на узлах с меткой node-role.kubernetes.io/infra: "".
      2. spec.tolerations: Позволяет pod'ам Collector планироваться на узлах с соответствующими taints. Эффект NoSchedule не позволяет другим pod'ам без этой toleration планироваться на этих узлах.
      3. spec.tolerations[].operator: Установите значение Equal, чтобы требовать точного совпадения ключа и значения taint.

    Проверка

    Проверьте, что pod'ы Collector планируются на инфраструктурных узлах:

    kubectl get pods -n opentelemetry-collector -o wide

    Убедитесь, что в столбце NODE указаны имена инфраструктурных узлов.