本文章已超過一年。較舊的文章可能包含過時內容。請確認頁面中的資訊自發布以來是否已變得不正確。

容器元資料如何改變您的觀點

沒錯,元資料是個聽起來很fancy的詞彙。它實際上指的是「描述其他資料的資料」。雖然這個定義不是那麼有幫助,但事實證明,元資料本身在容器環境中特別有用。當您擁有任何複雜的系統時,元資料的可用性可協助您整理和處理從該系統輸出的各種資料,以便您可以更輕鬆地找出問題核心。

在 Kubernetes 環境中,元資料可以成為組織和理解容器如何在眾多服務、機器、可用性區域或(未來)多個雲端之間協調運作的關鍵工具。此元資料也可以被在 Kubernetes 系統之上運行的其他服務使用,並協助您管理您的應用程式。

我們將在下面查看一些範例,但首先...

Kubernetes 元資料快速簡介  Kubernetes 元資料以 標籤 (labels)註解 (annotations) 的形式大量存在。標籤旨在作為您基礎架構的識別元資料,而註解旨在作為非識別元資料。對於兩者而言,它們都只是通用的鍵:值對,如下所示

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

標籤並非設計為獨一無二的;您可以預期環境中的任何數量的物件都帶有相同的標籤,並且您可以預期一個物件可以有多個標籤。

您可能會使用哪些標籤範例? 以下僅舉幾個例子。 警告:一旦您開始使用,您可能會發現不只幾種使用此功能的方式!

  • 環境:開發 (Dev)、正式 (Prod)、測試 (Test)、使用者驗收測試 (UAT) 
  • 客戶:客戶 A、客戶 B、客戶 C 
  • 層級:前端 (Frontend)、後端 (Backend) 
  • 應用程式:快取 (Cache)、網路 (Web)、資料庫 (Database)、驗證 (Auth) 

除了您可能定義的自訂標籤之外,Kubernetes 也會自動將標籤應用於您的系統,其中包含有用的元資料。預設標籤提供有關整個 Kubernetes 層級結構的關鍵識別資訊:Pod、Service、複製控制器 (Replication Controller) 和命名空間 (Namespace)。

讓您的元資料發揮作用 

一旦您花一些時間使用 Kubernetes,您就會發現標籤有一個特別強大的應用,使其變得至關重要

Kubernetes 標籤可讓您輕鬆地在主機和容器的「實體」視圖,以及應用程式和微服務的「邏輯」視圖之間切換。 

從本質上講,像 Kubernetes 這樣的平台旨在協調底層實體資源的最佳使用。這是一種非常有效率地使用私有雲或公有雲資源的強大方法,有時您需要視覺化這些實體資源。然而,在現實中,大多數時候您最關心的是服務的效能。

但在 Kubernetes 世界中,實現高利用率意味著服務的容器可能會分散在各處!那麼您實際上如何衡量服務的效能呢? 這就是元資料的用武之地。 借助 Kubernetes 元資料,您可以深入了解服務的效能,無論底層容器的實體位置在哪裡。

為我描繪一幅圖畫 

讓我們看一個快速範例,讓這個更具體:監控您的應用程式。 讓我們使用在 GKE 上運行的小型 3 節點部署。 為了視覺化環境,我們將使用 Sysdig Cloud。 以下是節點列表 — 請注意每個主機名稱前都加上了「gke」。 我們看到一些基本的效能詳細資訊,例如 CPU、記憶體和網路。

這些主機中的每一個都運行著許多容器。 深入查看主機,我們可以看到與每個主機相關聯的容器

僅僅掃描單一主機上的容器列表,我看不到這些物件職責的太多組織。 例如,其中一些容器運行 Kubernetes 服務(例如 kube-ui),我們推測其他容器與正在運行的應用程式(例如 javaapp.x)有關。

現在讓我們使用 Kubernetes 提供的一些元資料來取得以應用程式為中心的系統視圖。 讓我們首先根據標籤建立元件層次結構,依序如下

Kubernetes 命名空間 (namespace) -> 複製控制器 (replication controller) -> Pod -> 容器 (container)

這會根據上述標籤在相應層級聚合容器。 在下面的應用程式 UI 中,此聚合和層次結構顯示在主機資料上方的灰色「分組」欄中。 如您所見,我們有一個「prod」命名空間,其下方有一組服務(複製控制器)。 然後,每個複製控制器可以由多個 Pod 組成,而 Pod 又由容器組成。

除了透過標籤組織容器外,此視圖還聚合了相關容器的指標,從而提供了命名空間或複製控制器效能的單一視圖。

換句話說,透過這種基於元資料的聚合視圖,您現在可以從監控和疑難排解服務開始,並且僅在需要時才深入查看主機和容器。 

讓我們對這個環境再做一件事 — 讓我們使用元資料來建立服務及其通訊拓撲的視覺表示。 在這裡,您可以看到我們的容器按服務組織,還可以查看類似地圖的視圖,顯示這些服務如何相互關聯。

方框代表服務,它是容器的聚合(每個方框右上角的數字告訴您有多少容器),線條代表服務之間的通訊及其延遲。

這種視圖提供了另一種邏輯視圖,而不是實體視圖,了解這些應用程式元件如何協同工作。 從這裡我可以了解服務效能、關係和底層資源消耗(在本例中為 CPU)。

元資料:愛它,使用它 

這是一個關於元資料的快速導覽,但我希望它能啟發您花一些時間思考其與您自身系統的相關性,以及您如何利用它。 在這裡,我們建立了一個非常簡單的範例 — 應用程式和服務 — 但想像一下跨您的應用程式、環境、軟體元件和雲端供應商收集元資料。 您可以有效地快速評估此基礎架構任何切片中的效能差異,同時 Kubernetes 正在有效地排程資源使用。

立即開始使用元資料來視覺化這些資源,在後續文章中,我們將討論基於元資料的自適應警報的強大功能。