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

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

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

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

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

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

Метки pod

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

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

Когда App 3 создаётся с аффинити рабочей нагрузки release=alpha, Kubernetes попытается разместить App 3 на том же узле, что и 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 по умолчанию добавит к pod рабочей нагрузки метку, показанную на рисунке ниже. Значение app — это имя рабочей нагрузки.

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

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

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

Аннотации Pod

CCE предоставляет некоторые расширенные функции для pod'ов. Эти функции можно реализовать, добавив аннотации в файлы 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 содержит некоторые часто используемые аннотации. Вы можете добавить аннотации для pod'ов по мере необходимости.

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

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