您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么用Kubernetes監控,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的工作負載和服務,可促進聲明式配置和自動化。Kubernetes 擁有一個龐大且快速增長的生態系統。Kubernetes 的服務、支持和工具廣泛可用。Kubernetes由Google于2014年開源 ,它是基于Google自身在生產中運行容器的經驗而構建的。它現在由Cloud Native Computing Foundation(CNCF)管理,Kubernetes是大型企業中最流行的容器管理工具,在最近的CNCF調查中有83%的受訪者使用過。Kubernetes這個詞 源于希臘語,意為“舵手”或“飛行員”。
要了解Kubernetes的價值,我們首先必須回顧一下多年來企業如何部署應用程序。在傳統部署中,應用程序在物理服務器上運行,這種方法容易導致資源分配問題。例如,如果在單個服務器上運行多個應用程序,則一個應用程序可能會消耗大部分資源,從而影響其他應用程序的性能。一種解決方案是在單獨的物理服務器上運行每個應用程序,但是這種方式帶來的成本過高,并且會導致資源利用不足。下一步是虛擬化,它通過在物理服務器的CPU之上運行多個虛擬機(VM)(每個虛擬機運行自己的組件,包括操作系統(OS)和應用程序)來解決物理服務器的局限性。VM提供了很多好處,包括改善服務器資源的利用率,降低硬件成本,簡化應用程序升級以及其他增強可擴展性。虛擬機有其缺點。例如,每個有自己的OS映像的VM都意味著額外的內存和存儲要求。這增加了軟件開發生命周期的復雜性,并限制了應用程序在公有云和私有云以及數據中心之間的可移植性。
容器與虛擬機相似,因為它有自己的軟件,庫,內存,配置文件等。但容器有許多優點,最顯著的是有共享操作系統的能力(每個VM擁有自己獨立的OS映像),從而使它們相對輕量,快速且高效。容器的好處包括:
效率提高:借助容器,可以更快地部署,修補或擴展應用程序。
更好的可移植性:將容器中運行的應用程序輕松部署到多個操作系統和硬件平臺很容易。
一致的操作:基于容器的應用程序無論部署在何處都可以相同地方式運行。
更清晰的可觀察性:除了提供操作系統級別的指標之外,它們還顯示應用程序的運行狀況。
受益于應用程序開發:容器支持敏捷和DevOps開發(以加快開發,測試和生產周期)。
由于容器比傳統的虛擬化更加高效,快速和輕便,因此有大型應用程序部署的企業可以將多個容器部署為一個或多個容器集群也就不足為奇了。但是,由于大型的分布式容器化應用程序通常難以協調,因此該環境面臨著一系列挑戰。Kubernetes是一個開源容器編排工具,可跨主機群集自動執行應用程序容器的部署,擴展和操作。最流行的容器調度工具Kubernetes與領先的容器化平臺Docker一起使用是最多的場景。但是Kubernetes還支持其他符合容器鏡像格式和運行時標準的容器系統,該標準由開放容器倡議(OCI)設定,該組織是由Linux Foundation監督的開源技術社區。Kubernetes的替代產品包括Docker Swarm和Apache Mesos。
Kubernetes提供了一個框架來運行彈性的分布式系統。部署后,您將獲得一個Kubernetes集群—一組運行Kubernees管理的容器化應用程序的機器或節點。集群至少具有一個:
承載Pod的輔助節點。(每個pod是一組一個或多個容器。)
主節點,用于管理集群中的工作節點和Pod。
要使Kubernetes集群正常工作,您需要多個主組件,節點組件和附加組件。我們將在下面有關Kubernetes監控的部分中討論這些組件。
盡管Kubernetes擁有很多優點,但它的四個主要優點包括速度,擴展,基礎設施抽象和效率。《Kubernetes: Up and Running》(https://www.oreilly.com/library/view/kubernetes-up-and/9781491935668/)這本書由 Joe Beda,Brendan Burns和Kelsey Hightower撰寫。
速度:Kubernetes提供了您需要每小時或每天快速發布功能同時保持高可用性服務的工具。
擴展:Kubernetes的配置管理工具使擴展組成分布式應用程序的容器和支持這些容器的集群的擴展變得更加容易。
基礎架構抽象:在多個公共云之間或在混合云環境中運行分布式應用程序具有挑戰性。Kubernetes有很多可簡化這些任務的插件。
效率:通過在整個集群中自動分配應用程序并確保更高的利用率,Kubernetes有助于提高效率和成本管理。
什么是Kubernetes監控?它涉及什么?讓我們從需要在Kubernetes中監控什么以及為什么開始。Kubernetes可以極大地簡化容器內和跨云的應用程序部署,但是卻帶來了自己的復雜性。正如Google在其《站點可靠性工程指南》(https://landing.google.com/sre/sre-book/chapters/practical-alerting/)中所指出的那樣,監控大型,復雜的系統面臨兩個主要挑戰:正在監控的組件數量龐大,以及需要對運維人員保持“合理的低維護的工作量”。這些要求需要一個監控系統,該系統不僅可以發出有關高級服務目標的警報,還可以檢查單個組件。為了擴展應用程序并提供可靠的服務,您需要深入了解應用程序在部署時的行為。要監控Kubernetes集群中的應用程序性能,檢查容器,容器和服務的性能以及整個集群的特性至關重要。通過提供有關應用程序資源使用情況的信息,Kubernetes允許您評估應用程序性能以檢測和消除瓶頸。
Kubernetes集群架構包括一個主節點和單獨的Kubernetes節點。主要組件包括:
etcd
存儲配置信息,集群中的每個節點均可使用。
API server(kube-apiserver)
驗證和配置API對象(例如Pod,服務,復制控制器等)的數據。
Scheduler(kube-scheduler)
管理工作負載利用率以及將pod分配到可用節點。
kube-controller-manager
一個守護程序,負責收集信息并將其發送到API服務器。
cloud-controller-manager
運行與云供應商進行交互的控制器。Kubernotes節點組件包括:
容器運行時(例如,Docker)
kubelet:主要節點代理,通過API服務器監控pod規范;它還在Kubernetes集群中注冊了一個節點并報告事件,pod狀態和資源利用率。
Kubernetes代理(kube-proxy):在每個節點上運行的代理服務,有助于使服務對外部主機可用。
Kubernetes附加組件
您有很多Kubernetes附加組件可供選擇,但是這里有一些受歡迎的選擇。您可以在此處找到更全面的加載項列表。
Kubernetes儀表板:Kubernetes集群的基于Web的UI,可用于監控工作負載(deployments, pods, replica sets 等等)的運行狀況,并查看所有節點上匯總的CPU和內存使用情況指標。它具有配置,發現,負載平衡,存儲,監控以及創建和管理工作負載的功能。
群集DNS:為Kubernetes服務提供DNS記錄的DNS服務器。
ACI:通過Cisco Application Centric Infrastructure(ACI)(https://github.com/noironetworks/aci-containers)提供集成的容器網絡和網絡安全性。
集群級日志記錄:使用搜索/瀏覽UI將容器日志保存到中央日志存儲中。
將傳統的單片應用程序遷移到Kubernetes既耗時又容易出錯。但是,企業愿意冒險以在云中實現更大的敏捷性,創新,成本優勢,可擴展性和業務增長。但是將單片應用程序遷移到微服務的公司缺乏對Kubernetes環境的可見性。這使得無法實時查看每個微服務的交互。
Kubernetes很復雜
集成工程師Dave Snyder指出,Kubernetes難以監控的另一個原因是,Kubernetes集群要復雜得多,它有多個服務器以及私有和公有云服務。問題開始時,將有許多日志以及其他數據和組件需要排查。整體環境可能需要好幾個日志搜索,但是Kubernetes環境可能包含一個或多個有關正在排查的問題需要多個微服務的日志。
使用APM進行Kubernetes監控
使用應用程序性能監控解決方案進行的Kubernetes監控使組織可以查看應用程序和業務性能,包括對容器化應用程序,Kubernetes集群,Docker容器和基礎架構指標的更深入了解。這種可見性使企業可以增強容器級別的指標,并獲得有關CPU,數據包,內存和網絡利用率的可見性。然后,用戶可以將這些指標和關聯的運行狀況規則以及它們在APM監控的容器應用程序上的資源使用統計信息作為基準。通過將APM指標與基礎容器和服務器指標進行比較,公司可以快速了解其容器化應用程序的性能,并了解基礎架構中的潛在障礙。例如,特定指標可以幫助識別占用帶寬的應用程序和容器級網絡錯誤。
可見性使組織可以監控在Kubernetes Pod中運行的容器化應用程序,并確定妨礙應用程序性能的容器問題。全面的Kubernetes監控解決方案可提供對組織應用程序的每個組件(基礎架構,Kubernetes平臺,容器以及每個微服務和最終用戶設備)的端到端可見性。
Kubernetes提供了操作流程和復雜性,其中許多涉及應用程序性能監控。隨著您將Kubernetes的使用擴展到生產環境中,這些挑戰變得更加重要。通過創建諸如Pod和Service之類的抽象級別,Kubernetes使您不必擔心應用程序在何處運行或它們是否具有足夠的資源來高效運行。但是要確保最佳性能,您仍然必須監控應用程序,運行它們的容器,甚至Kubernetes本身。以下是一些重要的Kubernetes監控最佳實踐:
使用Kubernetes DaemonSets
在運行Kubernetes時,您可能希望在所有節點上運行單個pod,例如,在運行諸如AppDynamics代理或開源數據收集器Fluentd之類的監控進程時,以收集日志。DaemonSet是一個Kubernetes工作負載對象,可確保特定的Pod在集群中的每個節點或節點的某些子集上運行。通過使用DaemonSet,您要告訴Kubernetes確保每個節點上都有一個pod實例。
Tags和Labels Matter很重要
使用Kubernetes管理容器編排,標簽對于監控變得至關重要,因為標簽是您與容器和容器進行交互的唯一方法。為了使度量標準盡可能有用,必須使用邏輯且一致的方案定義標簽。
知道要監控的指標
根據Kubernetes.io,應該密切跟蹤Kubernetes指標的幾種關鍵類型:
運行Pod及其部署
資源指標,包括CPU,內存使用情況和磁盤I/O
容器原生指標
應用指標
使用服務發現
由于Kubernetes根據調度策略動態調度應用程序,因此您可能不知道應用程序在何處運行,但是無論如何您都必須對其進行監控。您將希望使用具有服務發現功能的監控系統,該系統會自動使指標收集適應移動的容器。這種方法使您可以連續監控應用程序而不會中斷。
Kubernetes有很多好處,但也增加了復雜性。例如,其要在多個數據中心甚至不同的云供應商之間分布容器化應用程序的能力,就需要一種全面的監控解決方案來跨多個不同來源收集和匯總指標。持續監控系統和應用程序的運行狀況至關重要,許多免費的商業解決方案可提供對Kubernetes集群及其托管的應用程序的實時監控。這是用于Kubernetes監控的幾個開源工具:
Prometheus
這個針對Kubernetes和Docker的流行的監控和警報工具提供了詳細,可行的指標和分析。Prometheus由SoundCloud開發并捐贈給CNCF社區,專門設計用于監控在容器中運行的應用程序和微服務。但是,Prometheus并不是儀表板,通常與Grafana結合使用(見下文)以可視化數據。
Grafana
Grafana是用于分析和度量可視化的開源平臺,包括四個儀表板:集群,節點,Pod/容器和部署。Kubernetes管理員通常會安裝Grafana并利用Prometheus數據源來創建信息豐富的儀表板。
Jaeger
Jaeger是一個跟蹤系統,用于對復雜的分布式系統中的事務進行故障排除和監控。它解決了分布式上下文傳播,分布式事務監控,等待時間優化等中出現的軟件問題。
Dashboard
Kubernetes儀表板是Kubernetes集群的Web UI插件,可讓您監控工作負載的運行狀況。
Kubewatch
該附加組件監控Kubernetes pod中發生的更改,并將通知發送到Slack Channel。Kubewatch用Golang編寫,它使用Kubernetes客戶端庫與Kubernetes API服務器進行交互,并使用Slack客戶端庫與Slack進行交互。
Weave Scope
Weave Scope是Kubernetes和Docker的可視化和監控工具,它提供了應用程序和整個基礎架構的自頂向下視圖。由Weaveworks開發,Weave Scope生成Kubernetes集群中的進程,容器和主機的映射。它的圖形用戶界面還允許您在容器上管理和運行診斷命令。
EFK Stack
EFK Stack實際上是三個可以很好地協同工作的工具的混合物:Elasticsearch,Fluentd和Kibana。Fluentd是一個數據收集器,它從Kubernetes集群節點上運行的Pod中刪除日志。它將這些日志路由到Elasticsearch搜索引擎,Elasticsearch搜索引擎提取數據并將其存儲在中央存儲庫中。Kibana是Elasticsearch的數據可視化插件,是EFK Stack的UI,允許用戶可視化收集的日志和指標并創建自定義儀表板。
InfluxDB
InfluxData的InfluxDB是時間序列數據的高性能存儲。它專為監控記錄的大量存儲而構建,可通過集群提供水平可伸縮性和高可用性。InfluxDB是長期存儲Kubernetes監控數據以用于歷史記錄或建模的很好的解決方案。
上述內容就是怎么用Kubernetes監控,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。