Интеграция с Kubernetes
Перевод в процессе / Translation in progress. See русская версия.
Интеграция получает метрики kubelet, события API-сервера и контейнерные логи через агент, задеплоенный как DaemonSet в кластере. Сбор выполняется per-node: каждый агент скрейпит свой kubelet, читает /var/log/containers/*.log на своём узле и подписывается на API-events через общий service account с read-only RBAC.
Предварительные требования
- Кластер Kubernetes версии ≥ 1.24 с включённым kubelet summary API на порту
10250. - Агент Flaree установлен как DaemonSet (обычно через Helm:
helm install flaree-agent flaree/flaree-agent). - ServiceAccount агента имеет RBAC на
get/list/watchресурсовpods,nodes,namespaces,events,endpointsи подресурсовnodes/metrics,nodes/stats. - На узлах доступна монтируемая директория
/var/log/containers(стандартный путь для kubelet). - Токен агента и endpoint ingestion-шлюза переданы как Kubernetes Secret (
${FLAREE_TOKEN},${FLAREE_ENDPOINT}).
Минимальная конфигурация
Минимальный agent.yaml в режиме DaemonSet использует переменную окружения KUBE_NODE_NAME, которую Kubernetes подставляет через fieldRef: spec.nodeName:
# agent.yaml
integrations:
kubernetes:
enabled: true
mode: daemonset
kubelet:
host: ${KUBE_NODE_NAME}
port: 10250
Полная конфигурация
Развёрнутый пример со списками namespace, метриками kubelet, сбором логов и событий:
# agent.yaml
integrations:
kubernetes:
enabled: true
mode: daemonset
kubelet:
host: ${KUBE_NODE_NAME}
port: 10250
scheme: https
token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
# Фильтрация по namespace и меткам
include_namespaces:
- default
- production
- staging
exclude_namespaces:
- kube-system
exclude_labels:
- flaree.monitor=false
# Метрики kubelet + cadvisor
metrics:
enabled: true
interval: 30s
resource_metrics: true
cadvisor: true
# Логи подов
logs:
enabled: true
path: /var/log/containers/*.log
fields_redact:
- password
- token
sampling:
info: 0.1
warn: 1.0
error: 1.0
# Kubernetes Events
events:
enabled: true
types:
- Warning
- Normal
# Credentials — только через env
token: ${FLAREE_TOKEN}
endpoint: ${FLAREE_ENDPOINT}
Проверка работы
- Убедитесь, что все поды DaemonSet-а агента запущены: на каждом узле должен быть ровно один pod в статусе
Running. - Проверьте, что агент читает kubelet — в его логах не должно быть ошибок
401 Unauthorizedилиconnection refused. - Откройте дашборд Flaree: в списке узлов должен появиться каждый nodeName, по которому агенту разрешено скрейпить kubelet.
# Статус DaemonSet
kubectl get daemonset -n flaree flaree-agent
# Логи одного из подов агента
kubectl logs -n flaree -l app=flaree-agent --tail 50
# Быстрая проверка kubelet summary API с узла
kubectl get --raw "/api/v1/nodes/${KUBE_NODE_NAME}/proxy/stats/summary" | head -c 500
Troubleshooting
- Если поды DaemonSet-а стартовали, но heartbeat не доходит, см. Если агент DaemonSet не выходит на связь, см. Agent offline.
- Если метрики kubelet не появляются, см. Нет данных.
Не выдавайте агенту RBAC на secrets или configmaps — достаточно read-only прав на pods, nodes, namespaces и events. Переизбыток прав нарушает принцип наименьших привилегий.