K8s
Kubernetes 属性
Kubernetes 资源属性。
Attributes
| 键 | Stability | Value Type | 描述 | Example Values |
|---|---|---|---|---|
k8s.cluster.name | 字符串 | 集群的名称。 | opentelemetry-cluster | |
k8s.cluster.uid | 字符串 | 集群的伪 ID,设置为 kube-system 命名空间的 UID。[1] | 218fc5a9-a5f1-4b54-aa05-46717d0ab26d | |
k8s.container.name | 字符串 | Pod 规范中容器的名称,在 Pod 中必须是唯一的。容器运行时通常使用不同的全局唯一名称(container.name)。 | redis | |
k8s.container.restart_count | int | 容器重启的次数。此属性可用于识别容器规范中的特定容器(正在运行或已停止)。 | ||
k8s.container.status.last_terminated_reason | 字符串 | 容器最后一次终止的原因。 | Evicted; Error | |
k8s.container.status.reason | 字符串 | 容器状态的原因。对应于 K8s ContainerStateWaiting 或 K8s ContainerStateTerminated 的 reason 字段。 | ContainerCreating; CrashLoopBackOff; CreateContainerConfigError; ErrImagePull; ImagePullBackOff; OOMKilled; Completed; Error; ContainerCannotRun | |
k8s.container.status.state | 字符串 | 容器的状态。 K8s ContainerState | terminated; running; waiting | |
k8s.cronjob.annotation.<key> | 字符串 | 已添加到 CronJob 上的注解,其中 <key> 是注解名称,值是注解值。 [2] | 4; `` | |
k8s.cronjob.label.<key> | 字符串 | 已添加到 CronJob 上的标签,其中 <key> 是标签名称,值是标签值。 [3] | weekly; `` | |
k8s.cronjob.name | 字符串 | CronJob 的名称。 | opentelemetry | |
k8s.cronjob.uid | 字符串 | CronJob 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.daemonset.annotation.<key> | 字符串 | 已添加到 DaemonSet 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [4] | 1; `` | |
k8s.daemonset.label.<key> | 字符串 | 已添加到 DaemonSet 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [5] | guestbook; `` | |
k8s.daemonset.name | 字符串 | DaemonSet 的名称。 | opentelemetry | |
k8s.daemonset.uid | 字符串 | DaemonSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.deployment.annotation.<key> | 字符串 | 已添加到 Deployment 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [6] | 1; `` | |
k8s.deployment.label.<key> | 字符串 | 已添加到 Deployment 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [7] | guestbook; `` | |
k8s.deployment.name | 字符串 | Deployment 的名称。 | opentelemetry | |
k8s.deployment.uid | 字符串 | Deployment 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.hpa.metric.type | 字符串 | 水平 Pod 自动伸缩器的指标源类型。 [8] | Resource; ContainerResource | |
k8s.hpa.name | 字符串 | 水平 Pod 自动缩放器的名称。 | opentelemetry | |
k8s.hpa.scaletargetref.api_version | 字符串 | 水平 Pod 自动伸缩器要缩放的目标资源的 API 版本。 [9] | apps/v1; autoscaling/v2 | |
k8s.hpa.scaletargetref.kind | 字符串 | 水平 Pod 自动伸缩器要缩放的目标资源的 Kind。 [10] | Deployment; StatefulSet | |
k8s.hpa.scaletargetref.name | 字符串 | 水平 Pod 自动伸缩器要缩放的目标资源的名称。 [11] | my-deployment; my-statefulset | |
k8s.hpa.uid | 字符串 | 水平 Pod 自动缩放器的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.hugepage.size | 字符串 | K8s 大页的大小(标识符)。 | 2Mi | |
k8s.job.annotation.<key> | 字符串 | 已添加到 Job 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [12] | 1; `` | |
k8s.job.label.<key> | 字符串 | 已添加到 Job 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [13] | ci; `` | |
k8s.job.name | 字符串 | Job 的名称。 | opentelemetry | |
k8s.job.uid | 字符串 | Job 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.namespace.annotation.<key> | 字符串 | 已添加到 Namespace 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [14] | 0; `` | |
k8s.namespace.label.<key> | 字符串 | 已添加到 Namespace 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [15] | default; `` | |
k8s.namespace.name | 字符串 | Pod 运行所在命名空间的名称。 | default | |
k8s.namespace.phase | 字符串 | K8s 命名空间的阶段。 [16] | active; terminating | |
k8s.node.annotation.<key> | 字符串 | 已添加到 Node 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [17] | 0; `` | |
k8s.node.condition.status | 字符串 | 条件的状语,取值只能是 True、False、Unknown 中的一个。 [18] | true; false; unknown | |
k8s.node.condition.type | 字符串 | K8s 节点的条件类型。 [19] | Ready; DiskPressure | |
k8s.node.label.<key> | 字符串 | 已添加到 Node 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [20] | arm64; `` | |
k8s.node.name | 字符串 | 节点的名称。 | node-1 | |
k8s.node.uid | 字符串 | 节点的 UID。 | 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 | |
k8s.pod.annotation.<key> | 字符串 | 已添加到 Pod 上的注解,其中 <key> 是注解名称,值是注解值。 [21] | true; x64; `` | |
k8s.pod.label.<key> | 字符串 | 已添加到 Pod 上的标签,其中 <key> 是标签名称,值是标签值。 [22] | my-app; x64; `` | |
k8s.pod.name | 字符串 | Pod 的名称。 | opentelemetry-pod-autoconf | |
k8s.pod.status.phase | 字符串 | Pod 的阶段。对应于 K8s PodStatus 的 phase 字段。 | Pending; Running | |
k8s.pod.status.reason | 字符串 | Pod 状态的原因。对应于 K8s PodStatus 的 reason 字段。 | Evicted; NodeAffinity | |
k8s.pod.uid | 字符串 | Pod 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.replicaset.annotation.<key> | 字符串 | 已添加到 ReplicaSet 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [23] | 0; `` | |
k8s.replicaset.label.<key> | 字符串 | 已添加到 ReplicaSet 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [24] | guestbook; `` | |
k8s.replicaset.name | 字符串 | ReplicaSet 的名称。 | opentelemetry | |
k8s.replicaset.uid | 字符串 | ReplicaSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.replicationcontroller.name | 字符串 | 复制控制器的名称。 | opentelemetry | |
k8s.replicationcontroller.uid | 字符串 | 复制控制器的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.resourcequota.name | 字符串 | 资源配额的名称。 | opentelemetry | |
k8s.resourcequota.resource_name | 字符串 | 资源配额定义的 K8s 资源的名称。 [25] | count/replicationcontrollers | |
k8s.resourcequota.uid | 字符串 | 资源配额的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.statefulset.annotation.<key> | 字符串 | 已添加到 StatefulSet 上的注解,其中 <key> 是注解名称,值是注解值,即使值为空。 [26] | 1; `` | |
k8s.statefulset.label.<key> | 字符串 | 已添加到 StatefulSet 上的标签,其中 <key> 是标签名称,值是标签值,即使值为空。 [27] | guestbook; `` | |
k8s.statefulset.name | 字符串 | StatefulSet 的名称。 | opentelemetry | |
k8s.statefulset.uid | 字符串 | StatefulSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.storageclass.name | 字符串 | K8s StorageClass 对象的名称。 | gold.storageclass.storage.k8s.io | |
k8s.volume.name | 字符串 | K8s 卷的名称。 | volume0 | |
k8s.volume.type | 字符串 | K8s 卷的类型。 | emptyDir; persistentVolumeClaim |
[1] k8s.cluster.uid: K8s 不支持获取集群 ID。如果将来添加了此功能,我们将建议通过官方 API 收集 k8s.cluster.uid。在此期间,我们可以使用 kube-system 命名空间的 uid 作为集群 ID 的代理。有关理由,请继续阅读。
K8s 集群中创建的每个对象都会被分配一个唯一的 UID。kube-system 命名空间由 Kubernetes 本身使用,并将存在于集群的生命周期内。使用 kube-system 命名空间的 uid 作为 K8s ClusterID 的合理代理,因为它只有在集群重建时才会更改。此外,Kubernetes UID 是根据 ISO/IEC 9834-8 和 ITU-T X.667 标准化的 UUID。
如果根据 Rec. ITU-T X.667 | ISO/IEC 9834-8 中定义的机制之一生成,UUID 要么保证与 3603 年之前生成的所有其他 UUID 不同,要么(取决于所选机制)极有可能不同。
因此,集群之间的 UID 发生冲突的可能性极小。
[2] k8s.cronjob.annotation.<key>: 示例
- 值为
4的注解retries应记录为属性k8s.cronjob.annotation.retries,值为"4"。 - 值为""的注解
data应记录为属性k8s.cronjob.annotation.data,值为""。
[3] k8s.cronjob.label.<key>: 示例
- 值为
weekly的标签type应记录为属性k8s.cronjob.label.type,值为"weekly"。 - 值为""的标签
automated应记录为属性k8s.cronjob.label.automated,值为""。
[4] k8s.daemonset.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.daemonset.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.daemonset.annotation.data,值为""。
[5] k8s.daemonset.label.<key>: 示例
- 值为
guestbook的标签app应记录为属性k8s.daemonset.label.app,值为"guestbook"。 - 值为""的标签
data应记录为属性k8s.daemonset.label.injected,值为""。
[6] k8s.deployment.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.deployment.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.deployment.annotation.data,值为""。
[7] k8s.deployment.label.<key>: 示例
- 值为
guestbook的标签replicas应记录为属性k8s.deployment.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.deployment.label.injected,值为""。
[8] k8s.hpa.metric.type: 此属性反映了 HPA 中 spec.metrics[] 的 type 字段。
[9] k8s.hpa.scaletargetref.api_version: 此属性映射到 HPA spec 中 scaleTargetRef 的 apiVersion 字段。
[10] k8s.hpa.scaletargetref.kind: 此属性映射到 HPA spec 中 scaleTargetRef 的 kind 字段。
[11] k8s.hpa.scaletargetref.name: 此属性映射到 HPA spec 中 scaleTargetRef 的 name 字段。
[12] k8s.job.annotation.<key>: 示例
- 值为
1的标签number应记录为属性k8s.job.annotation.number,值为"1"。 - 值为""的标签
data应记录为属性k8s.job.annotation.data,值为""。
[13] k8s.job.label.<key>: 示例
- 值为
ci的标签jobtype应记录为属性k8s.job.label.jobtype,值为"ci"。 - 值为""的标签
data应记录为属性k8s.job.label.automated,值为""。
[14] k8s.namespace.annotation.<key>: 示例
- 值为
0的标签ttl应记录为属性k8s.namespace.annotation.ttl,值为"0"。 - 值为""的标签
data应记录为属性k8s.namespace.annotation.data,值为""。
[15] k8s.namespace.label.<key>: 示例
- 值为
default的标签kubernetes.io/metadata.name应记录为属性k8s.namespace.label.kubernetes.io/metadata.name,值为"default"。 - 值为""的标签
data应记录为属性k8s.namespace.label.data,值为""。
[16] k8s.namespace.phase: 此属性与 K8s NamespaceStatus 的 phase 字段一致。
[17] k8s.node.annotation.<key>: 示例
- 值为
0的注解node.alpha.kubernetes.io/ttl应记录为属性k8s.node.annotation.node.alpha.kubernetes.io/ttl,值为"0"。 - 值为""的注解
data应记录为属性k8s.node.annotation.data,值为""。
[18] k8s.node.condition.status: 此属性与 NodeCondition 的 status 字段一致。
[19] k8s.node.condition.type: K8s 节点条件,如 K8s 文档所述。
此属性与 NodeCondition 的 type 字段一致。
可能值的集合不限于此处列出的值。托管的 Kubernetes 环境或自定义控制器可能会引入其他节点条件类型。发生这种情况时,应使用 Kubernetes API 报告的确切值。
[20] k8s.node.label.<key>: 示例
- 值为
arm64的标签kubernetes.io/arch应记录为属性k8s.node.label.kubernetes.io/arch,值为"arm64"。 - 值为""的标签
data应记录为属性k8s.node.label.data,值为""。
[21] k8s.pod.annotation.<key>: 示例
- 值为
true的注解kubernetes.io/enforce-mountable-secrets应记录为属性k8s.pod.annotation.kubernetes.io/enforce-mountable-secrets,值为"true"。 - 值为
x64的注解mycompany.io/arch应记录为属性k8s.pod.annotation.mycompany.io/arch,值为"x64"。 - 值为""的注解
data应记录为属性k8s.pod.annotation.data,值为""。
[22] k8s.pod.label.<key>: 示例
- 值为
my-app的标签app应记录为属性k8s.pod.label.app,值为"my-app"。 - 值为
x64的标签mycompany.io/arch应记录为属性k8s.pod.label.mycompany.io/arch,值为"x64"。 - 值为""的标签
data应记录为属性k8s.pod.label.data,值为""。
[23] k8s.replicaset.annotation.<key>: 示例
- 值为
0的标签replicas应记录为属性k8s.replicaset.annotation.replicas,值为"0"。 - 值为""的标签
data应记录为属性k8s.replicaset.annotation.data,值为""。
[24] k8s.replicaset.label.<key>: 示例
- 值为
guestbook的标签app应记录为属性k8s.replicaset.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.replicaset.label.injected,值为""。
[25] k8s.resourcequota.resource_name: 此属性的值可以是完整的 count/<resource>[.<group>] 字符串(例如,count/deployments.apps、count/pods),或者对于某些核心 Kubernetes 资源,可以只是资源名称(例如,pods、services、configmaps)。Kubernetes 支持这两种形式用于对象计数配额。有关更多详细信息,请参阅 Kubernetes 资源配额文档。
[26] k8s.statefulset.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.statefulset.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.statefulset.annotation.data,值为""。
[27] k8s.statefulset.label.<key>: 示例
- 值为
guestbook的标签replicas应记录为属性k8s.statefulset.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.statefulset.label.injected,值为""。
k8s.container.status.reason 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
Completed | 容器已完成执行。 | |
ContainerCannotRun | 容器无法运行。 | |
ContainerCreating | 容器正在创建中。 | |
CrashLoopBackOff | 容器处于崩溃循环回退状态。 | |
CreateContainerConfigError | 创建容器配置时出错。 | |
ErrImagePull | 拉取容器映像时出错。 | |
Error | 容器出错。 | |
ImagePullBackOff | 容器映像拉取处于回退状态。 | |
OOMKilled | 容器因内存不足而被终止。 |
k8s.container.status.state 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
running | 容器正在运行。 | |
terminated | 容器已终止。 | |
waiting | 容器正在等待。 |
k8s.namespace.phase 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
active | Active 命名空间阶段,由 K8s API 描述。 | |
terminating | Terminating 命名空间阶段,由 K8s API 描述。 |
k8s.node.condition.status 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
false | condition_false | |
true | condition_true | |
unknown | condition_unknown |
k8s.node.condition.type 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
DiskPressure | 磁盘空间存在压力 — 即,磁盘容量不足。 | |
MemoryPressure | 节点内存存在压力 — 即,节点内存不足。 | |
NetworkUnavailable | 节点的网络未正确配置。 | |
PIDPressure | 进程存在压力 — 即,节点上的进程过多。 | |
Ready | 节点运行正常,已准备好接受 Pod。 |
k8s.pod.status.phase 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
失败 | Pod 中的所有容器都已终止,并且至少有一个容器因失败而终止(以非零退出码退出或被系统停止)。 | |
Pending | Pod 已被系统接受,但有一个或多个容器尚未启动。这包括绑定到节点之前的时间,以及在主机上拉取映像所需的时间。 | |
Running | Pod 已绑定到节点,并且所有容器都已启动。至少有一个容器仍在运行或正在重新启动。 | |
Succeeded | Pod 中的所有容器都已自愿以退出码 0 终止,并且系统不会重新启动这些容器。 | |
Unknown | 由于某种原因,无法获取 Pod 的状态,通常是因为与 Pod 所运行的主机通信时出错。 |
k8s.pod.status.reason 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
Evicted | Pod 已被驱逐。 | |
NodeAffinity | Pod 的状态是由于其节点亲和性。 | |
NodeLost | 当 Kubelet 在其上(或曾经)运行的节点无响应时,Pod 的状态无法确认。 | |
Shutdown | 节点已关机。 | |
UnexpectedAdmissionError | Pod 因 admission 过程中的未知错误而被节点拒绝。 |
k8s.volume.type 具有以下已知值列表。如果适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
configMap | 一个 configMap 卷。 | |
downwardAPI | 一个 downwardAPI 卷。 | |
emptyDir | 一个 emptyDir 卷。 | |
local | 一个 local 卷。 | |
persistentVolumeClaim | 一个 persistentVolumeClaim 卷。 | |
secret | 一个 secret 卷。 |
已弃用的 Kubernetes 属性
描述已弃用的 k8s 属性。
Attributes
| 键 | Stability | Value Type | 描述 | Example Values |
|---|---|---|---|---|
k8s.pod.labels.<key> | 已替换为 k8s.pod.label。 | 字符串 | 已弃用,请改用 k8s.pod.label。 | my-app |