Kubernetes

状态: 开发中

理解 Kubernetes 对象和元数据的有用资源

Kubernetes 对象的“名称”对于同一类型对象在“命名空间”内是唯一的,并且仅在特定时间点是唯一的(名称可能会随时间被重复使用)。“uid”在您的整个集群中是唯一的,并且很可能跨越时间。因此,建议始终为每个 Kubernetes 对象设置 UID,但“名称”通常对用户更友好,也可以设置。

集群

状态: 开发中

类型: k8s.cluster

描述: 一个 Kubernetes 集群。

Attributes

Stability需求级别Value Type描述Example Values
k8s.cluster.nameDevelopment推荐字符串集群的名称。opentelemetry-cluster
k8s.cluster.uidDevelopment推荐字符串集群的伪 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.nameDevelopment推荐字符串节点的名称。node-1
k8s.node.uidDevelopment推荐字符串节点的 UID。1eb3a0c6-0477-4080-a9cb-0cb7db65c6a2
k8s.node.annotation.<key>Development选择加入字符串放置在节点上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]0; ``
k8s.node.label.<key>Development选择加入字符串放置在节点上的标签,<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.nameDevelopment推荐字符串Pod 运行所在命名空间的名称。default
k8s.namespace.annotation.<key>Development选择加入字符串放置在命名空间上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]0; ``
k8s.namespace.label.<key>Development选择加入字符串放置在命名空间上的标签,<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.nameDevelopment推荐字符串Pod 的名称。opentelemetry-pod-autoconf
k8s.pod.uidDevelopment推荐字符串Pod 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.pod.annotation.<key>Development选择加入字符串放置在 Pod 上的注解,<key> 为注解名称,值为注解值。[1]true; x64; ``
k8s.pod.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串Pod 规范中容器的名称,在 Pod 中必须是唯一的。容器运行时通常使用不同的全局唯一名称(container.name)。redis
k8s.container.restart_countDevelopment推荐int容器重启的次数。此属性可用于识别容器规范中的特定容器(正在运行或已停止)。
k8s.container.status.last_terminated_reasonDevelopment推荐字符串容器最后一次终止的原因。Evicted; Error

ReplicaSet

状态: 开发中

类型: k8s.replicaset

描述: 一个 Kubernetes ReplicaSet 对象。

Attributes

Stability需求级别Value Type描述Example Values
k8s.replicaset.nameDevelopment推荐字符串ReplicaSet 的名称。opentelemetry
k8s.replicaset.uidDevelopment推荐字符串ReplicaSet 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.replicaset.annotation.<key>Development选择加入字符串放置在 ReplicaSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]0; ``
k8s.replicaset.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串Deployment 的名称。opentelemetry
k8s.deployment.uidDevelopment推荐字符串Deployment 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.deployment.annotation.<key>Development选择加入字符串放置在 Deployment 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]1; ``
k8s.deployment.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串StatefulSet 的名称。opentelemetry
k8s.statefulset.uidDevelopment推荐字符串StatefulSet 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.statefulset.annotation.<key>Development选择加入字符串放置在 StatefulSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]1; ``
k8s.statefulset.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串DaemonSet 的名称。opentelemetry
k8s.daemonset.uidDevelopment推荐字符串DaemonSet 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.daemonset.annotation.<key>Development选择加入字符串放置在 DaemonSet 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]1; ``
k8s.daemonset.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串Job 的名称。opentelemetry
k8s.job.uidDevelopment推荐字符串Job 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.job.annotation.<key>Development选择加入字符串放置在 Job 上的注解,<key> 为注解名称,值为注解值,即使值为""。[1]1; ``
k8s.job.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串CronJob 的名称。opentelemetry
k8s.cronjob.uidDevelopment推荐字符串CronJob 的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff
k8s.cronjob.annotation.<key>Development选择加入字符串放置在 CronJob 上的 cronjob 注解,<key> 为注解名称,值为注解值。[1]4; ``
k8s.cronjob.label.<key>Development选择加入字符串放置在 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.nameDevelopment推荐字符串复制控制器的名称。opentelemetry
k8s.replicationcontroller.uidDevelopment推荐字符串复制控制器的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff

HorizontalPodAutoscaler

HorizontalPodAutoscaler(简称 HPA)会自动更新工作负载资源(如 Deployment 或 StatefulSet),旨在自动扩展工作负载以匹配需求。

状态: 开发中

类型: k8s.hpa

描述: 一个 Kubernetes HorizontalPodAutoscaler 对象。

Attributes

Stability需求级别Value Type描述Example Values
k8s.hpa.nameDevelopment推荐字符串水平 Pod 自动缩放器的名称。opentelemetry
k8s.hpa.scaletargetref.api_versionDevelopment推荐字符串HorizontalPodAutoscaler 要缩放的目标资源的 API 版本。[1]apps/v1; autoscaling/v2
k8s.hpa.scaletargetref.kindDevelopment推荐字符串HorizontalPodAutoscaler 要缩放的目标资源的种类。[2]Deployment; StatefulSet
k8s.hpa.scaletargetref.nameDevelopment推荐字符串HorizontalPodAutoscaler 要缩放的目标资源的名称。[3]my-deployment; my-statefulset
k8s.hpa.uidDevelopment推荐字符串水平 Pod 自动缩放器的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff

[1] k8s.hpa.scaletargetref.api_version: 这映射到 HPA 规范中 scaleTargetRefapiVersion 字段。

[2] k8s.hpa.scaletargetref.kind: 这映射到 HPA 规范中 scaleTargetRefkind 字段。

[3] k8s.hpa.scaletargetref.name: 这映射到 HPA 规范中 scaleTargetRefname 字段。

ResourceQuota

ResourceQuota 提供限制每个命名空间的总资源消耗的约束。

状态: 开发中

类型: k8s.resourcequota

描述: 一个 Kubernetes ResourceQuota 对象。

Attributes

Stability需求级别Value Type描述Example Values
k8s.resourcequota.nameDevelopment推荐字符串资源配额的名称。opentelemetry
k8s.resourcequota.uidDevelopment推荐字符串资源配额的 UID。275ecb36-5aa8-4c2a-9c47-d8bb681b9aff

Kubernetes 特定指南

以下指南特定于 Kubernetes