The Deployments view shows aggregated resource usage across all pods in each deployment.

Deployments List Page Columns
Deployment Name
- This column is derived from the resource attribute
k8s.deployment.name. - Identifier of the Kubernetes Deployment.
- Click the name to open the deployment detail page and drill into CPU/memory vs request/limit charts, network activity, logs, and events for the deployment's pods.
Namespace Name
- This column is derived from the resource attribute
k8s.namespace.name. - Namespace the Deployment belongs to.
- Use it to filter the list to a specific tenant or team and to navigate to the namespace-level view for aggregate workload status across Deployments, StatefulSets, DaemonSets, and Jobs.
Pod Replicas
- A combined, always-visible summary of the deployment's pod replica counts: Available (green) and Desired (blue) shown side by side. Both are described in full in the Available and Desired sections below. At a glance: Available equal to Desired means the rollout is complete and healthy; Available below Desired means a rollout, scaling event, or degraded state is in progress.
- This summary is display-only and cannot be sorted. To sort the list by replica count, enable the dedicated Available Pods and Desired Pods columns (both hidden by default) from the Columns selector.
Available
- This column relies on the OTel metric
k8s.deployment.availablefrom the k8s_cluster receiver, defined as "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment". - This is the K8s
.status.availableReplicasfield: pods that pass readiness checks and have been ready for at leastminReadySeconds. Available < Desired during a rollout is expected; if it stays low after the rollout window, the deployment is degraded. - A persistent Available < Desired means new pods are failing to start or pass readiness:
kubectl rollout status deployment/<name>and the pod events surface the root cause (image-pull failure, failing readiness probe, insufficient cluster capacity).
Desired
- This column relies on the OTel metric
k8s.deployment.desiredfrom the k8s_cluster receiver: the.spec.replicasfield of the Deployment. - Number of pods the Deployment controller intends to maintain. A Horizontal Pod Autoscaler (HPA) attached to the Deployment will mutate
.spec.replicas, so this value changes when the HPA scales up or down. - Compare against Available to assess deployment health: equal → rollout complete and healthy; not equal → rollout in progress, scaling event, or degraded state.
CPU Req Usage (%)
- This column relies on the OTel metric
k8s.pod.cpu_request_utilizationfrom the kubeletstats receiver, averaged across the deployment's pods. - Average ratio of pod CPU usage to the sum of its containers' CPU requests across the deployment's pods, expressed as a percentage. Values consistently >100% mean pods are using more CPU than reserved (allowed, but a signal requests are under-provisioned); values well below 50% indicate over-provisioned reservations.
- Use this to detect under-/over-provisioning at the deployment level: adjust the pod spec's
resources.requests.cputo pack the cluster better and reduce scheduling friction. - Color of the in-table progress bar reflects the value: amber below 50% (request likely over-provisioned, wasted capacity), green between 50% and 100% (healthy), red between 100% and 150% (request under-provisioned), and dark red above 150%.
CPU Limit Usage (%)
- This column relies on the OTel metric
k8s.pod.cpu_limit_utilizationfrom the kubeletstats receiver, averaged across the deployment's pods. - Average ratio of pod CPU usage to the sum of its containers' CPU limits across the deployment's pods, expressed as a percentage. Per K8s docs, "when a container approaches its
cpulimit, the kernel restricts access to the CPU": values near 100% indicate active or imminent throttling. - Sustained high values mean the deployment's pods are throttling under load and either need a higher
limits.cpuor more replicas to absorb the work. - Color of the in-table progress bar reflects the value: green below 60% (healthy headroom), light amber between 60% and 80% (caution), amber between 80% and 95% (high, throttling becoming likely), and red above 95% (critical, at or beyond the limit).
CPU Usage (cores)
- This column relies on the OTel metric
k8s.pod.cpu.usagefrom the kubeletstats receiver, summed across the deployment's pods. - Total CPU consumed by all of the Deployment's pods in CPU-core units: a value of
1.0means one full core in use across the deployment. - Use this for absolute capacity planning when you need the deployment's raw CPU draw rather than a ratio; pair with the chart on the detail page to see how the cores trend against the deployment's aggregate requests/limits.
Mem Req Usage (%)
- This column relies on the OTel metric
k8s.pod.memory_request_utilizationfrom the kubeletstats receiver, averaged across the deployment's pods. - Average ratio of pod memory usage to the sum of its containers' memory requests across the deployment's pods, expressed as a percentage. As with CPU, sustained values >100% mean pods are using more memory than reserved; values well below 50% indicate over-provisioned reservations.
- Use this to right-size the deployment's
resources.requests.memory; consistently low values free up scheduling capacity for other workloads. - Color of the in-table progress bar reflects the value: amber below 50% (request likely over-provisioned, wasted capacity), green between 50% and 100% (healthy), red between 100% and 150% (request under-provisioned), and dark red above 150%.
Mem Limit Usage (%)
- This column relies on the OTel metric
k8s.pod.memory_limit_utilizationfrom the kubeletstats receiver, averaged across the deployment's pods. - Average ratio of pod memory usage to the sum of its containers' memory limits across the deployment's pods, expressed as a percentage. Per K8s docs, "when a container uses more than its
memorylimit, the kernel may terminate it" via an OOMKill: values near 100% indicate sustained OOMKill risk. - Sustained values approaching 100% mean a single pod in the deployment is on the verge of an OOMKill; raise
limits.memory, fix the memory leak, or add replicas to spread load. - Color of the in-table progress bar reflects the value: green below 60% (healthy headroom), light amber between 60% and 80% (caution), amber between 80% and 95% (high, OOMKill becoming likely), and red above 95% (critical, at or beyond the limit).
Mem Usage (WSS)
- This column relies on the OTel metric
k8s.pod.memory.working_setfrom the kubeletstats receiver, summed across the deployment's pods. - Total Working Set Size across the Deployment's pods: anonymous + active file pages, excluding reclaimable inactive file pages (the value the kubelet uses for eviction).
- Sustained high WSS without explicit
limits.memoryon the deployment's containers means individual pods can grow until the kubelet evicts them under node MemoryPressure; set explicit limits or add aLimitRangeto the namespace.
Pod Counts by Phase
- This column relies on the OTel metric
k8s.pod.phasefrom the k8s_cluster receiver, encoded1= Pending,2= Running,3= Succeeded,4= Failed,5= Unknown. - Counts of the Deployment's pods grouped by their latest observed lifecycle phase within the selected window, per the Kubernetes pod-lifecycle spec.
- A persistent
Pendingcount means the Deployment's pods can't be scheduled (insufficient capacity, taints blocking placement, or a ResourceQuota);Failed/Unknownspikes warrant inspectingkubectl describe deploymentand the failing pods' events.
Pod Counts by Status
- This column relies on the OTel metric(s):
k8s.pod.phase,k8s.pod.status_reason, andk8s.container.status.reasonfrom the k8s_cluster receiver. The latter two are disabled by default in the upstream receiver but enabled by default in the k8s-infra chart; all three must be flowing for this column to be populated. - Counts of the Deployment's pods grouped by their kubectl-style display status within the selected window. The status is derived exactly as on the Pods view; see Pod Status for the full priority cascade, the statuses it surfaces, and the statuses it cannot derive.
- Any
CrashLoopBackOff/OOMKilled/ImagePullBackOffcount is a failing-rollout signal: the new ReplicaSet's pods aren't coming up; read it alongside the Available vs Desired counts and confirm withkubectl rollout status deployment/<name>.
Deployment Detail Page
Click a Deployment name to open the detail page. The header shows Deployment Name, Cluster Name, and Namespace Name. The detail page includes five tabs: Metrics, Logs, Traces, Events, and Pod Metrics.

