Problèmes avec les conteneurs Windows
Cette page décrit les problèmes connus et non résolus pouvant affecter la surveillance d’applications Windows conteneurisées.
Problèmes courants
La surveillance d’applications Windows conteneurisées nécessite l’Agent Datadog 7.19+.
Voici la liste des versions des systèmes d’exploitation prises en charge :
- Windows Server 2019 (LTSC/1809)
- Windows Server 2019 1909 (jusqu’à la version 7.39 de l’Agent ; n’est plus pris en charge par Microsoft)
- Windows Server 2019 2004 ou 20H1 (jusqu’à la version 7.39 de l’Agent ; n’est plus pris en charge par Microsoft)
- Windows Server 2019 20H2 (pour les versions 7.33 à 7.39 de l’Agent ; n’est plus pris en charge par Microsoft)
- Windows Server 2022 LTSC (version 7.34 et versions ultérieures de l’Agent)
Le mode d’isolation Hyper-V n’est pas pris en charge.
Les métriques de host relatives au disque, aux E/S et au réseau sont désactivées. Elles ne sont pas prises en charge par Windows Server, et les checks de l’Agent sont désactivés par défaut.
Problèmes avec Docker
Les live processes ne s’affichent pas dans les conteneurs (sauf pour l’Agent Datadog).
Problèmes avec Kubernetes
Les live processes ne s’affichent pas dans les conteneurs (sauf pour l’Agent Datadog).
Clusters mixte (Linux + Windows)
Pour déployer l’Agent Datadog sur un cluster mixte, il est conseillé d’effectuer deux installations du chart Helm avec des targetSystem différents.
L’Agent Datadog utilise un nodeSelector pour sélectionner automatiquement les nœuds Linux ou Windows en fonction du targetSystem.
Ce n’est toutefois pas le cas pour Kube State Metrics (qui est installé par défaut), ce qui peut empêcher la planification de Kube State Metrics sur les nœuds Windows.
Trois solutions sont possibles pour éviter ce problème :
Utilisez la fonctionnalité taint sur vos nœuds Windows. Sous Windows, l’Agent autorise toujours le taint node.kubernetes.io/os=windows:NoSchedule.
Définissez le sélecteur de nœud Kube State Metrics via le chart Helm Datadog values.yaml :
kube-state-metrics:
nodeSelector:
beta.kubernetes.io/os: linux // Kubernetes < 1.14
kubernetes.io/os: linux // Kubernetes >= 1.14
Déployez Kube State Metrics vous-même séparément en définissant datadog.kubeStateMetricsEnabled sur false.
Remarque : lorsque vous utilisez deux installations de Datadog (une avec targetSystem: linux et une autre avec targetSystem: windows), assurez-vous que le paramètre datadog.kubeStateMetricsEnabled est défini sur false pour la deuxième installation afin d’empêcher le déploiement de deux instances de Kube State Metrics.
Certaines mesures ne sont pas disponibles pour les déploiements sur Windows. Voir métriques disponibles.
Clusters mixtes avec l’Agent de cluster Datadog
Depuis la version 1.18 de l’Agent de cluster, les configurations reposant sur des clusters mixtes sont prises en charge.
Utilisez le fichier values.yaml suivant pour configurer les communications entre les Agents déployés sur les nœuds Windows et l’Agent de cluster.
targetSystem: windows
existingClusterAgent:
join: true
serviceName: "<NOM_SERVICE_EXISTANT_AGENT_CLUSTER_DATADOG>" # provenant du premier chart Helm Datadog
tokenSecretName: "<NOM_SECRET_EXISTANT_AGENT_CLUSTER_DATADOG>" # provenant du premier chart Helm Datadog
# Désactiver le déploiement de datadogMetrics, car il est déjà réalisé par le premier chart
datadog-crds:
crds:
datadogMetrics: false
# Désactiver le déploiement de kube-state-metrics
datadog:
kubeStateMetricsEnabled: false
Options de configuration limitées pour les déploiements Windows
La liste suivante répertorie les options de configuration qui ne sont pas disponibles sous Windows :
| Paramètre | Raison |
|---|
datadog.dogstatsd.useHostPID | PID de host incompatible avec les conteneurs Windows |
datadog.dogstatsd.useSocketVolume | Sockets Unix incompatibles avec Windows |
datadog.dogstatsd.socketPath | Sockets Unix incompatibles avec Windows |
datadog.processAgent.processCollection | Impossible d’accéder aux processus des hosts et des autres conteneurs |
datadog.systemProbe.seccomp | System probe indisponible sous Windows |
datadog.systemProbe.seccompRoot | System probe indisponible sous Windows |
datadog.systemProbe.debugPort | System probe indisponible sous Windows |
datadog.systemProbe.enableConntrack | System probe indisponible sous Windows |
datadog.systemProbe.bpfDebug | System probe indisponible sous Windows |
datadog.systemProbe.apparmor | System probe indisponible sous Windows |
agents.useHostNetwork | Réseau host incompatible avec les conteneurs Windows |
HostPort pour l’APM ou DogStatsD
HostPort est partiellement pris en charge sur Kubernetes, en fonction de la version du système d’exploitation sous-jacent et du plug-in CNI.
Pour que HostPort fonctionne, les exigences suivantes doivent être satisfaites :
- La version de Windows Server doit être >= 1909
- Le plug-in CNI doit prendre en charge la fonctionnalité
portMappings
Actuellement, au moins deux plug-ins CNI prennent en charge cette fonctionnalité :
- Plug-in
win-bridge officiel (version >= 0.8.6) - Utilisé par GKE - Plug-in CNI Azure - Utilisé par AKS
Si votre configuration ne répond pas à ces exigences, l’APM et DogStatsD fonctionneront uniquement lorsqu’une mise en réseau pod à pod est configurée entre le traceur et l’Agent.
Check Kubelet
Selon votre version de Kubernetes, il est possible que certaines métriques Kubelet ne soient pas disponibles (ou que le délai d’attente du check Kubelet expire).
Pour une expérience optimale, utilisez l’une des versions suivantes avec l’Agent Datadog v7.19.2 ou ultérieur :
- Kubelet v1.16.13+ (v1.16.11+ avec GKE)
- Kubelet v1.17.9+ (v1.17.6+ avec GKE)
- Kubelet v1.18.6+
- Kubelet v1.19+
Métriques limitées pour les déploiements Windows
Les métriques kubernetes.* suivantes sont disponibles pour les conteneurs Windows :
kubernetes.cpu.usage.totalkubernetes.containers.restartskubernetes.containers.runningkubernetes.cpu.capacitykubernetes.ephemeral_storage.usagekubernetes.kubelet.container.log_filesystem.used_byteskubernetes.kubelet.network_plugin.latency.countkubernetes.kubelet.network_plugin.latency.quantilekubernetes.kubelet.network_plugin.latency.sumkubernetes.kubelet.runtime.errorskubernetes.kubelet.runtime.operationskubernetes.memory.capacitykubernetes.pods.runningkubernetes.rest.client.latency.countkubernetes.rest.client.latency.sumkubernetes.rest.client.requestskubernetes.network.tx_byteskubernetes.network.rx_byteskubernetes.cpu.usage.totalkubernetes.memory.working_setkubernetes.filesystem.usagekubernetes.filesystem.usage_pct