Problemas de los contenedores de Windows

En esta página se describen los problemas detectados y no resueltos de monitorización de aplicaciones contenerizadas de Windows.

Problemas frecuentes

La monitorización de aplicaciones contenerizadas de Windows requiere el Datadog Agent v7.19 o posterior.

Las versiones de sistemas operativos compatibles son:

  • Windows Server 2019 (LTSC /1809)
  • Windows Server 2019 1909 (hasta el Agent 7.39, dado que ya no es compatible con Microsoft)
  • Windows Server 2019 2004 o 20H1 (hasta el Agent 7.39, dado que ya no es compatible con Microsoft)
  • Windows Server 2019 20H2 (Agent 7.33 a 7.39, dado que ya no es compatible con Microsoft)
  • Windows Server 2022 LTSC (Agent v7.34 o posterior)

El modo de aislamiento Hyper-V no es compatible.

Las métricas de host para disco, E/S y red están deshabilitadas. No son compatibles con Windows Server, por lo que los checks del Agent están deshabilitados de forma predeterminada.

Problemas con Docker

Los Live Processes no aparecen en los contenedores (excepto el Datadog Agent).

Problemas con Kubernetes

Los Live Processes no aparecen en los contenedores (excepto el Datadog Agent).

Clústeres mixtos (Linux + Windows)

El método recomendado para desplegar el Datadog Agent en un clúster mixto es realizar dos instalaciones del Helm chart con diferentes targetSystem.

El Datadog Agent utiliza un nodeSelector para seleccionar automáticamente nodos Linux o Windows basados en targetSystem.

Sin embargo, no es el caso de Kube State Metrics (que se instala por defecto), por lo que se dan situaciones en las que Kube State Metrics no se puede programar en nodos Windows.

Para evitar este problema existen tres posibilidades:

  • Usar la función taint en tus nodos Windows. En Windows, el Agent siempre permite el taint node.kubernetes.io/os=windows:NoSchedule.
  • Definir el selector de nodo Kube State Metrics a través del Helm chart values.yaml de Datadog:
kube-state-metrics:
  nodeSelector:
    beta.kubernetes.io/os: linux // Kubernetes < 1.14
    kubernetes.io/os: linux // Kubernetes >= 1.14
  • Desplegar Kube State Metrics por tu cuenta de forma independiente estableciendo datadog.kubeStateMetricsEnabled como false.

Nota: Cuando se utilizan dos instalaciones de Datadog (una con targetSystem: linux, otra con targetSystem: windows), es necesario verificar que la segunda tiene datadog.kubeStateMetricsEnabled definido como false para evitar que se desplieguen dos instancias de Kube State Metrics.

Clústeres mixtos con el Datadog Cluster Agent

Con Cluster Agent v1.18 y posteriores, el Datadog Cluster Agent admite una configuración con clústeres mixtos.

Para configurar la comunicación entre los Agents desplegados en nodos Windows y el Cluster Agent, utiliza el siguiente archivo values.yaml.

targetSystem: windows
existingClusterAgent:
  join: true
  serviceName: "<EXISTING_DCA_SERVICE_NAME>" # from the first Datadog Helm chart
  tokenSecretName: "<EXISTING_DCA_SECRET_NAME>" # from the first Datadog Helm chart

# Disable datadogMetrics deployment since it should have been already deployed with the first chart.
datadog-crds:
  crds:
    datadogMetrics: false
# Disable kube-state-metrics deployment
datadog:
  kubeStateMetricsEnabled: false

Opciones de configuración limitadas para los despliegues de Windows

Algunas opciones de configuración no se pueden usar en Windows. A continuación se muestra una lista de opciones no compatibles:

ParámetroMotivo
datadog.dogstatsd.useHostPIDEl PID del host no es compatible con los contenedores de Windows
datadog.dogstatsd.useSocketVolumeLos sockets del Unix no son compatibles con Windows
datadog.dogstatsd.socketPathLos sockets del Unix no son compatibles con Windows
datadog.processAgent.processCollectionNo es posible acceder a los procesos del host/otros contenedores
datadog.systemProbe.seccompSystem probe no está disponible para Windows
datadog.systemProbe.seccompRootSystem probe no está disponible para Windows
datadog.systemProbe.debugPortSystem probe no está disponible para Windows
datadog.systemProbe.enableConntrackSystem probe no está disponible para Windows
datadog.systemProbe.bpfDebugSystem probe no está disponible para Windows
datadog.systemProbe.apparmorSystem probe no está disponible para Windows
agents.useHostNetworkLa red del host no es compatible con los contenedores de Windows

HostPort para el APM o DogStatsD

HostPort es compatible parcialmente con Kubernetes, dependiendo de la versión del sistema operativo subyacente y del plugin CNI. Los requisitos para que funcione HostPort son los siguientes:

  • Se requiere la versión de Windows Server 1909 o posterior
  • El plugin CNI debe ser compatible con la función portMappings

Actualmente, al menos dos plugins CNI admiten esta función:

  • Plugin oficial win-bridge (versión 0.8.6 y posteriores), utilizado por GKE
  • Plugin CNI de Azure, utilizado por AKS

Si tu configuración no cumple estos requisitos, APM y DogStatsD solo funcionarán cuando esté configurada la red pod-to-pod entre el Tracer y el Agent.

Check de Kubelet

Es posible que algunas métricas de Kubelet no estén disponibles (o que el check de Kubelet agote el tiempo de espera) en función de la versión de Kubernetes que utilices. Para disfrutar de una experiencia óptima, utiliza cualquiera de los siguientes:

  • Kubelet 1.16.13 y posteriores (1.16.11 en GKE)
  • Kubelet 1.17.9 y posteriores (1.17.6 en GKE)
  • Kubelet 1.18.6 y posteriores
  • Kubelet 1.19 y posteriores

Con la versión 7.19.2 y posteriores del Agent

Ten en cuenta que no todas las opciones de kubernetes.* están disponibles en Windows, puedes encontrar la lista de las disponibles a continuación:

  • kubernetes.cpu.usage.total
  • kubernetes.containers.restarts
  • kubernetes.containers.running
  • kubernetes.cpu.capacity
  • kubernetes.ephemeral_storage.usage
  • kubernetes.kubelet.container.log_filesystem.used_bytes
  • kubernetes.kubelet.network_plugin.latency.count
  • kubernetes.kubelet.network_plugin.latency.quantile
  • kubernetes.kubelet.network_plugin.latency.sum
  • kubernetes.kubelet.runtime.errors
  • kubernetes.kubelet.runtime.operations
  • kubernetes.memory.capacity
  • kubernetes.pods.running
  • kubernetes.rest.client.latency.count
  • kubernetes.rest.client.latency.sum
  • kubernetes.rest.client.requests
  • kubernetes.network.tx_bytes
  • kubernetes.network.rx_bytes
  • kubernetes.cpu.usage.total
  • kubernetes.memory.working_set
  • kubernetes.filesystem.usage
  • kubernetes.filesystem.usage_pct