Облачная платформаAdvanced

Настройка меток и аннотаций

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Для поддержки многомерного управления метаданными Kubernetes предлагает метки и аннотации. Они оба прикрепляют метаданные к ресурсам в формате пар ключ‑значение, но их цели и варианты использования существенно различаются.

  • Метки используются для идентификации и классификации объектов Kubernetes. Они следуют структурированному формату ключ‑значение (например, app=frontend) и могут эффективно использоваться для выбора ресурсов с помощью селекторов. Они напрямую влияют на планирование и управление ресурсами. Ключ и значение метки должны соответствовать правилам именования и обычно представляют постоянные атрибуты ресурса, такие как версия.
  • Аннотации служат для расширения функциональности и хранения дополнительных метаданных. Они поддерживают гибкие форматы данных (например, JSON или многострочный текст). Они не используются для выбора ресурсов и не влияют на планирование.

Метки и аннотации применяются к различным типам ресурсов Kubernetes. В этом разделе будет рассмотрено их использование в pod.

Метки pod

Метки pod обеспечивают интеллектуальную ассоциацию ресурсов. После добавления меток к pod другие ресурсы Kubernetes могут точно идентифицировать и связывать эти pod с помощью селекторов меток. Ключи и значения меток должны соответствовать определённым правилам именования. Подробнее см. Syntax and character set. Например, вы можете добавить следующую метку к двум рабочим нагрузкам (App 1 и App 2) соответственно:

  • App 1: release=alpha
  • App 2: release=beta

При создании рабочей нагрузки App 3 настройте политику планирования следующим образом: установите Workload Affinity в значение Customize affinity и добавьте политику Required в раздел Workload Affinity. Установите Namespace в пространство имён App 1, Topology Domain в kubernetes.io/hostname, Label Key в release, Operator в In (по умолчанию), и Label Value в alpha. Kubernetes попытается разместить рабочую нагрузку на узле, где запущен App 1, либо на другом узле, удовлетворяющем этим условиям. Это гарантирует совместное размещение App 1 и App 3, когда это возможно. Подробнее см. Configuring Workload Affinity or Anti-affinity Scheduling (podAffinity or podAntiAffinity).

Вы можете добавить метки к pod, используя консоль или YAML.

Добавление метки pod с помощью консоли

При создании или обновлении рабочей нагрузки в консоли CCE вы можете добавить pod label, нажав Labels and Annotations в области Advanced Settings. Эта метка помогает идентифицировать pod в кластере. При создании рабочей нагрузки CCE по умолчанию автоматически добавляет метки app=workload-name и version=v1 к pod.

Добавление метки pod с помощью YAML

При создании или обновлении рабочей нагрузки вы можете добавить метку pod в следующем разделе YAML‑файла:

...
spec:
selector:
matchLabels:
app: nginx
version: v1
template:
metadata:
labels:
app: nginx
version: v1
spec:
...

Pod Аннотации

CCE предоставляет некоторые расширенные функции для pods. Эти функции можно реализовать, добавив аннотации в файлы YAML. Вы можете добавить аннотации к pod, используя консоль или YAML.

Добавление аннотации pod с помощью консоли

При создании или обновлении рабочей нагрузки в консоли CCE вы можете добавить pod annotation, щёлкнув Labels and Annotations в разделе Advanced Settings, чтобы включить расширенные функции для pod.

Например, чтобы отключить сбор стандартного вывода контейнера для pod, установите pod annotation в kubernetes.AOM.log.stdout='[]' и нажмите Confirm.

Добавление аннотации pod с помощью YAML

При создании или обновлении рабочей нагрузки с помощью YAML вы можете использовать параметр annotations для включения расширенных функций pod.

Например, вы можете использовать annotations для отключения сбора стандартного вывода контейнера для pod:

...
spec:
replicas: 1 # Number of pods
selector:
matchLabels: # Selector for selecting resources with specific labels
app: nginx
template:
metadata:
labels: # Labels
app: nginx
annotations:
kubernetes.AOM.log.stdout: '[]'
...

Типичные аннотации pod

Table 1 содержит некоторые часто используемые аннотации. Вы можете добавить аннотации для pods по мере необходимости.

Table 1 Pod аннотации

Аннотация

Описание

Значение по умолчанию

kubernetes.AOM.log.stdout

Параметр сбора журналов стандартного вывода для контейнеров. Если не указано, журналы стандартного вывода со всех контейнеров будут автоматически отправляться в AOM по умолчанию. Вы можете настроить эту аннотацию, чтобы собирать журналы стандартного вывода только из указанных контейнеров или отключить сбор журналов стандартного вывода для всех контейнеров.

Пример:

  • Отключение сбора журналов стандартного вывода для всех контейнеров:
    kubernetes.AOM.log.stdout: '[]'
  • Сбор журналов стандартного вывода из container-1 и container-2:
    kubernetes.AOM.log.stdout: '["container-1","container-2"]'

N/A

metrics.alpha.kubernetes.io/custom-endpoints

Параметр отправки метрик в AOM, позволяющий отправлять указанные метрики в AOM.

Для получения подробной информации см. Monitoring Custom Metrics on AOM.

N/A

prometheus.io/scrape

Параметр отправки метрик в Prometheus, позволяющий отправлять указанные метрики в Prometheus. Если установлено значение true, метрики указанной рабочей нагрузки будут отправлены в Prometheus.

N/A

prometheus.io/path

URL-адрес, по которому Prometheus собирает данные.

/metrics

prometheus.io/port

Номер порта конечной точки, используемый Prometheus для сбора данных.

N/A

prometheus.io/scheme

Протокол, используемый Prometheus для сбора данных. Значение может быть http или https.

N/A

kubernetes.io/ingress-bandwidth

Пропускная способность входящего трафика pod. Она контролирует скорость, с которой pod получает данные, чтобы обеспечить возможность обработки внешних запросов.

Для получения подробной информации см. Configuring QoS for a Pod.

N/A

kubernetes.io/egress-bandwidth

Пропускная способность исходящего трафика pod. Она контролирует скорость, с которой pod отправляет данные во внешние системы. Это влияет на эффективность взаимодействия между pod и внешними сервисами или пользователями.

Для получения подробной информации см. Configuring QoS for a Pod.

N/A

Полезные ссылки