Для поддержки многомерного управления метаданными Kubernetes предлагает метки и аннотации. Они оба прикрепляют метаданные к ресурсам в формате пар ключ‑значение, но их цели и варианты использования существенно различаются.
Метки и аннотации применяются к различным типам ресурсов Kubernetes. В этом разделе будет рассмотрено их использование в pod.
Метки pod обеспечивают интеллектуальную ассоциацию ресурсов. После добавления меток к pod другие ресурсы Kubernetes могут точно идентифицировать и связывать эти pod с помощью селекторов меток. Ключи и значения меток должны соответствовать определённым правилам именования. Подробнее см. Syntax and character set. Например, вы можете добавить следующую метку к двум рабочим нагрузкам (App 1 и App 2) соответственно:
При создании рабочей нагрузки 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.
При создании или обновлении рабочей нагрузки в консоли CCE вы можете добавить pod label, нажав Labels and Annotations в области Advanced Settings. Эта метка помогает идентифицировать pod в кластере. При создании рабочей нагрузки CCE по умолчанию автоматически добавляет метки app=workload-name и version=v1 к pod.
При создании или обновлении рабочей нагрузки вы можете добавить метку pod в следующем разделе YAML‑файла:
...spec:selector:matchLabels:app: nginxversion: v1template:metadata:labels:app: nginxversion: v1spec:...
CCE предоставляет некоторые расширенные функции для pods. Эти функции можно реализовать, добавив аннотации в файлы 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 содержит некоторые часто используемые аннотации. Вы можете добавить аннотации для pods по мере необходимости.
Аннотация | Описание | Значение по умолчанию |
|---|---|---|
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 |