Detección automática de nombres de clústeres de Kubernetes
Para el Agent v6.11+, el Datadog Agent puede detectar automáticamente el nombre del clúster de Kubernetes en Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS) y Amazon Elastic Kubernetes Service (EKS). El nombre del clúster también puede proporcionarse directamente o descubrirse a partir de las etiquetas de los nodos de Kubernetes. Si se detecta, el nombre del clúster se añade como sufijo al nombre del nodo en todos los datos recopilados. Esto facilita la identificación de los nodos en los clústeres de Kubernetes.
Este nombre del clúster debe ser un nombre único y respetar las siguientes restricciones:
- Solo debe contener letras minúsculas, números y guiones
- Debe empezar con una letra
- Debe terminar con número o una letra
- Debe tener 80 caracteres o menos
Configuración
Puedes proporcionar directamente un nombre del clúster en la configuración de Datadog. Cuando se proporciona, esto tiene prioridad sobre todas las demás opciones.
En Datadog Operator, configura el valor en global.clusterName.
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
name: datadog
spec:
global:
clusterName: <CLUSTER_NAME>
En tu gráfico de Helm, configura el valor en datadog.clusterName.
datadog:
clusterName: <CLUSTER_NAME>
Proveedores de la nube
Si no se proporciona un nombre del clúster en la configuración, el Agent y el Agent del clúster se ponen en contacto con los servicios de metadatos del proveedor de la nube para recuperarlo.
GKE
En GKE, el nombre del clúster se recupera del servidor de metadatos de la máquina virtual. El Agent realiza una solicitud para obtener los atributos de la instancia y utiliza el valor devuelto si es correcto.
Puedes test esta solicitud utilizando kubectl exec en el pod del Agent y ejecutando una solicitud curl como.
curl -v "http://169.254.169.254/computeMetadata/v1/instance/attributes/cluster-name" -H "Metadata-Flavor: Google"
Una solicitud correcta devuelve una respuesta 200 y el nombre del clúster de Kubernetes tal y como se ve en la consola de GKE. La activación de determinadas funciones de GKE, como Workload Identity, puede restringir este acceso.
AKS
En AKS, el nombre del clúster se recupera del Azure Instance Metadata Service. El Agent solicita el nombre del grupo de recursos de la máquina virtual y, a continuación, analiza este valor para determinar el nombre del clúster de Kubernetes.
Puedes test esta solicitud utilizando kubectl exec en el pod del Agent y ejecutando una solicitud curl como.
curl -v "http://169.254.169.254/metadata/instance/compute/resourceGroupName?api-version=2017-08-01&format=text" -H "Metadata: true"
Una solicitud correcta devuelve una respuesta 200 y el nombre del grupo de recursos de AKS que debe analizarse. Por ejemplo, el Agent analiza example-cluster-name a partir del MC_MyResourceGroup_example-cluster-name_eastus devuelto.
EKS
En EKS, el Agent recupera el nombre del clúster obteniendo las tags (etiquetas) de la instancia EC2 e identificando la tag (etiqueta) kubernetes.io/cluster/<CLUSTER_NAME>: owned rellenada previamente para determinar el nombre del clúster.
En forma predeterminada, el Agent utiliza el Instance Metadata Service (IMDS) para obtener la identidad de la instancia, utilizada por el kit de desarrollo de software (SDK) del Agent y de AWS para describir las tags (etiquetas) de la instancia. En Agent 7.64.0 y superiores, se utiliza IMDSv2 en forma predeterminada para obtener esta identidad. Esto requiere que la instancia EC2 y su rol IAM tengan el permiso ec2:DescribeTags. El Agent no admite la identidad del pod de EKS para los permisos IAM.
Como alternativa, el Agent puede obtener las tags (etiquetas) EC2 directamente de IMDS si se proporciona la siguiente variable de entorno.
- name: DD_COLLECT_EC2_TAGS_USE_IMDS
value: "true"
Sin embargo, IMDS no concede acceso a las tags (etiquetas) EC2 en forma predeterminada. Debes activar el acceso a las tags (etiquetas) y establecer su límite de saltos en 2 (o superior).
Etiquetas del nodo
El último método de detección utiliza las etiquetas de los nodos Kubernetes. El Agent inspecciona su nodo actual de Kubernetes y busca las siguientes etiquetas:
alpha.eksctl.io/cluster-namekubernetes.azure.com/clusterad.datadoghq.com/cluster-name
Se pueden añadir etiquetas adicionales con la variable de entorno:
- name: DD_KUBERNETES_NODE_LABEL_AS_CLUSTER_NAME
value: "<NODE_LABEL_KEY>"
Si se encuentra la etiqueta del nodo, el valor se utiliza como nombre del clúster.