El objetivo de esta sección es documentar las especificidades y proporcionarte buenas configuraciones de base para la monitorización de planos de control de Kubernetes. Luego, podrás personalizar estas configuraciones para añadir cualquier característica de Datadog.
Las siguientes configuraciones se han probado en Kubernetes v1.18+.
Servidor de API
La integración del servidor de API se configura automáticamente y el Datadog Agent la detecta automáticamente.
Etcd
Al proporcionar acceso de lectura a los certificados de Etcd ubicados en el host, el check del Datadog Agent puede comunicarse con Etcd y empezar a recopilar métricas de Etcd.
Si los puertos inseguros de tus instancias Controller Manager y Scheduler están habilitados, el Datadog Agent detecta las integraciones y comienza a recopilar métricas sin ninguna configuración adicional.
Puertos seguros
Los puertos seguros permiten la autenticación y autorización para proteger los componentes de tu plano de control. El Datadog Agent puede recopilar métricas del administrador de controladores y del programador dirigiéndose a sus puertos seguros.
El campo ssl_verify de kube_controller_manager y la configuración de kube_scheduler deben establecerse en false cuando se utilizan certificados auto-firmados.
Cuando se dirige a puertos seguros, la opción bind-address en la configuración de tu administrador de controladores y de tu programador debe ser accesible por el Datadog Agent. Por ejemplo:
Datadog permite monitorizar los componentes del plano de control de Kubernetes, incluidos el servidor de API, el gestor de controladores y el programador.
Requisitos previos
Datadog Operator >= v1.18.0
Datadog Agent >= v7.69
Configuración general
La monitorización de planos de control está activada en forma predeterminada, pero requiere que se active la introspección.
Amazon expone métricas kube_controller_manager y kube_scheduler bajo el grupo de API metrics.eks.amazonaws.com.
Añadir "extra_headers":{"accept":"*/*"} evita errores de HTTP 406 al consultar la API de métricas de EKS.
Kubernetes en OpenShift 4
Esta función está en vista previa.
Datadog permite monitorizar los componentes del plano de control de Kubernetes, incluidos el servidor API, etcd, el gestor de controladores y el programador.
Requisitos previos
Datadog Operator >= v1.18.0
Datadog Agent >= v7.69
Nota: etcd no es compatible con las versiones 4.0-4.13.
Configuración general
La monitorización del plano de control está activada en forma predeterminada, pero requiere que se active la introspección.
O, para usuarios de OpenShift que instalaron el operador a través de OperatorHub/Marketplace (el método recomendado), mediante la aplicación de revisiones de la versión del servicio de clúster del operador:
Como esta función está activada en forma predeterminada, puedes desplegar una especificación mínima del Datadog Agent.
Activa allí features.clusterChecks.useClusterChecksRunners para programar checks; de lo contrario, los checks del plano de control se ejecutan en el Node Agent.
Para OpenShift 4.14 y posteriores, la monitorización de etcd requiere que copies los certificados de etcd. Check que los logs del operador para ver el comando exacto. Consulta el siguiente ejemplo (ajusta el espacio de nombres según sea necesario):
oc get secret etcd-metric-client -n openshift-etcd-operator -o yaml |\
sed 's/namespace: openshift-etcd-operator/namespace: datadog/'|\
oc apply -f -
Requisitos previos
Versión del gráfico de Helm >= 3.150.0
Datadog Agent >= v7.69
Nota: etcd no es compatible con las versiones 4.0-4.13.
Configuración general
Activa la monitorización del plano de control mediante la opción providers.openshift.controlPlaneMonitoring:
Para OpenShift 4.14 y posteriores, la monitorización de etcd requiere que copies los certificados de etcd. Para copiarlos en el mismo espacio de nombres que el Datadog Agent:
oc get secret etcd-metric-client -n openshift-etcd-operator -o yaml | sed 's/namespace: openshift-etcd-operator/namespace: <datadog agent namespace>/'| oc create -f -
Asegúrate de que has iniciado sesión con permisos suficientes para editar servicios y crear secretos.
Servidor de API
El servidor de API se ejecuta detrás del servicio kubernetes, en el espacio de nombres default. Anota este servicio con la configuración kube_apiserver_metrics:
oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.check_names=["kube_apiserver_metrics"]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "bearer_token_auth": "true"}]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.resolve=ip'
La última anotación ad.datadoghq.com/endpoints.resolve es necesaria porque el servicio está delante de pods estáticos. El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres. Los nodos en los que se están ejecutando se pueden identificar con:
Los certificados son necesarios para comunicarse con el servicio Etcd, que se pueden encontrar en el secreto kube-etcd-client-certs en el espacio de nombres openshift-monitoring. Para dar acceso a Datadog Agent a estos certificados, primero hay que copiarlos en el mismo espacio de nombres en el que se está ejecutando el Datadog Agent:
oc get secret kube-etcd-client-certs -n openshift-monitoring -o yaml | sed 's/namespace: openshift-monitoring/namespace: <datadog agent namespace>/'| oc create -f -
Estos certificados deben montarse en los pods del ejecutador de checks de clústeres añadiendo los volúmenes y los montajes de volúmenes como se indica a continuación.
Nota: También se incluyen montajes para desactivar el archivo de auto-configuración del check de Etcd empaquetado con el Agent.
A continuación, anota el servicio que se ejecuta delante de Etcd:
oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.check_names=["etcd"]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "tls_ca_cert": "/etc/etcd-certs/etcd-client-ca.crt", "tls_cert": "/etc/etcd-certs/etcd-client.crt",
"tls_private_key": "/etc/etcd-certs/etcd-client.key"}]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.resolve=ip'
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Etcd OpenShift 4.14 and later
Se necesitan certificados para comunicarse con el servicio de Etcd, que se encuentran en el etcd-metric-client secreto en el espacio de nombres openshift-etcd-operator. Para dar acceso al Datadog Agent a estos certificados, cópialos en el mismo espacio de nombres que el Datadog Agent:
oc get secret etcd-metric-client -n openshift-etcd-operator -o yaml | sed 's/namespace: openshift-etcd-operator/namespace: <datadog agent namespace>/'| oc create -f -
Estos certificados deben montarse en los pods del ejecutador de checks de clústeres añadiendo los volúmenes y los montajes de volúmenes como se indica a continuación.
Nota: También se incluyen montajes para desactivar el archivo de auto-configuración del check de Etcd empaquetado con el Agent.
A continuación, anota el servicio que se ejecuta delante de Etcd:
oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.check_names=["etcd"]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "tls_ca_cert": "/etc/etcd-certs/etcd-client-ca.crt", "tls_cert": "/etc/etcd-certs/etcd-client.crt",
"tls_private_key": "/etc/etcd-certs/etcd-client.key"}]'oc annotate service etcd -n openshift-etcd 'ad.datadoghq.com/endpoints.resolve=ip'
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Administrador de controladores
El administrador de controladores se ejecuta detrás del servicio kube-controller-manager, en el espacio de nombres de openshift-kube-controller-manager. Anota este servicio con la configuración del check:
oc annotate service kube-controller-manager -n openshift-kube-controller-manager 'ad.datadoghq.com/endpoints.check_names=["kube_controller_manager"]'oc annotate service kube-controller-manager -n openshift-kube-controller-manager 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service kube-controller-manager -n openshift-kube-controller-manager 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "ssl_verify": "false", "bearer_token_auth": "true"}]'oc annotate service kube-controller-manager -n openshift-kube-controller-manager 'ad.datadoghq.com/endpoints.resolve=ip'
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Programador
El programador se ejecuta detrás del servicio scheduler, en el espacio de nombres de openshift-kube-scheduler. Anota este servicio con la configuración del check:
oc annotate service scheduler -n openshift-kube-scheduler 'ad.datadoghq.com/endpoints.check_names=["kube_scheduler"]'oc annotate service scheduler -n openshift-kube-scheduler 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service scheduler -n openshift-kube-scheduler 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "ssl_verify": "false", "bearer_token_auth": "true"}]'oc annotate service scheduler -n openshift-kube-scheduler 'ad.datadoghq.com/endpoints.resolve=ip'
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Kubernetes en OpenShift 3
En OpenShift 3, todos los componentes del plano de control se pueden monitorizar utilizando checks de endpoints.
Asegúrate de que has iniciado sesión con permisos suficientes para crear y editar servicios.
Servidor de API
El servidor de API se ejecuta detrás del servicio kubernetes, en el espacio de nombres default. Anota este servicio con la configuración kube_apiserver_metrics:
oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.check_names=["kube_apiserver_metrics"]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "bearer_token_auth": "true"}]'oc annotate service kubernetes -n default 'ad.datadoghq.com/endpoints.resolve=ip'
La última anotación ad.datadoghq.com/endpoints.resolve es necesaria porque el servicio está delante de pods estáticos. El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres. Los nodos en los que se están ejecutando se pueden identificar con:
Los certificados son necesarios para comunicarse con el servicio Etcd que se encuentra en el host. Estos certificados deben montarse en los pods del ejecutador de checks de clústeres añadiendo los volúmenes y montajes de volúmenes como se indica a continuación.
Nota: También se incluyen montajes para desactivar el archivo de auto-configuración del check de Etcd empaquetado con el Agent.
Las ediciones directas de este servicio no se conservan, así que haz una copia del servicio Etcd:
oc get service etcd -n kube-system -o yaml | sed 's/name: etcd/name: etcd-copy/'| oc create -f -
Anota el servicio copiado con la configuración del check:
oc annotate service etcd-copy -n openshift-etcd 'ad.datadoghq.com/endpoints.check_names=["etcd"]'oc annotate service etcd-copy -n openshift-etcd 'ad.datadoghq.com/endpoints.init_configs=[{}]'oc annotate service etcd-copy -n openshift-etcd 'ad.datadoghq.com/endpoints.instances=[{"prometheus_url": "https://%%host%%:%%port%%/metrics", "tls_ca_cert": "/host/etc/etcd/ca/ca.crt", "tls_cert": "/host/etc/etcd/server.crt",
"tls_private_key": "/host/etc/etcd/server.key"}]'oc annotate service etcd-copy -n openshift-etcd 'ad.datadoghq.com/endpoints.resolve=ip'
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Administrador de controladores y programador
El administrador de controladores y el programador se ejecutan detrás del mismo servicio, kube-controllers, en el espacio de nombres de kube-system. Las ediciones directas del servicio no se conservan, así que haz una copia del servicio:
oc get service kube-controllers -n kube-system -o yaml | sed 's/name: kube-controllers/name: kube-controllers-copy/'| oc create -f -
Anota el servicio copiado con la configuración del check:
El Datadog Cluster Agent programa los checks como checks de endpoints y los envía a los ejecutadores de checks de clústeres.
Kubernetes en Talos Linux
Helm es el método de instalación recomendado para Talos Linux. Utiliza Helm configurando el marcador providers.talos.enabled en true.
Servidor de API
La integración del servidor de API se configura automáticamente y el Datadog Agent la detecta automáticamente.
Etcd
Al proporcionar acceso de lectura a los certificados etcd ubicados en el host, el check del Datadog Agent puede comunicarse con etcd y comenzar a recopilar métricas de etcd.
datadog-values.yaml
datadog:apiKey:<DATADOG_API_KEY>appKey:<DATADOG_APP_KEY>clusterName:<CLUSTER_NAME>kubelet:tlsVerify:falseignoreAutoConfig:- etcdconfd:etcd.yaml:|- # Puedes configurar el Agent para que solo ejecute este check en el host donde se esté ejecutando etcd
# utilizando `ad_identifiers` para un pod que solo se ejecutaría en un nodo del plano de control.
# Esto es para evitar errores cuando el Agent se está ejecutando en nodos trabajadores.
# Otro enfoque es ejecutar un pod mínimo en el nodo del plano de control y utilizarlo para `ad_identifiers`.
ad_identifiers:
- kube-scheduler
instances:
# Esta es la IP del nodo donde se exponen las métricas porque kube-scheduler se ejecuta en modo de red de host.
# De lo contrario, la IP se podría hardcode a la IP del nodo maestro (también en la variable de entorno `DD_KUBERNETES_KUBELET_HOST`).
- prometheus_url: https://%%host%%:2379/metrics
tls_ca_cert: /host/etc/kubernetes/pki/etcd/ca.crt
tls_cert: /host/etc/kubernetes/pki/etcd/server.crt
tls_private_key: /host/etc/kubernetes/pki/etcd/server.keyagents:# Es necesario programar tolerancias en los nodos del plano de control que ejecutan etcdtolerations:- key:node-role.kubernetes.io/control-planeoperator:Existseffect:NoSchedulevolumes:# En Talos, los certificados de etcd se almacenan en /system/secrets/etcd- hostPath:path:/sistema/secretos/etcdname:etcd-certsvolumeMounts:- name:etcd-certsmountPath:/host/etc/kubernetes/pki/etcdreadOnly:trueproviders:talos:enabled:true
Administrador de controladores y programador
Puertos seguros
Los puertos seguros permiten la autenticación y autorización para proteger los componentes de tu plano de control. El Datadog Agent puede recopilar métricas del administrador de controladores y del programador dirigiéndose a sus puertos seguros.
El campo ssl_verify de kube_controller_manager y la configuración de kube_scheduler deben establecerse en false cuando se utilizan certificados auto-firmados.
Cuando te dirijas a puertos seguros, la opción bind-address de la configuración de tu Controller Manager y Scheduler debe ser accesible por el Datadog Agent. Aplica el parche siguiente a los nodos del plano de control en la generación del clúster; o, para los nodos de Talos en ejecución, ejecuta talosctl patch mc -n <control-plane-node1,control-plane-node2> --patch @controlplane-datadog-monitoring-patch.yaml.
Rancher v2.5 se basa en PushProx para exponer endpoints de métricas del plano de control, lo que permite al Datadog Agent ejecutar checks del plano de control y recopilar métricas.
Añadir servicios de Kubernetes para configurar checks de Autodiscovery
Al añadir servicios Kubernetes headless para definir configuraciones de checks, el Datadog Agent puede dirigirse a los pods pushprox y recopilar métricas.
Los componentes del plano de control se ejecutan en Docker fuera de Kubernetes. Dentro de Kubernetes, el servicio kubernetes, en el espacio de nombres default, se dirige a la(s) IP(s) del nodo del plano de control. Puedes confirmarlo ejecutando $ kubectl describe endpoints kubernetes.
Puedes anotar este servicio con checks de endpoints (gestionados por el Datadog Cluster Agent) para monitorizar el servidor de API, el administrador de controladores y el programador:
Etcd se ejecuta en Docker fuera de Kubernetes y se necesitan certificados para comunicarse con el servicio Etcd. Los pasos sugeridos para configurar la monitorización de Etcd requieren acceso SSH a un nodo del plano de control que ejecute Etcd.
Consulta el acceso SSH al nodo del plano de control en la documentación de Rancher. Confirma que Etcd se está ejecutando en un contenedor de Docker con $ docker ps y luego utiliza $ docker inspect etcd para localizar los certificados utilizados en el comando de ejecución ("Cmd"), así como la ruta del host de los montajes.
Las tres marcas que debes buscar en el comando son:
--trusted-ca-file
--cert-file
--key-file
Utilizando la información de montaje disponible en la salida $ docker inspect etcd, configura volumes y volumeMounts en los parámetros del Datadog Agent. Incluye también tolerancias para que el Datadog Agent pueda ejecutarse en los nodos del plano de control.
Los siguientes son ejemplos de cómo configurar el Datadog Agent con Helm y el Datadog Operator:
Configura un DaemonSet con un contenedor pausado para ejecutar el check de Etcd en los nodos que están ejecutando Etcd. Este DaemonSet se ejecuta en la red del host para poder acceder al servicio Etcd. También tiene la configuración del check y las tolerancias necesarias para ejecutarse en el(los) nodo(s) del plano de control. Asegúrate de que las rutas de los archivos de certificados montados coinciden con lo que has configurado en su instancia y reemplaza la porción <...> en consecuencia.
Para desplegar el DaemonSet y la configuración del check, ejecuta
kubectl apply -f <filename>
Kubernetes en servicios gestionados (AKS, GKE)
En otros sistemas gestionados como Azure Kubernetes Service (AKS) y Google Kubernetes Engine (GKE), el usuario no puede acceder a los componentes del plano de control. Como resultado, no es posible ejecutar los checks de kube_apiserver, kube_controller_manager, kube_scheduler o etcd en estos entornos.