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 个字符
  • 允许字符:数字、-、.
  • ⚠️ 某些资源可能有更具体的限制

示例

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

速记口诀

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

更多推荐