1. 程式人生 > >監控Kubernetes,第一部分:挑戰+資料來源

監控Kubernetes,第一部分:挑戰+資料來源

監控Kubernetes,第一部分:挑戰+資料來源

作者:Sean Porter

我們的行業長期以來一直依賴基於微服務的架構來更快、更安全地交付軟體。微服務的出現和無處不在自然為容器技術鋪平了道路,使我們能夠重新思考如何構建和部署我們的應用程式。Docker在2013年加入戰場,對於專注於基礎架構和雲遷移現代化的公司而言,像Docker這樣的工具對於大規模快速釋出應用程式至關重要。

但是,隨著速度的提升帶來了挑戰,容器在編排方面引入了不小的複雜性。進入Kubernetes:一個開源容器編排系統,用於自動化容器化應用程式的部署、擴充套件和管理,Kubernetes控制平面命令和控制你的基礎架構。Kubernetes最初由谷歌於2014年推出,現在由雲原生計算基金會維護(順便提一下,谷歌幫助組建了Kubernetes,以確保它保持自由免費和競爭力)。如果你使用Docker來容器化你的應用程式,那麼你肯定會使用Kubernetes進行編排。(當然還有其他的編排器,比如Docker Swarm和Apache Mesos,但Kubernetes已成為容器編排領域的領導者。)

在本系列的第一部分中,我將介紹監控Kubernetes的挑戰和主要資料來源。稍後,我將深入探討Kubernetes和Docker部署,並使用下面列出的資料來源的實際示例。

Kubernetes監控:挑戰

Kubernetes使團隊更容易管理容器,在自動維護所需狀態的同時排程和配置容器。核心價值觀是它作為一個通用平臺,Kubernetes可以在任何地方部署你的應用程式,無論是AWS、GCP、Azure還是裸機。同樣,所有這些功能和自動化都帶來了挑戰,特別是在關注效能方面。無論部署的規模如何,你仍需要知道該部署中有多少可用資源,以及瞭解已部署應用程式和容器的執行狀況。正如微服務使我們重新思考如何構建應用程式一樣,Kubernetes要求我們改變傳統的監控方法,容器編排的動態特性需要採用動態的監控方法。

以下是我看到的挑戰:

  • 在這個新的動態時代,你的應用程式在不斷地移動
  • 在Kubernetes之前,將應用程式分佈在多個雲(公共和私有云,以及不同的雲提供商)中並非易事。現在分發應用程式很容易,我們遇到了一系列新問題。
  • 就像從單體到微服務架構的轉變一樣,採用Kubernetes意味著需要監控許多小塊
  • 你已經聽說過像牛(cattle)一樣處理你的基礎設施而不是寵物(pet)的優點。Kubernetes是這種畜牧方法的縮影,可以輕鬆實現大量和短暫的基礎設施。就這樣,通過標籤(label)和註釋(annotation)等識別符號跟蹤您的Kubernetes pod及其容器
    變得至關重要。

Kubernetes監控:資料來源

基本上,監控工具從四個來源收集Kubernetes資料:

  1. 執行著Kubelet的Kubernetes主機。Kubernetes主機的資源有限,因此監控它們尤其重要。有許多方法可以從這些主機中獲取資料,但最常見的方法是使用Prometheus節點匯出器(node exporter)從Kubernetes主機中獲取資料,並在HTTP端點上公開系統資源遙測資料(例如CPU使用和記憶體)。
  2. Kubernetes程序,又叫做Kubelet指標,包括apiserver、kube-scheduler和kube-controller-manager的指標。 這些內容為你提供有關Kubernetes節點及其執行工作的詳細資訊。
  3. Kubelet的內建cAdvisor這裡有一個很好的總結,但基本上Kubelet附帶了對cAdvisor的內建支援,它可以收集、聚合、處理和匯出正在執行的容器的指標。cAdvisor(它還具有對Docker容器的原生支援)為你提供每容器使用、跟蹤資源隔離引數和歷史資源使用情況。因為Kubernetes是控制平面,它可以指定使用多少記憶體,並利用cAdvisor跟蹤。
  4. kube-state-metrics,它為你提供叢集級別的資訊,可以全面瞭解Kubernetes叢集上發生的情況,例如你配置的所有pod及其當前狀態。kube-state-metrics覆蓋所有Kubernetes服務並收集有關其當前狀態的資訊,例如執行的容器數量、處於特定狀態的容器數量、是否有任何表明它們不健康或我們處於容量飽和狀態等。從README,kube-state-metrics“監聽Kubernetes API伺服器”。

接下來:容器狀態和使用Prometheus收集資料

如果你有跟蹤這話題,你可能會注意到你可以使用Prometheus監控所有這四個資料來源。你可能還注意到我們只討論監控Kubernetes而不是監控它上面執行的應用程式(並且,這可能與你聽到的有關Kubernetes監控的所有內容一致)。在我的下一篇文章中,我將以Prometheus展示Kubernetes和Docker監控,討論它為什麼能夠很好地適應Kubernetes生態系統,並識別差距。