Kubernetes 对象标识详解:Name、UID、Label
📌 前言
在 Kubernetes 中,每个对象都需要被唯一标识。Kubernetes REST API 使用 Name 和 UID 来明确标识对象,同时提供 Labels 和 Annotations 用于非唯一的用户自定义属性。
本文将帮你理清这三者的区别与用法。
一、三种标识方式对比
| 标识方式 | 特点 | 谁生成 | 主要用途 |
|---|---|---|---|
| Name | 同一时间唯一,可重复使用 | 用户定义 | API URL 中引用对象 |
| UID | 整个集群生命周期内全局唯一 | K8s 自动生成 | 区分不同时间创建的同名对象 |
| Labels | 非唯一,键值对 | 用户定义 | 筛选、分组、选择器 |
| Annotations | 非唯一,键值对 | 用户定义 | 附加元数据(非筛选用途) |
二、Name(名称)
定义
Name 是用户在创建对象时赋予的唯一标识符。
特性
- 唯一性约束:同一类型对象中,同一时间只能有一个相同的 Name
- 可复用:对象被删除后,可以用相同的 Name 创建新对象
- 用途:在 API URL 中引用对象
URL 示例
/api/v1/pods/some-name
text
命名规则
- 最长 253 个字符
- 允许字符:数字、
-、. - ⚠️ 某些资源可能有更具体的限制
示例
yaml
metadata:
name: nginx-pod # 这就是 Name
速记口诀
- Name 用户起,同一时间不能重
- 删了还能再用上,URL 里面显神通
- UID 自动生,一生一次永不同
- Label 和 Annotation,筛选标记随便用