Dash0 Raises $110M Series B at $1B Valuation

Last updated: May 7, 2026

Kubernetes Resources

Resource equality rules and naming conventions for Kubernetes workloads, pods, nodes, and clusters.

This page documents how Dash0 identifies and names Kubernetes resources using Kubernetes semantic conventions from OpenTelemetry.

Tip

For real-world examples of how these rules solve fragmentation issues, see Why Resource Equality?

Equality Rules

Kubernetes resources are identified using a hierarchy of rules that prioritize the most stable and unique identifiers.

Kubernetes Workload Equality

For applications running in pods:

  • By Pod UID: k8s.pod.uid (unique across clusters)
Note

The k8s.pod.uid attribute uniquely identifies a pod throughout its entire lifecycle, even across node migrations or restarts. This is the only pod-based equality rule. If k8s.pod.uid is not present, the resource will fall back to workload-level equality rules (deployment, daemonset, etc.) or service triplet equality.

Kubernetes Resource Equality

Cluster-level resources, such as namespaces and deployments, are identified separately from pod-level resources.

For aggregate metrics and events about Kubernetes resources (not pods):

  • Workload Schedulers: k8s.daemonset.uid OR k8s.deployment.uid OR k8s.replicaset.uid OR k8s.statefulset.uid OR k8s.cronjob.uid OR k8s.job.uid
  • Namespaces: k8s.namespace.uid OR k8s.namespace.name
  • Clusters: k8s.cluster.uid OR k8s.cluster.name OR aws.eks.cluster.arn

Kubernetes Node Equality

Nodes are identified only when pod and workload attributes are absent, preventing node metrics from merging with pod metrics.

When k8s.node.name or k8s.node.id is set AND no pod/workload attributes are present:

  • By Node ID: k8s.node.id OR k8s.node.name

Naming Rules

Kubernetes resource names are derived from Kubernetes-specific attributes, preferring human-readable names over UIDs.

ConditionName
k8s.pod.name or k8s.pod.uid setPod name or UID
k8s.job.name or k8s.job.uid setJob name or UID
k8s.cronjob.name or k8s.cronjob.uid setCronJob name or UID
k8s.daemonset.name or k8s.daemonset.uid setDaemonSet name or UID
k8s.replicaset.name or k8s.replicaset.uid setReplicaSet name or UID
k8s.deployment.name or k8s.deployment.uid setDeployment name or UID
k8s.statefulset.name or k8s.statefulset.uid setStatefulSet name or UID
k8s.namespace.name or k8s.namespace.uid setNamespace name
k8s.node.name or k8s.node.uid set (no workload attrs)Node name or UID
k8s.cluster.name, aws.eks.cluster.arn, or k8s.cluster.uid setCluster name, ARN, or UID

Typing Rules

Kubernetes resource types are assigned based on the presence of specific Kubernetes attributes. Types enable filtering and visualization by resource category in the Dash0 UI.

ConditionTypeUI Label
k8s.pod.name or k8s.pod.uid setk8s.podPod
k8s.cronjob.name or k8s.cronjob.uid setk8s.cronjobCronJob
k8s.job.name or k8s.job.uid setk8s.jobJob
k8s.replicaset.name or k8s.replicaset.uid setk8s.replicasetReplicaSet
k8s.daemonset.name or k8s.daemonset.uid setk8s.daemonsetDaemonSet
k8s.deployment.name or k8s.deployment.uid setk8s.deploymentDeployment
k8s.statefulset.name or k8s.statefulset.uid setk8s.statefulsetStatefulSet
k8s.namespace.name or k8s.namespace.uid setk8s.namespaceNamespace
k8s.node.name or k8s.node.uid set (no workload attrs)k8s.nodeNode
k8s.cluster.name, aws.eks.cluster.arn, or k8s.cluster.uid setk8s.clusterCluster

Best Practices

Service Mesh Considerations

When using service meshes like Istio or Linkerd, pod association mechanisms based on IP address lookups may be unreliable due to sidecar proxies. For reliable resource correlation in service mesh environments, ensure your instrumentation includes k8s.pod.uid directly from the Downward API rather than relying on IP-based association. See Kubernetes Attributes Best Practices for detailed guidance.

Further Reading

For more information on resource equality and Kubernetes-specific configurations, explore the following resources.

Dash0 Guides & Knowledge

OpenTelemetry Resources