Skip to content

[k8s v1.30] kube-state-metrics does not collect Sidecar container resource request or limit metricsΒ #2729

@ibayue

Description

@ibayue

Description

When using kube-state-metrics v2.16.0 (and later) on Kubernetes 1.30, resource request metrics for Sidecar containers (e.g., kube_pod_container_resource_requests_cpu_cores) are missing.
However, on Kubernetes 1.28 with the same kube-state-metrics version, Sidecar container metrics are collected correctly.

Steps to Reproduce

  1. Deploy a Kubernetes 1.30 cluster
  2. Deploy kube-state-metrics v2.16.0
  3. Deploy Pods containing Sidecar containers with explicitly declared resource requests
  4. Query Prometheus metrics and notice the missing Sidecar container resource request metrics

Root Cause Analysis

  • Kubernetes 1.30 introduces GA for Sidecar lifecycle, separating Sidecar containers from Pod.Spec.Containers, changing the API structure.
  • kube-state-metrics still only iterates over Pod.Spec.Containers when collecting metrics, not considering the new Sidecar container fields or Pod.Status.ContainerStatuses.
  • This results in missing resource request metrics for Sidecar containers.

Expected Behavior

kube-state-metrics should support Kubernetes 1.30 and later versions by correctly collecting resource requests and limits for all containers, including Sidecar containers.

Suggested Solution

  • Update the collection logic to iterate over all running containers (e.g., Pod.Status.ContainerStatuses) instead of just Pod.Spec.Containers
  • Or add support for the new Sidecar container fields introduced in Kubernetes 1.30

Environment

  • kube-state-metrics version: v2.16.0
  • Kubernetes version: v1.30
  • Deployment method: Helm Chart / other

Metadata

Metadata

Assignees

Labels

triage/acceptedIndicates an issue or PR is ready to be actively worked on.

Type

No type

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions