Kubernetes 對象名稱和IDs

2022-04-28 13:46 更新

對象名稱和 IDs

集群中的每一個對象都有一個名稱 來標(biāo)識在同類資源中的唯一性。

每個 Kubernetes 對象也有一個UID 來標(biāo)識在整個集群中的唯一性。

比如,在同一個名字空間 中有一個名為 ?myapp-1234? 的 Pod, 但是可以命名一個 Pod 和一個 Deployment 同為 ?myapp-1234?.

對于用戶提供的非唯一性的屬性,Kubernetes 提供了 標(biāo)簽(Labels)和 注解(Annotation)機(jī)制。

名稱 

客戶端提供的字符串,引用資源 url 中的對象,如?/api/v1/pods/some name?。

某一時刻,只能有一個給定類型的對象具有給定的名稱。但是,如果刪除該對象,則可以創(chuàng)建同名的新對象。

當(dāng)對象所代表的是一個物理實體(例如代表一臺物理主機(jī)的 Node)時, 如果在 Node 對象未被刪除并重建的條件下,重新創(chuàng)建了同名的物理主機(jī), 則 Kubernetes 會將新的主機(jī)看作是老的主機(jī),這可能會帶來某種不一致性。

以下是比較常見的四種資源命名約束。

DNS 子域名 

很多資源類型需要可以用作 DNS 子域名的名稱。 DNS 子域名的定義可參見 RFC 1123。 這一要求意味著名稱必須滿足如下規(guī)則:

  • 不能超過253個字符
  • 只能包含小寫字母、數(shù)字,以及'-' 和 '.'
  • 須以字母數(shù)字開頭
  • 須以字母數(shù)字結(jié)尾

RFC 1123 標(biāo)簽名 

某些資源類型需要其名稱遵循 RFC 1123 所定義的 DNS 標(biāo)簽標(biāo)準(zhǔn)。也就是命名必須滿足如下規(guī)則:

  • 最多 63 個字符
  • 只能包含小寫字母、數(shù)字,以及 '-'
  • 須以字母數(shù)字開頭
  • 須以字母數(shù)字結(jié)尾

RFC 1035 標(biāo)簽名 

某些資源類型需要其名稱遵循 RFC 1035 所定義的 DNS 標(biāo)簽標(biāo)準(zhǔn)。也就是命名必須滿足如下規(guī)則:

  • 最多 63 個字符
  • 只能包含小寫字母、數(shù)字,以及 '-'
  • 須以字母開頭
  • 須以字母數(shù)字結(jié)尾

路徑分段名稱 

某些資源類型要求名稱能被安全地用作路徑中的片段。 換句話說,其名稱不能是 ?.?、?..?,也不可以包含 ?/? 或 ?%? 這些字符。

下面是一個名為?nginx-demo?的 Pod 的配置清單:

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

某些資源類型可能具有額外的命名約束。

UIDs

Kubernetes 系統(tǒng)生成的字符串,唯一標(biāo)識對象。

在 Kubernetes 集群的整個生命周期中創(chuàng)建的每個對象都有一個不同的 uid,它旨在區(qū)分類似實體的歷史事件。

Kubernetes UIDs 是全局唯一標(biāo)識符(也叫 UUIDs)。 UUIDs 是標(biāo)準(zhǔn)化的,見 ISO/IEC 9834-8 和 ITU-T X.667.


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號