Surveillance de l' Kubernetes dans Instana à l'aide de graphiques OpenTelemetry Helm

Instana offre une intégration transparente avec OpenTelemetry pour une surveillance Kubernetes complète.

OpenTelemetry Kubernetes Ingestion des données vers le backend d' Instana

Instana prend en charge la surveillance complète de l' Kubernetes grâce à l'intégration d' OpenTelemetry. OpenTelemetry Kubernetes Les données peuvent être directement ingérées dans le backend d' Instana et affichées dans l'interface utilisateur d' Instana.

Processus de configuration :

OpenTelemetry Kubernetes Ingestion de données via l'agent d' Instana

Configurer le collecteur d' OpenTelemetry

Pour configurer le collecteur d' OpenTelemetry s pour Kubernetes à l'aide des graphiques Helm, vous avez besoin de deux fichiers yaml pour initialiser les valeurs.

Configurer les récepteurs pour collecter les données télémétriques d' Kubernetes

  1. Créez un fichier YAML contenant les valeurs d' helmValuesDaemonset.yamlDaemonSet avec le contenu suivant à un emplacement connu :

    helmValuesDaemonset.yaml

  2. Créez un autre fichier helmValuesDeployment.yaml YAML contenant les valeurs d' DeploymentSet avec le contenu suivant à un emplacement connu :

    helmValuesDeployment.yaml

Configurer les attributs des ressources

Instana utilise les attributs de ressources définis dans les tableaux d' Helm s pour nommer et étiqueter le cluster d' Kubernetes s surveillé qui s'affiche dans l'interface utilisateur Instana. Le tableau suivant présente les attributs de ressource utilisés en interne par Instana.

Attributs de ressource Description Valeur d'échantillon
k8s.cluster.name Nom du cluster d' Kubernetes otelClusterForDemo
k8s.cluster.distribution Nom de la distribution du cluster kubernetes
k8s.cluster.managedBy Nom de l'organisation gestionnaire du cluster CNF
k8s.cluster.shortName Nom abrégé du cluster oTelShortName
k8s.cluster.fullName Nom complet du cluster Kubernetes
k8s.cluster.version Version du cluster 1.27052025
k8s.namespace.name Espace de noms de l' Kubernetes cluster-test-hôtel
INSTANA_PLUGIN Constante obligatoire pour utilisation interne par Instana k8s

Les attributs de ressource sont définis dans le cadre du processeur d'attributs de ressource, dans les graphiques de configuration du collecteur « OpenTelemetry » helm.

Configurer l'exportation des données télémétriques vers l'agent Instana

OpenTelemetry Collector peut être configuré pour exporter les données d' Kubernetes s de télémétrie vers l'agent Instana en modifiant les exportateurs.

exporters:
  otlp/ins:
    endpoint: 'http://9.43.49.227:4317' # Instana agent endpoint for OpenTelemetry. For example, "http://9.109.219.165:4317".
    tls:
      insecure: true
 

L'exportateur doit également être ajouté au pipeline d' OpenTelemetry.

service:
  pipelines:
    metrics:
      exporters: [otlp/ins]
 
Configurer l'exportation des données télémétriques vers le backend d' Instana

OpenTelemetry Collector peut être configuré pour exporter les données d' Kubernetes s de télémétrie vers le backend Instana. Un en-tête supplémentaire dans l'exportateur otlp doit contenir la clé de l'agent (généralement la clé de téléchargement de l'agent) à des fins d'authentification. Pour ce faire, il suffit de modifier les exportateurs :

exporters:
  otlp/ins:
    endpoint: 'https://otlp-blue-saas.instana.io:4317' # Instana backend endpoint for OpenTelemetry. For example, "https://otlp-blue-saas.instana.io:4317".
    tls:
      insecure: true
    headers:
      x-instana-key: agentDownloadKey # The agent download key can be found in the agent page along with one-line installation of the agent in linux distributions.

service:
  pipelines:
    metrics:
      exporters: [otlp/ins]
 
Installez le collecteur d' OpenTelemetry s à l'aide des graphiques Helm

Pour surveiller Kubernetes avec OpenTelemetry,, installez le collecteur OpenTelemetry à l'aide de la méthode du graphique Helm, car elle offre des options de configuration simples qui facilitent le processus.

Pour collecter les signaux Kubernetes, vous devez installer les collecteurs OpenTelemetry suivants :

Le tableau d' Helm s pour OpenTelemetry Collector nécessite de définir un mode (daemonset ou deployment). Ce mode détermine le type d'installation dans l'environnement d' Kubernetes.

