物件名稱和 ID

叢集中的每個物件都有一個在該資源型別中唯一的名稱。每個 Kubernetes 物件也有一個在整個叢集中唯一的UID

例如,在同一個名稱空間中,你只能有一個名為 `myapp-1234` 的 Pod,但你可以有一個名為 `myapp-1234` 的 Pod 和一個名為 `myapp-1234` 的 Deployment。

對於非唯一的使用者提供的屬性,Kubernetes 提供了標籤註解

名稱

客戶端提供的字串,用於引用 資源 URL 中的物件,例如 `/api/v1/pods/some-name`。

給定型別的物件在同一時間只能有一個給定名稱。但是,如果你刪除該物件,你可以用相同的名稱建立一個新物件。

名稱在同一資源的所有API 版本中必須是唯一的。API 資源透過其 API 組、資源型別、名稱空間(對於名稱空間資源)和名稱進行區分。換句話說,API 版本在此上下文中無關緊要。

在資源建立請求中,如果提供了 `generateName` 而不是 `name`,伺服器可能會生成一個名稱。當使用 `generateName` 時,所提供的值將用作名稱字首,伺服器會附加一個生成的字尾。即使名稱是生成的,它也可能與現有名稱衝突,從而導致 HTTP 409 響應。在 Kubernetes v1.31 及更高版本中,這種情況發生的可能性大大降低,因為伺服器在返回 HTTP 409 響應之前會嘗試生成最多 8 次唯一名稱。

以下是四種常用的資源名稱約束型別。

DNS 子域名

大多數資源型別要求其名稱可用作 RFC 1123 中定義的 DNS 子域名。這意味著名稱必須

  • 包含不超過 253 個字元
  • 只包含小寫字母數字字元、'-' 或 '.'
  • 以字母數字字元開頭
  • 以字母數字字元結尾

RFC 1123 標籤名稱

某些資源型別要求其名稱遵循 RFC 1123 中定義的 DNS 標籤標準。這意味著名稱必須

  • 最多包含 63 個字元
  • 只包含小寫字母數字字元或 '-'
  • 以字母數字字元開頭
  • 以字母數字字元結尾

RFC 1035 標籤名稱

某些資源型別要求其名稱遵循 RFC 1035 中定義的 DNS 標籤標準。這意味著名稱必須

  • 最多包含 63 個字元
  • 只包含小寫字母數字字元或 '-'
  • 以字母字元開頭
  • 以字母數字字元結尾

路徑段名稱

有些資源型別要求它們的名稱可以安全地編碼為路徑段。換句話說,名稱不能是“.”或“..”,並且名稱不能包含“/”或“%”。

以下是名為 `nginx-demo` 的 Pod 的示例清單。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-demo
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

UID

Kubernetes 系統生成用於唯一標識物件的字串。

在 Kubernetes 叢集的整個生命週期中建立的每個物件都有一個唯一的 UID。它旨在區分相似實體的歷史出現。

Kubernetes UID 是通用唯一識別符號(也稱為 UUID)。UUID 已標準化為 ISO/IEC 9834-8 和 ITU-T X.667。

下一步

最後修改於 2024 年 12 月 21 日太平洋標準時間下午 2:35:修復了物件名稱和 ID 頁面中的錯別字(cce091a887)