Kubernetes – 標籤和選擇器

wongchaofan發表於2024-06-05

一個名為Kubernetes的開源容器管理平臺可自動執行容器的部署、擴充套件、降級和負載平衡(也稱為容器編排工具)。它由 Google 使用 Golang 建立,因此擁有一個相當大的社群。Google 最終將其捐贈給了 CNCF(雲原生計算基金會)。本質上,部署是 pod 上方的一層抽象。它類似於 pod 的設計計劃。

標籤和選擇器

在 Kubernetes 中,部署和服務的配置檔案中提到了標籤和選擇器。它們用於將Kubernetes 服務Kubernetes Pod 連線起來。

標籤是用於標識該 Pod 的任何鍵值對。Pod 透過部署獲取其標籤,部署就像是建立 Pod 之前的 Pod 藍圖。選擇器與標籤匹配。標籤和選擇器是必需的,以便在部署、Pod 和服務之間建立連線。

部署被賦予以下格式的標籤:

"metadata": 
{
 "labels": 
 {
   "key1" : "value1",
   "key2" : "value2"
 }
}

該服務使用以下格式的選擇器來識別 pod 和部署:

"selector":
 {
    "key" : "value"
 }

要檢視標籤,我們可以使用該命令。

$ kubectl get pods 
--show-labels

我們可以在建立 pod 期間附加標籤,獲取標籤,附加標籤,甚至在建立 pod 之後新增標籤。

要在部署中新增標籤,我們可以使用以下命令
$ kubectl label pod <pod_name>
 label:label_name

語法和字符集

在 kubernetes 中,標籤和選擇器在組織叢集物件(它們相互依賴)方面起著重要作用。如果您想要識別 pod 或與 kubernetes 中的任何服務進行互連,則需要使用標籤和選擇器。

根據您所使用的型別,建立標籤和選擇器時需要遵循一定的規則和語法。

1. 標籤語法

標籤是鍵:值對,它由鍵和一個值組成,通常是字串,如下所示。

labels:

Key: Value

app: nginx

鍵和值區分大小寫,最大長度為 63 個字元。

2. 選擇器語法

選擇器主要分為兩種。

  1. 基於平等的選擇器。
  2. 基於集合的選擇器。
  3. 組合選擇器(可選)。

1.基於相等性的選擇器

名稱本身表明基於平等,其中使用的運算子是=、==以及不等式!=。

例子:

“app = myapp” where app key set to myapp value

2.基於集合的選擇器。

根據“in”、“notin”、“exists”和“does not exist”等運算子,它將使用給定的鍵組輸入值,例如

例子:

app in (web,api) ”它將知道與鍵為 app 且值為“web 或 api”的物件匹配

3. 組合選擇器(可選)

您將使用 AND 或 OR 來組合多個選擇器。

例子:

“app = newapp” AND “app = firstapp” 這裡將有一個鍵和兩個值來表示鍵值對。

有效使用標籤

標籤在 Kubernetes 叢集中起著重要作用,用於連線容器、pod 和服務。以下是在建立標籤時需要遵循的一些最佳實踐。

  1. 選擇有意義的標籤:標籤應該由有意義的名稱組成,當將它們分配給任何物件時,它們應該代表您正在建立的物件的用途,並且您不應該在 kubernets 中對標籤使用鍵或保留字。標籤示例,您可以使用myapp:prod-environment,就像它代表這個 pod 屬於生產環境一樣。
  2. 保持一致性:您在 kubernets 叢集中建立的標籤確保它們在整個叢集中保持一致。這將幫助您輕鬆管理資源。
  3. 唯一標籤:標籤彼此之間必須非常唯一,否則會在服務、pod 和節點之間產生衝突。
  4. 使用標籤進行擴充套件:將同一服務下的某組 pod 分組,並使用標籤一次擴充套件所有 pod,而不是單獨管理它們。
  5. 使用標籤進行組織:標籤可用於對具有相同功能的 pod 進行分組。

更新標籤

一開始,你建立了一組帶有特定標籤的 pod,一段時間後,由於業務需求,你想更改 pod 的標籤,那麼你可以使用 CLI 命令來修改,而不是直接在 YAML 檔案中進行修改,這是比編輯原始檔更好的做法。要更新 pod 的標籤,請使用以下命令。

kubectl label pods -l Existing-Key: Existing-value New-Key: New-value

相關文章