Utilisation de base de l'Agent Kubernetes dans l'Agent v5
L'Agent Datadog v5 est pris en charge jusqu'à la version 1.8 de Kubernetes. Pour la version la plus récente de Kubernetes, utilisez l'Agent Datadog v6.
Présentation
Recueillez des métriques de Kubernetes en temps réel pour :
- Visualiser et surveiller les états de Kubernetes
- Être informé des failovers et des événements Kubernetes
Pour Kubernetes, il est recommandé d’exécuter l’Agent dans un DaemonSet. Vous pouvez utiliser une image Docker comprenant les intégrations Docker et Kubernetes activées.
Vous pouvez également vous contenter d’exécuter l’Agent Datadog sur votre host et de le configurer de façon à rassembler vos métriques Kubernetes.
Installation
Installation sur un conteneur
Grâce à Kubernetes, vous pouvez tirer profit des DaemonSets pour déployer automatiquement l’Agent Datadog sur l’ensemble de vos nœuds (ou sur un nœud donné grâce aux nodeSelectors).
Si vous ne pouvez pas utiliser de DaemonSets pour votre cluster Kubernetes, installez l’Agent Datadog en tant que déploiement sur chaque nœud Kubernetes.
Si le RBAC est activé dans votre environnement Kubernetes, découvrez comment configurer des autorisations RBAC avec votre intégration Datadog/Kubernetes.
- Créez le manifeste
dd-agent.yaml
suivant :
apiVersion: extensions/v1beta1
metadata:
name: dd-agent
spec:
template:
metadata:
labels:
app: dd-agent
name: dd-agent
spec:
containers:
- image: gcr.io/datadoghq/docker-dd-agent:latest
imagePullPolicy: Always
name: dd-agent
ports:
- containerPort: 8125
name: dogstatsdport
protocol: UDP
env:
- name: API_KEY
value: "CLÉ_API_DATADOG"
- name: KUBERNETES
value: "yes"
volumeMounts:
- name: dockersocket
mountPath: /var/run/docker.sock
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
volumes:
- hostPath:
path: /var/run/docker.sock
name: dockersocket
- hostPath:
path: /proc
name: procdir
- hostPath:
path: /sys/fs/cgroup
name: cgroups
Remplacez CLÉ_API_DATADOG
par votre clé d’API ou utilisez les secrets Kubernetes pour définir votre clé d’API en tant que variable d’environnement.
- Déployez le DaemonSet avec cette commande :
kubectl create -f dd-agent.yaml
Remarque : ce manifeste active la fonctionnalité de configuration automatique d’Autodiscovery. Pour la désactiver, retirez la définition de la variable d’environnement SD_BACKEND
. Pour découvrir comment configurer Autodiscovery, consultez la documentation dédiée.
Installation sur un host
Installez le packagedd-check-kubernetes
manuellement ou avec votre gestionnaire de configuration préféré.
Configuration
Modifiez le fichier kubernetes.yaml
afin de spécifier votre serveur et votre port. Définissez ensuite les masters à surveiller :
instances:
host: localhost
port: 4194
method: http
Consultez le fichier d’exemple kubernetes.yaml pour découvrir toutes les options de configuration disponibles.
Validation
Exécution du conteneur
Pour vérifier que l’Agent Datadog s’exécute dans votre environnement en tant que DaemonSet, exécutez :
Si l’Agent est déployé, une sortie similaire au texte ci-dessous s’affiche. Les valeurs desired et current correspondent au nombre de nœuds exécutés dans votre cluster.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Exécution du check de l’Agent
Lancez la sous-commande info
de l’Agent et cherchez kubernetes
dans la section Checks :
Checks
======
kubernetes
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
Installation
Installation sur un conteneur
Si vous exécutez Kubernetes >= 1.2.0, vous pouvez utiliser le projet kube-state-metrics pour fournir des métriques supplémentaires (identifiées par le préfixe kubernetes_state
dans la liste de métriques ci-dessous) à Datadog.
Pour exécuter kube-state-metrics, créez un fichier kube-state-metrics.yaml
avec le manifeste suivant pour déployer le service :
apiVersion: extensions/v1beta1
metadata:
name: kube-state-metrics
spec:
replicas: 1
template:
metadata:
labels:
app: kube-state-metrics
spec:
containers:
- name: kube-state-metrics
image: gcr.io/google_containers/kube-state-metrics:v1.2.0
ports:
- name: metrics
containerPort: 8080
resources:
requests:
memory: 30Mi
cpu: 100m
limits:
memory: 50Mi
cpu: 200m
---
apiVersion: v1
metadata:
annotations:
prometheus.io/scrape: 'true'
labels:
app: kube-state-metrics
name: kube-state-metrics
spec:
ports:
- name: metrics
port: 8080
targetPort: metrics
protocol: TCP
selector:
app: kube-state-metrics
Déployez-le ensuite en exécutant :
kubectl create -f kube-state-metrics.yaml
Le manifeste ci-dessus utilise le conteneur public kube-state-metrics
de Google, qui est également disponible sur Quay. Si vous souhaitez le créer manuellement, consultez la documentation officielle du projet (en anglais).
Si vous configurez votre service Métriques Kubernetes State pour une utilisation sur une autre URL ou un autre port, vous pouvez configurer l’Agent Datadog en définissant le paramètre kube_state_url
dans conf.d/kubernetes_state.yaml
, puis en redémarrant l’Agent.
Pour en savoir plus, consultez le fichier kubernetes_state.yaml.example. Si vous avez activé Autodiscovery, l’URL kube-state est configurée et gérée automatiquement.
Installation sur un host
Le package dd-check-kubernetes_state
peut être installé manuellement ou via votre gestionnaire de configuration préféré (pour CentOS/AWS, téléchargez ici le package rpm et consultez les instructions d’installation sur cette page.
Modifiez ensuite le fichier kubernetes_state.yaml
de façon à pointer vers votre serveur et votre port, et définissez les masters à surveiller. Consultez le fichier exemple kubernetes_state.yaml pour découvrir toutes les options de configuration.
Validation
Validation de conteneur
Pour vérifier que l’Agent Datadog s’exécute dans votre environnement en tant que DaemonSet, exécutez :
Si l’Agent est déployé, vous recevez une sortie similaire au texte ci-dessous. Les valeurs desired et current correspondent au nombre de nœuds exécutés dans votre cluster.
NAME DESIRED CURRENT NODE-SELECTOR AGE
dd-agent 3 3 <none> 11h
Validation du check l’Agent
Lancez la sous-commande info de l’Agent et cherchez kubernetes_state
dans la section Checks :
Checks
======
kubernetes_state
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks
Installation
Installez le packagedd-check-kube_dns
manuellement ou avec votre gestionnaire de configuration préféré.
Configuration
Modifiez le fichier kube_dns.yaml
afin de spécifier votre serveur et votre port et de définir les masters à surveiller. Consultez le fichier d’exemple kube_dns.yaml pour découvrir toutes les options de configuration disponibles.
Utilisation de la découverte de services
Si vous utilisez un pod dd-agent
pour chaque nœud de travail Kubernetes, vous pouvez utiliser les annotations suivantes sur votre pod kube-dns pour récupérer automatiquement les données.
apiVersion: v1
metadata:
annotations:
service-discovery.datadoghq.com/kubedns.check_names: '["kube_dns"]'
service-discovery.datadoghq.com/kubedns.init_configs: '[{}]'
service-discovery.datadoghq.com/kubedns.instances: '[[{"prometheus_endpoint":"http://%%host%%:10055/metrics", "tags":["dns-pod:%%host%%"]}]]'
Remarques :
- Le tag « dns-pod » surveille l’IP du pod DNS cible. Les autres tags sont associés au
dd-agent
qui interroge les informations à l’aide de la découverte de services. - Les annotations de découverte de services doivent être appliquées au pod. En cas de déploiement, ajoutez les annotations aux métadonnées des spécifications du modèle.
Validation
Lancez la sous-commande info de l’Agent et cherchez kube_dns
dans la section Checks :
Checks
======
kube_dns
-----------
- instance #0 [OK]
- Collected 39 metrics, 0 events & 7 service checks