Для поддержки многомерного управления метаданными Kubernetes предлагает метки и аннотации. Они оба прикрепляют метаданные к ресурсам в виде пар ключ‑значение, но их цели и сценарии использования существенно различаются.
Метки и аннотации применяются к различным типам ресурсов Kubernetes. В этом разделе будет рассмотрено их использование в pod‑ах.
Метки pod позволяют осуществлять интеллектуальную ассоциацию ресурсов. После добавления меток к pod‑ам другие ресурсы Kubernetes могут точно идентифицировать и связывать их с помощью селекторов меток. Ключи и значения меток должны соответствовать определённым правилам именования. Подробности см. в Syntax and character set. Например, вы можете добавить следующую метку к двум рабочим нагрузкам (App 1 и App 2) соответственно:
Когда 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.
При создании или обновлении рабочей нагрузки в консоли CCE вы можете добавить pod label, нажав Labels and Annotations в области Advanced Settings. Эта метка помогает идентифицировать pod в кластере. Во время создания рабочей нагрузки CCE по умолчанию добавит к pod рабочей нагрузки метку, показанную на рисунке ниже. Значение app — это имя рабочей нагрузки.
При создании или обновлении рабочей нагрузки вы можете добавить метку pod в следующем разделе YAML‑файла:
...spec:selector:matchLabels:app: nginxversion: v1template:metadata:labels:app: nginxversion: v1spec:...
CCE предоставляет некоторые расширенные функции для pod'ов. Эти функции можно реализовать, добавив аннотации в файлы YAML. Вы можете добавить аннотации к pod, используя консоль или YAML.
При создании или обновлении рабочей нагрузки в консоли CCE вы можете добавить pod annotation, щёлкнув Labels and Annotations в области Advanced Settings, чтобы включить расширенные функции для pod.
Например, чтобы отключить сбор журналов стандартного вывода контейнера для pod, установите pod annotation в kubernetes.AOM.log.stdout='[]' и нажмите Confirm.
При создании или обновлении рабочей нагрузки с помощью YAML вы можете использовать параметр annotations для включения расширенных функций pod.
Например, вы можете использовать annotations для отключения сбора журналов стандартного вывода контейнера для pod:
...spec:replicas: 1 # Number of podsselector:matchLabels: # Selector for selecting resources with specific labelsapp: nginxtemplate:metadata:labels: # Labelsapp: nginxannotations:kubernetes.AOM.log.stdout: '[]'...
Table 1 содержит некоторые часто используемые аннотации. Вы можете добавить аннотации для pod'ов по мере необходимости.
Аннотация | Описание | Значение по умолчанию |
|---|---|---|
kubernetes.AOM.log.stdout | Параметр сбора логов стандартного вывода для контейнеров. Если не указано, логи стандартного вывода со всех контейнеров будут автоматически отправлены в AOM по умолчанию. Вы можете настроить эту аннотацию, чтобы собирать логи стандартного вывода только из указанных контейнеров или отключить сбор логов стандартного вывода для всех контейнеров. Пример:
| 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 |