Pour installer OpenTelemetry Collector dans un environnement Kubernetes, procédez comme suit.

  1. Ajoutez le dépôt OpenTelemetry Helm en exécutant les commandes suivantes :

    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
     
  2. Installez le mode daemonset d' OpenTelemetry Collector en suivant les étapes suivantes :

    Exécutez la commande Helm suivante pour installer le mode daemonset du collecteur :

     helm install otel-k8s open-telemetry/opentelemetry-collector --values <<values file>>
     

    Remplacez values file par le nom de votre fichier de valeurs.

    Par exemple, si le fichier de valeurs s'appelle helmValuesDaemonset.yaml, utilisez la commande suivante :

     helm install otel-k8s open-telemetry/opentelemetry-collector --values helmValuesDaemonset.yaml
     
  3. Installez le mode de déploiement d' OpenTelemetry Collector en suivant les étapes suivantes : Exécutez la commande Helm suivante pour installer le mode de déploiement du collecteur :

    helm install otel-k8s-dep open-telemetry/opentelemetry-collector --values <<values file>>
     

    Remplacez values file par le nom de votre fichier de valeurs.

    Par exemple, si le fichier de valeurs s'appelle helmValuesDeployment.yaml, utilisez la commande suivante :

    helm install otel-k8s-dep open-telemetry/opentelemetry-collector --values helmValuesDeployment.yaml
     
  4. Vérifiez l'installation d' OpenTelemetry Collector en exécutant la commande Kubernetes suivante :

    kubectl get pods -A
     

    L'image suivante montre un résultat typique de l'installation du collecteur d' OpenTelemetry s :

    OpenTelemetry Kubernetes statut

Désinstallation du collecteur d' OpenTelemetry

La désinstallation du collecteur OpenTelemetry pour Kubernetes équivaut à la désinstallation des graphiques Helm.

Si vous souhaitez désinstaller à la fois le daemonset et le mode de déploiement d' OpenTelemetry Collector, exécutez la commande suivante :

helm uninstall otel-k8s-dep
helm uninstall otel-k8s
 
Affichage des ressources d' Kubernetes s dans Instana

Une fois que vous avez installé et configuré le collecteur d' OpenTelemetry, vous pouvez afficher les ressources d' Kubernetes dans l'interface utilisateur d' Instana.

Traitement des incidents

Vous pouvez rencontrer les problèmes suivants lors de la surveillance d' Kubernetes s avec le collecteur OpenTelemetry.

CrashImageBackOff dans l' Kubernetes

Le collecteur d' OpenTelemetry s quitte dans certains environnements Kubernetes avec le message « CrashImageBackOff » (Échec de l'activation) et ne parvient pas à s'activer. Pour résoudre ce problème, mettez à jour le port de disponibilité ou de réactivité par défaut dans le fichier yaml comme indiqué dans l'exemple suivant :

config:
  extensions:
    health_check:
      endpoint: ${env:MY_POD_IP}:31000
livenessProbe:
  initialDelaySeconds: 60
  httpGet:
    path: /
    port: 31000
readinessProbe:
  initialDelaySeconds: 60
  httpGet:
    path: /
    port: 31000
 

Configurer un proxy pour envoyer des données au serveur backend

Si votre environnement nécessite un proxy pour acheminer les signaux d' OpenTelemetry s vers le backend ou l'agent d' Instana, configurez les variables d'environnement suivantes.

Variables d'environnement du proxy :

  • HTTP_PROXY: Adresse du serveur proxy de l' HTTP
  • HTTPS_PROXY: Adresse du serveur proxy de l' HTTPS
  • NO_PROXY: Liste d'adresses séparées par des virgules qui doivent contourner le proxy
Important :

Lorsque vous surveillez Kubernetes avec HTTPS_PROXY ou HTTP_PROXY configuré, le récepteur kubelet utilise également le proxy pour récupérer les métriques d' Kubernetes. Ce comportement peut entraîner des erreurs de réception, car le proxy n'est pas un serveur kubelet. Pour résoudre ce problème, ajoutez les plages d'adresses IP de vos pods et nœuds à la variable NO_PROXY afin que le récepteur kubelet puisse communiquer directement avec le serveur Kubernetes API.

Exemple de configuration :

Ajoutez les variables d'environnement suivantes à la configuration de votre collecteur d' OpenTelemetry s :
env:
  - name: HTTPS_PROXY
    value: 'http://proxy.example.com:8080'
  - name: HTTP_PROXY
    value: 'http://proxy.example.com:8080'
  - name: NO_PROXY
    value: '10.10.10.0/24,192.168.0.0/16,localhost,127.0.0.1,.svc,.svc.cluster.local'

Consignes de configuration NO_PROXY :

  • 10.10.10.0/24 - Remplacez par la plage CIDR de votre nœud de cluster
  • 192.168.0.0/16 - Remplacez par la plage CIDR de votre réseau de pods
  • localhost,127.0.0.1 - Adresses de boucle locale
  • .svc,.svc.cluster.local - Suffixes DNS du service Kubernetes

Pour déterminer les plages CIDR de votre cluster :

# Get node CIDR range
kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}'

# Get service CIDR range
kubectl cluster-info dump | grep -m 1 service-cluster-ip-range