diff --git a/.chloggen/add_missing_k8s_attributes.yaml b/.chloggen/add_missing_k8s_attributes.yaml new file mode 100644 index 0000000000..7afd9a4a32 --- /dev/null +++ b/.chloggen/add_missing_k8s_attributes.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: k8s + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Adds `k8s.pod.ip`, `k8s.pod.hostname` and `k8s.pod.start_time` attributes + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [3171] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/registry/attributes/k8s.md b/docs/registry/attributes/k8s.md index d0731419f0..ac30cf3c6b 100644 --- a/docs/registry/attributes/k8s.md +++ b/docs/registry/attributes/k8s.md @@ -55,22 +55,25 @@ Kubernetes resource attributes. | `k8s.node.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the Node. | `node-1` | | `k8s.node.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the Node. | `1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2` | | `k8s.pod.annotation.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. [21] | `true`; `x64`; `` | -| `k8s.pod.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the Pod, the `` being the label name, the value being the label value. [22] | `my-app`; `x64`; `` | +| `k8s.pod.hostname` | ![Development](https://img.shields.io/badge/-development-blue) | string | Specifies the hostname of the Pod. [22] | `collector-gateway` | +| `k8s.pod.ip` | ![Development](https://img.shields.io/badge/-development-blue) | string | IP address allocated to the Pod. [23] | `172.18.0.2` | +| `k8s.pod.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the Pod, the `` being the label name, the value being the label value. [24] | `my-app`; `x64`; `` | | `k8s.pod.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the Pod. | `opentelemetry-pod-autoconf` | +| `k8s.pod.start_time` | ![Development](https://img.shields.io/badge/-development-blue) | string | The start timestamp of the Pod. [25] | `2025-12-04T08:41:03Z` | | `k8s.pod.status.phase` | ![Development](https://img.shields.io/badge/-development-blue) | string | The phase for the pod. Corresponds to the `phase` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) | `Pending`; `Running` | | `k8s.pod.status.reason` | ![Development](https://img.shields.io/badge/-development-blue) | string | The reason for the pod state. Corresponds to the `reason` field of the: [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.33/#podstatus-v1-core) | `Evicted`; `NodeAffinity` | | `k8s.pod.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the Pod. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | -| `k8s.replicaset.annotation.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [23] | `0`; `` | -| `k8s.replicaset.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. [24] | `guestbook`; `` | +| `k8s.replicaset.annotation.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [26] | `0`; `` | +| `k8s.replicaset.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. [27] | `guestbook`; `` | | `k8s.replicaset.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the ReplicaSet. | `opentelemetry` | | `k8s.replicaset.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the ReplicaSet. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | `k8s.replicationcontroller.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the replication controller. | `opentelemetry` | | `k8s.replicationcontroller.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the replication controller. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | `k8s.resourcequota.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the resource quota. | `opentelemetry` | -| `k8s.resourcequota.resource_name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the K8s resource a resource quota defines. [25] | `count/replicationcontrollers` | +| `k8s.resourcequota.resource_name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the K8s resource a resource quota defines. [28] | `count/replicationcontrollers` | | `k8s.resourcequota.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the resource quota. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | -| `k8s.statefulset.annotation.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [26] | `1`; `` | -| `k8s.statefulset.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. [27] | `guestbook`; `` | +| `k8s.statefulset.annotation.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [29] | `1`; `` | +| `k8s.statefulset.label.` | ![Development](https://img.shields.io/badge/-development-blue) | string | The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. [30] | `guestbook`; `` | | `k8s.statefulset.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of the StatefulSet. | `opentelemetry` | | `k8s.statefulset.uid` | ![Development](https://img.shields.io/badge/-development-blue) | string | The UID of the StatefulSet. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | `k8s.storageclass.name` | ![Development](https://img.shields.io/badge/-development-blue) | string | The name of K8s [StorageClass](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#storageclass-v1-storage-k8s-io) object. | `gold.storageclass.storage.k8s.io` | @@ -217,7 +220,17 @@ When this occurs, the exact value as reported by the Kubernetes API SHOULD be us - An annotation `data` with empty string value SHOULD be recorded as the `k8s.pod.annotation.data` attribute with value `""`. -**[22] `k8s.pod.label.`:** Examples: +**[22] `k8s.pod.hostname`:** The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. +Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) +for more information about this field. + +This attribute aligns with the `hostname` field of the +[K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + +**[23] `k8s.pod.ip`:** This attribute aligns with the `podIP` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + +**[24] `k8s.pod.label.`:** Examples: - A label `app` with value `my-app` SHOULD be recorded as the `k8s.pod.label.app` attribute with value `"my-app"`. @@ -226,30 +239,37 @@ When this occurs, the exact value as reported by the Kubernetes API SHOULD be us - A label `data` with empty string value SHOULD be recorded as the `k8s.pod.label.data` attribute with value `""`. -**[23] `k8s.replicaset.annotation.`:** Examples: +**[25] `k8s.pod.start_time`:** Date and time at which the object was acknowledged by the Kubelet. +This is before the Kubelet pulled the container image(s) for the pod. + +This attribute aligns with the `startTime` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), +in ISO 8601 (RFC 3339 compatible) format. + +**[26] `k8s.replicaset.annotation.`:** Examples: - A label `replicas` with value `0` SHOULD be recorded as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. - A label `data` with empty string value SHOULD be recorded as the `k8s.replicaset.annotation.data` attribute with value `""`. -**[24] `k8s.replicaset.label.`:** Examples: +**[27] `k8s.replicaset.label.`:** Examples: - A label `app` with value `guestbook` SHOULD be recorded as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. - A label `injected` with empty string value SHOULD be recorded as the `k8s.replicaset.label.injected` attribute with value `""`. -**[25] `k8s.resourcequota.resource_name`:** The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. +**[28] `k8s.resourcequota.resource_name`:** The value for this attribute can be either the full `count/[.]` string (e.g., count/deployments.apps, count/pods), or, for certain core Kubernetes resources, just the resource name (e.g., pods, services, configmaps). Both forms are supported by Kubernetes for object count quotas. See [Kubernetes Resource Quotas documentation](https://kubernetes.io/docs/concepts/policy/resource-quotas/#quota-on-object-count) for more details. -**[26] `k8s.statefulset.annotation.`:** Examples: +**[29] `k8s.statefulset.annotation.`:** Examples: - A label `replicas` with value `1` SHOULD be recorded as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. - A label `data` with empty string value SHOULD be recorded as the `k8s.statefulset.annotation.data` attribute with value `""`. -**[27] `k8s.statefulset.label.`:** Examples: +**[30] `k8s.statefulset.label.`:** Examples: - A label `replicas` with value `0` SHOULD be recorded as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. diff --git a/docs/registry/entities/k8s.md b/docs/registry/entities/k8s.md index 4fb5f34743..496441f035 100644 --- a/docs/registry/entities/k8s.md +++ b/docs/registry/entities/k8s.md @@ -289,7 +289,10 @@ conflict. | Identity | [`k8s.pod.uid`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The UID of the Pod. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | Description | [`k8s.pod.name`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The name of the Pod. | `opentelemetry-pod-autoconf` | | Description | [`k8s.pod.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. [17] | `true`; `x64`; `` | -| Description | [`k8s.pod.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the Pod, the `` being the label name, the value being the label value. [18] | `my-app`; `x64`; `` | +| Description | [`k8s.pod.hostname`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | Specifies the hostname of the Pod. [18] | `collector-gateway` | +| Description | [`k8s.pod.ip`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | IP address allocated to the Pod. [19] | `172.18.0.2` | +| Description | [`k8s.pod.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the Pod, the `` being the label name, the value being the label value. [20] | `my-app`; `x64`; `` | +| Description | [`k8s.pod.start_time`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The start timestamp of the Pod. [21] | `2025-12-04T08:41:03Z` | **[17] `k8s.pod.annotation.`:** Examples: @@ -300,7 +303,17 @@ conflict. - An annotation `data` with empty string value SHOULD be recorded as the `k8s.pod.annotation.data` attribute with value `""`. -**[18] `k8s.pod.label.`:** Examples: +**[18] `k8s.pod.hostname`:** The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. +Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) +for more information about this field. + +This attribute aligns with the `hostname` field of the +[K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + +**[19] `k8s.pod.ip`:** This attribute aligns with the `podIP` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + +**[20] `k8s.pod.label.`:** Examples: - A label `app` with value `my-app` SHOULD be recorded as the `k8s.pod.label.app` attribute with value `"my-app"`. @@ -309,6 +322,13 @@ conflict. - A label `data` with empty string value SHOULD be recorded as the `k8s.pod.label.data` attribute with value `""`. +**[21] `k8s.pod.start_time`:** Date and time at which the object was acknowledged by the Kubelet. +This is before the Kubelet pulled the container image(s) for the pod. + +This attribute aligns with the `startTime` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), +in ISO 8601 (RFC 3339 compatible) format. + ## K8s Replicaset **Status:** ![Development](https://img.shields.io/badge/-development-blue) @@ -323,17 +343,17 @@ conflict. | --- | --- | --- | --- | --- | --- | --- | | Identity | [`k8s.replicaset.uid`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The UID of the ReplicaSet. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | Description | [`k8s.replicaset.name`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The name of the ReplicaSet. | `opentelemetry` | -| Description | [`k8s.replicaset.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [19] | `0`; `` | -| Description | [`k8s.replicaset.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. [20] | `guestbook`; `` | +| Description | [`k8s.replicaset.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the ReplicaSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [22] | `0`; `` | +| Description | [`k8s.replicaset.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the ReplicaSet, the `` being the label name, the value being the label value, even if the value is empty. [23] | `guestbook`; `` | -**[19] `k8s.replicaset.annotation.`:** Examples: +**[22] `k8s.replicaset.annotation.`:** Examples: - A label `replicas` with value `0` SHOULD be recorded as the `k8s.replicaset.annotation.replicas` attribute with value `"0"`. - A label `data` with empty string value SHOULD be recorded as the `k8s.replicaset.annotation.data` attribute with value `""`. -**[20] `k8s.replicaset.label.`:** Examples: +**[23] `k8s.replicaset.label.`:** Examples: - A label `app` with value `guestbook` SHOULD be recorded as the `k8s.replicaset.label.app` attribute with value `"guestbook"`. @@ -384,17 +404,17 @@ conflict. | --- | --- | --- | --- | --- | --- | --- | | Identity | [`k8s.statefulset.uid`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The UID of the StatefulSet. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | Description | [`k8s.statefulset.name`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The name of the StatefulSet. | `opentelemetry` | -| Description | [`k8s.statefulset.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [21] | `1`; `` | -| Description | [`k8s.statefulset.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. [22] | `guestbook`; `` | +| Description | [`k8s.statefulset.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the StatefulSet, the `` being the annotation name, the value being the annotation value, even if the value is empty. [24] | `1`; `` | +| Description | [`k8s.statefulset.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the StatefulSet, the `` being the label name, the value being the label value, even if the value is empty. [25] | `guestbook`; `` | -**[21] `k8s.statefulset.annotation.`:** Examples: +**[24] `k8s.statefulset.annotation.`:** Examples: - A label `replicas` with value `1` SHOULD be recorded as the `k8s.statefulset.annotation.replicas` attribute with value `"1"`. - A label `data` with empty string value SHOULD be recorded as the `k8s.statefulset.annotation.data` attribute with value `""`. -**[22] `k8s.statefulset.label.`:** Examples: +**[25] `k8s.statefulset.label.`:** Examples: - A label `replicas` with value `0` SHOULD be recorded as the `k8s.statefulset.label.app` attribute with value `"guestbook"`. diff --git a/docs/resource/k8s/README.md b/docs/resource/k8s/README.md index e406e7b924..ac433b754e 100644 --- a/docs/resource/k8s/README.md +++ b/docs/resource/k8s/README.md @@ -168,7 +168,10 @@ containers on your cluster. | Identity | [`k8s.pod.uid`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The UID of the Pod. | `275ecb36-5aa8-4c2a-9c47-d8bb681b9aff` | | Description | [`k8s.pod.name`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Recommended` | string | The name of the Pod. | `opentelemetry-pod-autoconf` | | Description | [`k8s.pod.annotation.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The annotation placed on the Pod, the `` being the annotation name, the value being the annotation value. [1] | `true`; `x64`; `` | -| Description | [`k8s.pod.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the Pod, the `` being the label name, the value being the label value. [2] | `my-app`; `x64`; `` | +| Description | [`k8s.pod.hostname`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | Specifies the hostname of the Pod. [2] | `collector-gateway` | +| Description | [`k8s.pod.ip`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | IP address allocated to the Pod. [3] | `172.18.0.2` | +| Description | [`k8s.pod.label.`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The label placed on the Pod, the `` being the label name, the value being the label value. [4] | `my-app`; `x64`; `` | +| Description | [`k8s.pod.start_time`](/docs/registry/attributes/k8s.md) | ![Development](https://img.shields.io/badge/-development-blue) | `Opt-In` | string | The start timestamp of the Pod. [5] | `2025-12-04T08:41:03Z` | **[1] `k8s.pod.annotation.`:** Examples: @@ -179,7 +182,17 @@ containers on your cluster. - An annotation `data` with empty string value SHOULD be recorded as the `k8s.pod.annotation.data` attribute with value `""`. -**[2] `k8s.pod.label.`:** Examples: +**[2] `k8s.pod.hostname`:** The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. +Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) +for more information about this field. + +This attribute aligns with the `hostname` field of the +[K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + +**[3] `k8s.pod.ip`:** This attribute aligns with the `podIP` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + +**[4] `k8s.pod.label.`:** Examples: - A label `app` with value `my-app` SHOULD be recorded as the `k8s.pod.label.app` attribute with value `"my-app"`. @@ -187,6 +200,13 @@ containers on your cluster. the `k8s.pod.label.mycompany.io/arch` attribute with value `"x64"`. - A label `data` with empty string value SHOULD be recorded as the `k8s.pod.label.data` attribute with value `""`. + +**[5] `k8s.pod.start_time`:** Date and time at which the object was acknowledged by the Kubelet. +This is before the Kubelet pulled the container image(s) for the pod. + +This attribute aligns with the `startTime` field of the +[K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), +in ISO 8601 (RFC 3339 compatible) format. diff --git a/model/k8s/entities.yaml b/model/k8s/entities.yaml index c1baeb0c3d..049df527a0 100644 --- a/model/k8s/entities.yaml +++ b/model/k8s/entities.yaml @@ -60,6 +60,15 @@ groups: - ref: k8s.pod.annotation role: descriptive requirement_level: opt_in + - ref: k8s.pod.ip + role: descriptive + requirement_level: opt_in + - ref: k8s.pod.hostname + role: descriptive + requirement_level: opt_in + - ref: k8s.pod.start_time + role: descriptive + requirement_level: opt_in - id: entity.k8s.container type: entity diff --git a/model/k8s/registry.yaml b/model/k8s/registry.yaml index 60bed44e22..ae92fddc79 100644 --- a/model/k8s/registry.yaml +++ b/model/k8s/registry.yaml @@ -125,6 +125,41 @@ groups: brief: > The name of the Pod. examples: ['opentelemetry-pod-autoconf'] + - id: k8s.pod.ip + type: string + stability: development + brief: > + IP address allocated to the Pod. + examples: [ '172.18.0.2' ] + note: | + This attribute aligns with the `podIP` field of the + [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core). + - id: k8s.pod.hostname + type: string + stability: development + brief: > + Specifies the hostname of the Pod. + note: | + The K8s Pod spec has an optional hostname field, which can be used to specify a hostname. + Refer to [K8s docs](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-hostname-and-subdomain-field) + for more information about this field. + + This attribute aligns with the `hostname` field of the + [K8s PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podspec-v1-core). + examples: [ 'collector-gateway' ] + - id: k8s.pod.start_time + type: string + stability: development + brief: > + The start timestamp of the Pod. + examples: [ '2025-12-04T08:41:03Z' ] + note: | + Date and time at which the object was acknowledged by the Kubelet. + This is before the Kubelet pulled the container image(s) for the pod. + + This attribute aligns with the `startTime` field of the + [K8s PodStatus](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podstatus-v1-core), + in ISO 8601 (RFC 3339 compatible) format. - id: k8s.pod.label type: template[string] stability: development