物件名稱與 ID

叢集中的每個物件都有一個名稱,該名稱對於該資源類型而言是唯一的。每個 Kubernetes 物件也都有一個 UID,該 UID 在整個叢集中是唯一的。

例如,在相同的命名空間中,您只能有一個名為 myapp-1234 的 Pod,但是您可以有一個 Pod 和一個 Deployment,它們各自都名為 myapp-1234

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

名稱

用戶端提供的字串,用於在資源 URL 中參照物件,例如 /api/v1/pods/some-name

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

名稱在相同資源的所有API 版本中都必須是唯一的。API 資源依其 API 群組、資源類型、命名空間(對於命名空間資源)和名稱來區分。換句話說,API 版本在此上下文中無關緊要。

當在資源建立請求中提供 generateName 而不是 name 時,伺服器可能會產生名稱。當使用 generateName 時,提供的值會用作名稱前綴,伺服器會在其中附加產生的後綴。即使名稱是產生的,它也可能與現有名稱衝突,導致 HTTP 409 回應。在 Kubernetes v1.31 和更高版本中,這種情況發生的可能性已大大降低,因為伺服器將嘗試最多 8 次產生唯一名稱,然後才傳回 HTTP 409 回應。

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

DNS 子網域名稱

大多數資源類型都需要一個名稱,該名稱可以用作 RFC 1123 中定義的 DNS 子網域名稱。這表示名稱必須

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

RFC 1123 標籤名稱

某些資源類型要求其名稱遵循 RFC 1123 中定義的 DNS 標籤標準。這表示名稱必須

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

RFC 1035 標籤名稱

某些資源類型要求其名稱遵循 RFC 1035 中定義的 DNS 標籤標準。這表示名稱必須

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

路徑區段名稱

某些資源類型要求其名稱能夠安全地編碼為路徑區段。換句話說,名稱不得為「.」或「..」,且名稱不得包含「/」或「%」。

以下是名為 nginx-demo 的 Pod 的範例 Manifest。

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

UIDs

Kubernetes 系統產生的字串,用於唯一識別物件。

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

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

下一步

上次修改時間為太平洋標準時間 2024 年 9 月 26 日凌晨 1:08:套用程式碼審查的建議 (a44421f26a)