Utilisation de base de l'Agent Kubernetes dans l'Agent v5
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

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 de Kubernetes

Pour Kubernetes, il est recommandé d’exécuter l’Agent dans un DaemonSet. Nous avons créé 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.

Configurer Kubernetes

Installation

Installation de 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 contrôle d’accès en fonction du rôle (RBAC) est activé sur votre Kubernetes, consultez la documentation sur la configuration des autorisations RBAC avec votre intégration Datadog/Kubernetes.

  • Créez le manifeste dd-agent.yaml suivant :

    apiVersion: extensions/v1beta1
    kind: DaemonSet
    metadata:
    name: dd-agent
    spec:
    template:
    metadata:
      labels:
        app: dd-agent
      name: dd-agent
    spec:
      containers:
      - image: datadog/docker-dd-agent:latest
        imagePullPolicy: Always
        name: dd-agent
        ports:
          - containerPort: 8125
            name: dogstatsdport
            protocol: UDP
        env:
          - name: CLÉ_API
            value: "VOTRE_CLÉ_API"
          - 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 VOTRE_CLÉ_API 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 du host

Installez le paquet dd-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 de conteneur

Pour vérifier que l’Agent Datadog s’exécute dans votre environnement en tant que DaemonSet, exécutez :

kubectl get daemonset

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

Configurer Kubernetes State

Installation

Installation de 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
kind: Deployment
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
kind: Service
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.

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 paquet dd-check-kubernetes_state peut être installé manuellement ou via votre gestionnaire de configuration préféré (pour CentOS/AWS, vous trouverez votre paquet rpm ici et les instructions d’installation sur cette page. Ensuite, modifiez le fichier kubernetes_state.yaml de façon à spécifier 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 :

kubectl get daemonset

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

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

Configurer Kubernetes DNS

Installation

Installez le paquet dd-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
kind: Pod
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