Add a check to skip stats for containers that are not running
When a container is just created, exited state the container will not have stats. A common case for this in k8s is the init containers for a pod. The will be present in the listed containers but will not have a running task and there for no stats. Signed-off-by: James Sturtevant <jstur@microsoft.com>
This commit is contained in:
@@ -71,7 +71,6 @@ func (c *criService) podSandboxStats(
|
||||
podSandboxStats.Windows.Cpu = podCPU.Cpu
|
||||
podSandboxStats.Windows.Memory = podCPU.Memory
|
||||
podSandboxStats.Windows.Containers = containerStats
|
||||
|
||||
podSandboxStats.Windows.Network = windowsNetworkUsage(ctx, sandbox, timestamp)
|
||||
|
||||
pidCount, err := c.getSandboxPidCount(ctx, sandbox)
|
||||
@@ -128,6 +127,11 @@ func (c *criService) toPodSandboxStats(sandbox sandboxstore.Sandbox, statsMap ma
|
||||
for _, cntr := range containers {
|
||||
containerMetric := statsMap[cntr.ID]
|
||||
|
||||
if cntr.Status.Get().State() != runtime.ContainerState_CONTAINER_RUNNING {
|
||||
// containers that are just created, in a failed state or exited (init containers) will not have stats
|
||||
continue
|
||||
}
|
||||
|
||||
if containerMetric == nil {
|
||||
return nil, nil, fmt.Errorf("failed to find metrics for container with id %s: %w", cntr.ID, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user