Kubernetes 对象标识详解:Name、UID、Label

📌 前言

在 Kubernetes 中,每个对象都需要被唯一标识。Kubernetes REST API 使用 NameUID 来明确标识对象,同时提供 LabelsAnnotations 用于非唯一的用户自定义属性。

本文将帮你理清这三者的区别与用法。


一、三种标识方式对比

标识方式 特点 谁生成 主要用途
Name 同一时间唯一,可重复使用 用户定义 API URL 中引用对象
UID 整个集群生命周期内全局唯一 K8s 自动生成 区分不同时间创建的同名对象
Labels 非唯一,键值对 用户定义 筛选、分组、选择器
Annotations 非唯一,键值对 用户定义 附加元数据(非筛选用途)

二、Name(名称)

定义

Name 是用户在创建对象时赋予的唯一标识符

特性

  • 唯一性约束:同一类型对象中,同一时间只能有一个相同的 Name
  • 可复用:对象被删除后,可以用相同的 Name 创建新对象
  • 用途:在 API URL 中引用对象

URL 示例

/api/v1/pods/some-name

text

命名规则

  • 最长 253 个字符
  • 允许字符:数字、-.
  • ⚠️ 某些资源可能有更具体的限制

示例

metadata:
  name: nginx-pod  # 这就是 Name

速记口诀

  • Name 用户起,同一时间不能重
  • 删了还能再用上,URL 里面显神通
  • UID 自动生,一生一次永不同
  • Label 和 Annotation,筛选标记随便用

更多推荐