本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

容器元資料如何改變你的視角

當然,元資料是一個花哨的詞。它實際上意味著“描述其他資料的資料”。雖然這個定義本身並沒有多大幫助,但事實證明元資料本身在容器環境中特別有用。當您擁有任何複雜的系統時,元資料的可用性可以幫助您對來自該系統的各種資料進行分類和處理,從而以更少的麻煩直達問題的核心。

在 Kubernetes 環境中,元資料可以成為組織和理解容器如何在您的眾多服務、機器、可用區或(將來)多個雲中進行編排的關鍵工具。此元資料還可以被執行在您的 Kubernetes 系統之上的其他服務使用,並幫助您管理您的應用程式。

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

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

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

標籤並非旨在獨一無二;您可以預期環境中任意數量的物件攜帶相同的標籤,並且您可以預期一個物件可以有許多標籤。

您可能會使用哪些標籤?這裡只列舉幾個。警告:一旦開始,您可能會發現不止幾種使用此功能的方法!

  • 環境:開發、生產、測試、使用者驗收測試
  • 客戶:客戶 A、客戶 B、客戶 C
  • 層級:前端、後端
  • 應用:快取、Web、資料庫、認證

除了您可能定義的自定義標籤外,Kubernetes 還會自動將帶有有用元資料的標籤應用於您的系統。預設標籤提供有關整個 Kubernetes 層次結構的關鍵識別資訊:Pod、服務、Replication Controller 和名稱空間。

讓您的元資料發揮作用

一旦您花一些時間瞭解 Kubernetes,您就會發現標籤有一個特別強大的應用,使其變得必不可少

Kubernetes 標籤讓您能夠輕鬆地在您的主機和容器的“物理”檢視,以及您的應用程式和微服務的“邏輯”檢視之間切換。

其核心是,像 Kubernetes 這樣的平臺旨在最佳化底層物理資源的使用。這是一種非常有效的方式來高效地使用私有或公共雲資源,有時您需要視覺化這些物理資源。然而,實際上,大多數時候您首先關心的是服務的效能。

但在 Kubernetes 世界中,實現高利用率意味著服務的容器可能分散在各地!那麼您如何實際衡量服務的效能呢?這就是元資料發揮作用的地方。藉助 Kubernetes 元資料,您可以深入瞭解服務的效能,無論底層容器物理位置在哪裡。

給我畫幅畫

讓我們看一個快速示例,使其更具體:監控您的應用程式。我們將在 GKE 上執行一個小型三節點部署。為了視覺化環境,我們將使用 Sysdig Cloud。這是節點列表——請注意每個主機名字首的“gke”。我們看到一些基本的效能詳細資訊,如 CPU、記憶體和網路。

這些主機中的每一個都執行著許多容器。深入瞭解主機,我們看到每個主機關聯的容器

簡單地瀏覽單個主機上的容器列表,我並沒有看到這些物件的職責有什麼組織性。例如,其中一些容器執行 Kubernetes 服務(如 kube-ui),我們推測其他容器與正在執行的應用程式有關(如 javaapp.x)。

現在,讓我們使用 Kubernetes 提供的部分元資料,從以應用程式為中心的視角來看待系統。讓我們首先根據標籤建立元件的層次結構,順序如下:

Kubernetes 名稱空間 -> 複製控制器 -> Pod -> 容器

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

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

換句話說,透過這種基於元資料的聚合檢視,您現在可以從監控和故障排除服務開始,並在需要時才深入到主機和容器。

讓我們用這個環境再做一件事——讓我們使用元資料建立服務的視覺表示及其通訊拓撲。在這裡,您可以看到按服務組織的容器,還有一個類似地圖的檢視,向您展示這些服務之間的關係。

方框代表容器的聚合服務(每個方框右上角的數字表示容器的數量),線條代表服務之間的通訊及其延遲。

這種檢視提供了另一種邏輯的(而非物理的)方式來理解這些應用程式元件如何協同工作。從這裡我可以瞭解服務效能、關係以及底層資源消耗(本例中是 CPU)。

元資料:愛它,使用它

這只是對元資料的一次快速瀏覽,但我希望它能啟發您花一些時間思考它與您自己系統的相關性以及如何利用它。我們在這裡構建了一個非常簡單的示例——應用程式和服務——但想象一下收集您的應用程式、環境、軟體元件和雲提供商之間的元資料。您可以有效地評估此基礎設施中任何切片的效能差異,而 Kubernetes 同時高效地排程資源使用。

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