標簽對Kubernetes系統本身只有描述性意義;它們不直接用于對象的行為定義。但是,它們對于用戶來說非常重要,因為很多Kubernetes特性(如服務和資源配額)都使用標簽來識別一組資源對象。
標簽選擇器
標簽選擇器是Kubernetes中一種用于識別一組資源的表達式。Kubernetes API支持兩種類型的選擇器:equality-based和set-based。
- equality-based: 允許通過標簽的鍵和值來選擇資源。它有兩種可能的格式:
key=value:選擇具有給定鍵和值的資源。key(不帶操作符):選擇具有給定鍵的任何值的資源。
- set-based: 允許通過一組值來選擇資源。它有兩種可能的格式:
key in (value1, value2, ...):選擇具有給定鍵和一組值中的任何值的資源。!key或key notin (value1, value2, ...):選擇不具有給定鍵或具有給定鍵但值不在給定集合中的資源。
注意:集合中的元素不能多于10個。
使用建議
- 一致性:對于同一類型的資源,應使用一致的標簽名稱。
- 避免過多:不要為資源對象附加過多的標簽。過多的標簽可能會使管理和查詢資源變得更加復雜。
- 標簽值不應過長:確保標簽值不太長,以避免API性能問題。
常見標簽
以下是Kubernetes社區中常見的標簽示例,這些標簽并非強制性的,但可以為你的Kubernetes集群提供有用的組織和識別功能。
- 版本標簽:
version:用于表示資源對象的版本,如“v1”,“v2beta1”等。app.kubernetes.io/version:與上面的version類似,但遵循更具體的命名約定。
- 環境標簽:
env:用于標識資源對象所屬的環境,如“production”,“staging”,“development”等。app.kubernetes.io/env:遵循更具體的命名約定的環境標簽。
- 組件標簽:
component:用于標識資源對象所屬的組件或層,如“frontend”,“backend”,“database”等。app.kubernetes.io/component:遵循更具體的命名約定的組件標簽。
- 應用名稱和實例標簽:
app:表示資源對象屬于的應用的名稱。app.kubernetes.io/name:遵循更具體的命名約定的應用名稱標簽。instance:表示應用實例的唯一標識符,通常與部署或集群相關。app.kubernetes.io/instance:遵循更具體的命名約定的應用實例標簽。
- 管理標簽:
managed-by:表示哪個工具或系統正在管理此資源對象,如“helm”,“terraform”等。app.kubernetes.io/managed-by:遵循更具體的命名約定的管理標簽。
- 所有者標簽:
owner:標識資源對象的所有者或團隊。app.kubernetes.io/owner:遵循更具體的命名約定的所有者標簽。
這些標簽只是建議,你可以根據自己的需求和偏好來定義和使用標簽。重要的是要確保標簽的一致性和可讀性,以便能夠輕松地識別和組織你的Kubernetes資源對象。