Deployments Metrics - Charts and Panels
CPU Usage, Request, Limits
- This chart relies on the OTel metrics
k8s.pod.cpu.usage,k8s.container.cpu_request, andk8s.container.cpu_limitfrom the kubeletstats receiver, aggregated across the Deployment's pods and containers. - Plots three series, all averaged within the step interval and summed across the Deployment's pods: the Deployment's total CPU Usage in cores, container CPU Requests, and container CPU Limits. Usage approaching Limits means the kernel is throttling the Deployment's CPU; Usage well below Requests means the Deployment is reserving more capacity than it consumes.
- Use this to right-size the Deployment's
requests.cpuandlimits.cpuand to confirm whether highCPU Limit Usage (%)on the list page corresponds to a real throttling pattern: if Usage hugs the Limits line, throttle events are happening.
Memory Usage, Request, Limits
- This chart relies on the OTel metrics
k8s.pod.memory.usage,k8s.container.memory_request, andk8s.container.memory_limitfrom the kubeletstats receiver, aggregated across the Deployment's pods and containers. - Plots three series, all averaged within the step interval and summed across the Deployment's pods: the Deployment's total Memory Usage in bytes, container Memory Requests, and container Memory Limits. Note that this uses
k8s.pod.memory.usage(which includes reclaimable page cache), so it reads higher than the working-set value the kubelet uses for eviction decisions. - Use this alongside the
Mem Limit Usage (%)column on the list page: Usage approaching Limits is a leading indicator for OOMKills, and inspecting whether it's a slow climb (leak) or a sudden spike (workload change) shapes the fix.
Network IO
- This chart relies on the OTel metric
k8s.pod.network.iofrom the kubeletstats receiver: a cumulative Sum in bytes with attributesdirectionandinterface, shown as a per-second rate and aggregated across the Deployment's pods. - One line per
direction :: interfacecombination, showing transmit/receive throughput across all pods of the Deployment. - Use this to detect whether the Deployment is the source of unusual network load on a node: sudden throughput spikes, sustained saturation near the underlying NIC's rated bandwidth, or a discontinuity in the receive-vs-transmit pattern that doesn't track an explained workload change are the signals worth investigating. "No Data" means none of the pods are reporting per-pod network metrics.
Network Error Count
- This chart relies on the OTel metric
k8s.pod.network.errorsfrom the kubeletstats receiver: a cumulative Sum with attributesdirectionandinterface, shown as a per-second increase and aggregated across the Deployment's pods. - One line per
direction :: interfacecombination, sourced from the kubelet's per-pod-interface error counters. - Sustained non-zero values warrant attention: common causes are misconfigured CNI plugins, MTU mismatches, or faulty NICs on the underlying nodes; correlate with the Node Detail → Network Errors chart on the specific node(s) hosting the Deployment's pods.
Pod Metrics
The Pod Metrics tab breaks resource utilization down per pod across every pod in the Deployment. All charts are scoped to this Deployment (filtered by k8s.cluster.name, k8s.namespace.name, and k8s.deployment.name), grouped by k8s.pod.name (one line per pod), averaged within each step interval, and expressed as a percentage.
CPU Limit Utilization By Pod Name
- This chart relies on the OTel metric
k8s.pod.cpu_limit_utilizationfrom the kubeletstats receiver: a pod's CPU usage as a fraction of the sum of its containers' CPU limits, emitted directly as a ratio. - Plots one line per pod in the Deployment, each showing that pod's CPU usage against its CPU limit; values near 100% mean the kernel is actively throttling that pod's CPU.
- Use it to pinpoint which replica is throttled: a single line hugging 100% while the rest sit low points to a hot pod or uneven load balancing, whereas all pods running high means the Deployment's
limits.cpuis too low.
CPU Request Utilization By Pod Name
- This chart relies on the OTel metric
k8s.pod.cpu_request_utilizationfrom the kubeletstats receiver: a pod's CPU usage as a fraction of the sum of its containers' CPU requests. - Plots one line per pod in the Deployment, each showing usage against its CPU request; values above 100% mean the pod is using more CPU than it reserved (allowed, but a sign the request is low).
- Use it to judge reservation accuracy per replica: pods consistently far below 100% are over-provisioned, pods above it are under-requested; uneven values across identical replicas usually indicate skewed traffic rather than a sizing problem.
Memory Limit Utilization By Pod Name
- This chart relies on the OTel metric
k8s.pod.memory_limit_utilizationfrom the kubeletstats receiver: a pod's memory usage as a fraction of the sum of its containers' memory limits. - Plots one line per pod in the Deployment, each showing that pod's memory usage against its memory limit; a line at or near 100% is a pod on the verge of an OOMKill.
- Use it to isolate the replica at risk: a steady per-pod climb is a memory-leak signature confined to that pod; raise
limits.memoryor fix the leak rather than scaling the whole Deployment.
Memory Request Utilization By Pod Name
- This chart relies on the OTel metric
k8s.pod.memory_request_utilizationfrom the kubeletstats receiver: a pod's memory usage as a fraction of the sum of its containers' memory requests. - Plots one line per pod in the Deployment, each showing usage against its memory request; values above 100% mean the pod exceeds its reservation.
- Use it to right-size
requests.memoryper replica and catch imbalance: pods well below 100% reserve memory they never use, while pods above it risk eviction first under node memory pressure.
FileSystem Usage Percentage By Pod Name
- This chart is derived from two kubeletstats metrics:
k8s.pod.filesystem.usage(bytes used) divided byk8s.pod.filesystem.capacity(total bytes); only the computed ratio is plotted, not the raw metrics. - Plots one line per pod in the Deployment, each showing that pod's local/ephemeral filesystem fill level as a percentage of its capacity.
- Watch any pod trending toward 100%: its ephemeral storage is filling (unrotated logs, cached artifacts, temp files) and writes will start failing or the pod may be evicted; a single climbing line isolates the culprit replica.
Next steps
- Kubernetes Monitoring: back to the Kubernetes Monitoring overview.
- Setup Kubernetes Metrics: configure the receivers this page's metrics depend on.
- Pods and Namespaces: drill into individual replicas or roll up to the namespace.