Kubernetes
状态: 开发中
理解 Kubernetes 对象和元数据的有用资源
Kubernetes 对象的“名称”对于同一类型对象在“命名空间”内是唯一的,并且仅在特定时间点是唯一的(名称可能会随时间被重复使用)。“uid”在您的整个集群中是唯一的,并且很可能跨越时间。因此,建议始终为每个 Kubernetes 对象设置 UID,但“名称”通常对用户更友好,也可以设置。
集群
状态:
类型: k8s.cluster
描述: 一个 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 |
[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 发生冲突的可能性极小。
节点
状态:
类型: k8s.node
描述: 一个 Kubernetes 节点对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.node.name | 推荐 | 字符串 | 节点的名称。 | node-1 | |
k8s.node.uid | 推荐 | 字符串 | 节点的 UID。 | 1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2 | |
k8s.node.annotation.<key> | 选择加入 | 字符串 | 放置在节点上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 0; `` | |
k8s.node.label.<key> | 选择加入 | 字符串 | 放置在节点上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | arm64; `` |
[1] k8s.node.annotation.<key>: 示例
- 值为
0的注解node.alpha.kubernetes.io/ttl应记录为属性k8s.node.annotation.node.alpha.kubernetes.io/ttl,值为"0"。 - 值为""的注解
data应记录为属性k8s.node.annotation.data,值为""。
[2] k8s.node.label.<key>: 示例
- 值为
arm64的标签kubernetes.io/arch应记录为属性k8s.node.label.kubernetes.io/arch,值为"arm64"。 - 值为""的标签
data应记录为属性k8s.node.label.data,值为""。
命名空间
命名空间为名称提供了范围。对象名称在一个命名空间内必须是唯一的,但不能跨命名空间。
状态:
类型: k8s.namespace
描述: 一个 Kubernetes 命名空间。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.namespace.name | 推荐 | 字符串 | Pod 运行所在命名空间的名称。 | default | |
k8s.namespace.annotation.<key> | 选择加入 | 字符串 | 放置在命名空间上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 0; `` | |
k8s.namespace.label.<key> | 选择加入 | 字符串 | 放置在命名空间上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | default; `` |
[1] k8s.namespace.annotation.<key>: 示例
- 值为
0的标签ttl应记录为属性k8s.namespace.annotation.ttl,值为"0"。 - 值为""的标签
data应记录为属性k8s.namespace.annotation.data,值为""。
[2] k8s.namespace.label.<key>: 示例
- 值为
default的标签kubernetes.io/metadata.name应记录为属性k8s.namespace.label.kubernetes.io/metadata.name,值为"default"。 - 值为""的标签
data应记录为属性k8s.namespace.label.data,值为""。
Pod
最小、最简单的 Kubernetes 对象。Pod 代表了集群中一组正在运行的容器。
状态:
类型: k8s.pod
描述: 一个 Kubernetes Pod 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.pod.name | 推荐 | 字符串 | Pod 的名称。 | opentelemetry-pod-autoconf | |
k8s.pod.uid | 推荐 | 字符串 | Pod 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.pod.annotation.<key> | 选择加入 | 字符串 | 放置在 Pod 上的注解,<key> 为注解名称,值为注解值。[1] | true; x64; `` | |
k8s.pod.label.<key> | 选择加入 | 字符串 | 放置在 Pod 上的标签,<key> 为标签名称,值为标签值。[2] | my-app; x64; `` |
[1] 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,值为""。
[2] 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,值为""。
容器
Pod 模板中的容器规格。此类型旨在用于捕获 Pod 模板中容器的名称等信息,这与正在运行的容器的名称不同。
注意: 此类型不同于 container,后者对应于正在运行的容器。
状态:
类型: k8s.container
描述: PodTemplate 中的一个容器。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.container.name | 推荐 | 字符串 | Pod 规范中容器的名称,在 Pod 中必须是唯一的。容器运行时通常使用不同的全局唯一名称(container.name)。 | redis | |
k8s.container.restart_count | 推荐 | int | 容器重启的次数。此属性可用于识别容器规范中的特定容器(正在运行或已停止)。 | ||
k8s.container.status.last_terminated_reason | 推荐 | 字符串 | 容器最后一次终止的原因。 | Evicted; Error |
ReplicaSet
状态:
类型: k8s.replicaset
描述: 一个 Kubernetes ReplicaSet 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.replicaset.name | 推荐 | 字符串 | ReplicaSet 的名称。 | opentelemetry | |
k8s.replicaset.uid | 推荐 | 字符串 | ReplicaSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.replicaset.annotation.<key> | 选择加入 | 字符串 | 放置在 ReplicaSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 0; `` | |
k8s.replicaset.label.<key> | 选择加入 | 字符串 | 放置在 ReplicaSet 上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | guestbook; `` |
[1] k8s.replicaset.annotation.<key>: 示例
- 值为
0的标签replicas应记录为属性k8s.replicaset.annotation.replicas,值为"0"。 - 值为""的标签
data应记录为属性k8s.replicaset.annotation.data,值为""。
[2] k8s.replicaset.label.<key>: 示例
- 值为
guestbook的标签app应记录为属性k8s.replicaset.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.replicaset.label.injected,值为""。
Deployment
一个管理复制应用程序的 API 对象,通常通过运行没有本地状态的 Pod 来实现。每个副本由一个 Pod 表示,并且 Pod 分布在集群的节点之间。
状态:
类型: k8s.deployment
描述: 一个 Kubernetes Deployment 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.deployment.name | 推荐 | 字符串 | Deployment 的名称。 | opentelemetry | |
k8s.deployment.uid | 推荐 | 字符串 | Deployment 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.deployment.annotation.<key> | 选择加入 | 字符串 | 放置在 Deployment 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 1; `` | |
k8s.deployment.label.<key> | 选择加入 | 字符串 | 放置在 Deployment 上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | guestbook; `` |
[1] k8s.deployment.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.deployment.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.deployment.annotation.data,值为""。
[2] k8s.deployment.label.<key>: 示例
- 值为
guestbook的标签replicas应记录为属性k8s.deployment.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.deployment.label.injected,值为""。
StatefulSet
管理一组 Pod 的部署和扩展,并提供关于这些 Pod 的顺序和唯一性的保证。
状态:
类型: k8s.statefulset
描述: 一个 Kubernetes StatefulSet 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.statefulset.name | 推荐 | 字符串 | StatefulSet 的名称。 | opentelemetry | |
k8s.statefulset.uid | 推荐 | 字符串 | StatefulSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.statefulset.annotation.<key> | 选择加入 | 字符串 | 放置在 StatefulSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 1; `` | |
k8s.statefulset.label.<key> | 选择加入 | 字符串 | 放置在 StatefulSet 上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | guestbook; `` |
[1] k8s.statefulset.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.statefulset.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.statefulset.annotation.data,值为""。
[2] k8s.statefulset.label.<key>: 示例
- 值为
guestbook的标签replicas应记录为属性k8s.statefulset.label.app,值为"guestbook"。 - 值为""的标签
injected应记录为属性k8s.statefulset.label.injected,值为""。
DaemonSet
DaemonSet 确保所有(或部分)节点运行 Pod 的副本。
状态:
类型: k8s.daemonset
描述: 一个 Kubernetes DaemonSet 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.daemonset.name | 推荐 | 字符串 | DaemonSet 的名称。 | opentelemetry | |
k8s.daemonset.uid | 推荐 | 字符串 | DaemonSet 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.daemonset.annotation.<key> | 选择加入 | 字符串 | 放置在 DaemonSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 1; `` | |
k8s.daemonset.label.<key> | 选择加入 | 字符串 | 放置在 DaemonSet 上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | guestbook; `` |
[1] k8s.daemonset.annotation.<key>: 示例
- 值为
1的标签replicas应记录为属性k8s.daemonset.annotation.replicas,值为"1"。 - 值为""的标签
data应记录为属性k8s.daemonset.annotation.data,值为""。
[2] k8s.daemonset.label.<key>: 示例
- 值为
guestbook的标签app应记录为属性k8s.daemonset.label.app,值为"guestbook"。 - 值为""的标签
data应记录为属性k8s.daemonset.label.injected,值为""。
Job
Job 创建一个或多个 Pod 并确保其中指定数量的 Pod 成功终止。
状态:
类型: k8s.job
描述: 一个 Kubernetes Job 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.job.name | 推荐 | 字符串 | Job 的名称。 | opentelemetry | |
k8s.job.uid | 推荐 | 字符串 | Job 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.job.annotation.<key> | 选择加入 | 字符串 | 放置在 Job 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1] | 1; `` | |
k8s.job.label.<key> | 选择加入 | 字符串 | 放置在 Job 上的标签,<key> 为标签名称,值为标签值,即使值为""。[2] | ci; `` |
[1] k8s.job.annotation.<key>: 示例
- 值为
1的标签number应记录为属性k8s.job.annotation.number,值为"1"。 - 值为""的标签
data应记录为属性k8s.job.annotation.data,值为""。
[2] k8s.job.label.<key>: 示例
- 值为
ci的标签jobtype应记录为属性k8s.job.label.jobtype,值为"ci"。 - 值为""的标签
data应记录为属性k8s.job.label.automated,值为""。
CronJob
CronJob 按重复的计划创建 Job。
状态:
类型: k8s.cronjob
描述: 一个 Kubernetes CronJob 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.cronjob.name | 推荐 | 字符串 | CronJob 的名称。 | opentelemetry | |
k8s.cronjob.uid | 推荐 | 字符串 | CronJob 的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff | |
k8s.cronjob.annotation.<key> | 选择加入 | 字符串 | 放置在 CronJob 上的 cronjob 注解,<key> 为注解名称,值为注解值。[1] | 4; `` | |
k8s.cronjob.label.<key> | 选择加入 | 字符串 | 放置在 CronJob 上的标签,<key> 为标签名称,值为标签值。[2] | weekly; `` |
[1] k8s.cronjob.annotation.<key>: 示例
- 值为
4的注解retries应记录为属性k8s.cronjob.annotation.retries,值为"4"。 - 值为""的注解
data应记录为属性k8s.cronjob.annotation.data,值为""。
[2] k8s.cronjob.label.<key>: 示例
- 值为
weekly的标签type应记录为属性k8s.cronjob.label.type,值为"weekly"。 - 值为""的标签
automated应记录为属性k8s.cronjob.label.automated,值为""。
ReplicationController
ReplicationController 确保在任何时候都有指定数量的 Pod 副本在运行。
状态:
类型: k8s.replicationcontroller
描述: 一个 Kubernetes ReplicationController 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.replicationcontroller.name | 推荐 | 字符串 | 复制控制器的名称。 | opentelemetry | |
k8s.replicationcontroller.uid | 推荐 | 字符串 | 复制控制器的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff |
HorizontalPodAutoscaler
HorizontalPodAutoscaler(简称 HPA)会自动更新工作负载资源(如 Deployment 或 StatefulSet),旨在自动扩展工作负载以匹配需求。
状态:
类型: k8s.hpa
描述: 一个 Kubernetes HorizontalPodAutoscaler 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.hpa.name | 推荐 | 字符串 | 水平 Pod 自动缩放器的名称。 | opentelemetry | |
k8s.hpa.scaletargetref.api_version | 推荐 | 字符串 | HorizontalPodAutoscaler 要缩放的目标资源的 API 版本。[1] | apps/v1; autoscaling/v2 | |
k8s.hpa.scaletargetref.kind | 推荐 | 字符串 | HorizontalPodAutoscaler 要缩放的目标资源的种类。[2] | Deployment; StatefulSet | |
k8s.hpa.scaletargetref.name | 推荐 | 字符串 | HorizontalPodAutoscaler 要缩放的目标资源的名称。[3] | my-deployment; my-statefulset | |
k8s.hpa.uid | 推荐 | 字符串 | 水平 Pod 自动缩放器的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff |
[1] k8s.hpa.scaletargetref.api_version: 这映射到 HPA 规范中 scaleTargetRef 的 apiVersion 字段。
[2] k8s.hpa.scaletargetref.kind: 这映射到 HPA 规范中 scaleTargetRef 的 kind 字段。
[3] k8s.hpa.scaletargetref.name: 这映射到 HPA 规范中 scaleTargetRef 的 name 字段。
ResourceQuota
ResourceQuota 提供限制每个命名空间的总资源消耗的约束。
状态:
类型: k8s.resourcequota
描述: 一个 Kubernetes ResourceQuota 对象。
Attributes
| 键 | Stability | 需求级别 | Value Type | 描述 | Example Values |
|---|---|---|---|---|---|
k8s.resourcequota.name | 推荐 | 字符串 | 资源配额的名称。 | opentelemetry | |
k8s.resourcequota.uid | 推荐 | 字符串 | 资源配额的 UID。 | 275ecb36-5aa8-4c2a-9c47-d8bb681b9aff |
Kubernetes 特定指南
以下指南特定于 Kubernetes