掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Kubernetes 是一個可移植的、可擴展的開源平臺,用于管理容器化的工作負載和服務(wù),可促進聲明式配置和自動化。Kubernetes 擁有一個龐大且快速增長的生態(tài)系統(tǒng)。Kubernetes 的服務(wù)、支持和工具廣泛可用。Kubernetes由Google于2014年開源 ,它是基于Google自身在生產(chǎn)中運行容器的經(jīng)驗而構(gòu)建的。它現(xiàn)在由Cloud Native Computing Foundation(CNCF)管理,Kubernetes是大型企業(yè)中最流行的容器管理工具,在最近的CNCF調(diào)查中有83%的受訪者使用過。Kubernetes這個詞 源于希臘語,意為“舵手”或“飛行員”。

在諸城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、做網(wǎng)站 網(wǎng)站設(shè)計制作定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,諸城網(wǎng)站建設(shè)費用合理。
要了解Kubernetes的價值,我們首先必須回顧一下多年來企業(yè)如何部署應(yīng)用程序。在傳統(tǒng)部署中,應(yīng)用程序在物理服務(wù)器上運行,這種方法容易導(dǎo)致資源分配問題。例如,如果在單個服務(wù)器上運行多個應(yīng)用程序,則一個應(yīng)用程序可能會消耗大部分資源,從而影響其他應(yīng)用程序的性能。一種解決方案是在單獨的物理服務(wù)器上運行每個應(yīng)用程序,但是這種方式帶來的成本過高,并且會導(dǎo)致資源利用不足。下一步是虛擬化,它通過在物理服務(wù)器的CPU之上運行多個虛擬機(VM)(每個虛擬機運行自己的組件,包括操作系統(tǒng)(OS)和應(yīng)用程序)來解決物理服務(wù)器的局限性。VM提供了很多好處,包括改善服務(wù)器資源的利用率,降低硬件成本,簡化應(yīng)用程序升級以及其他增強可擴展性。虛擬機有其缺點。例如,每個有自己的OS映像的VM都意味著額外的內(nèi)存和存儲要求。這增加了軟件開發(fā)生命周期的復(fù)雜性,并限制了應(yīng)用程序在公有云和私有云以及數(shù)據(jù)中心之間的可移植性。
容器與虛擬機相似,因為它有自己的軟件,庫,內(nèi)存,配置文件等。但容器有許多優(yōu)點,最顯著的是有共享操作系統(tǒng)的能力(每個VM擁有自己獨立的OS映像),從而使它們相對輕量,快速且高效。容器的好處包括:
由于容器比傳統(tǒng)的虛擬化更加高效,快速和輕便,因此有大型應(yīng)用程序部署的企業(yè)可以將多個容器部署為一個或多個容器集群也就不足為奇了。但是,由于大型的分布式容器化應(yīng)用程序通常難以協(xié)調(diào),因此該環(huán)境面臨著一系列挑戰(zhàn)。Kubernetes是一個開源容器編排工具,可跨主機群集自動執(zhí)行應(yīng)用程序容器的部署,擴展和操作。最流行的容器調(diào)度工具Kubernetes與領(lǐng)先的容器化平臺Docker一起使用是最多的場景。但是Kubernetes還支持其他符合容器鏡像格式和運行時標準的容器系統(tǒng),該標準由開放容器倡議(OCI)設(shè)定,該組織是由Linux Foundation監(jiān)督的開源技術(shù)社區(qū)。Kubernetes的替代產(chǎn)品包括Docker Swarm和Apache Mesos。
Kubernetes提供了一個框架來運行彈性的分布式系統(tǒng)。部署后,您將獲得一個Kubernetes集群—一組運行Kubernees管理的容器化應(yīng)用程序的機器或節(jié)點。集群至少具有一個:
要使Kubernetes集群正常工作,您需要多個主組件,節(jié)點組件和附加組件。我們將在下面有關(guān)Kubernetes監(jiān)控的部分中討論這些組件。
盡管Kubernetes擁有很多優(yōu)點,但它的四個主要優(yōu)點包括速度,擴展,基礎(chǔ)設(shè)施抽象和效率?!禟ubernetes: Up and Running》(https://www.oreilly.com/library/view/kubernetes-up-and/9781491935668/)這本書由 Joe Beda,Brendan Burns和Kelsey Hightower撰寫。
什么是Kubernetes監(jiān)控?它涉及什么?讓我們從需要在Kubernetes中監(jiān)控什么以及為什么開始。Kubernetes可以極大地簡化容器內(nèi)和跨云的應(yīng)用程序部署,但是卻帶來了自己的復(fù)雜性。正如Google在其《站點可靠性工程指南》(https://landing.google.com/sre/sre-book/chapters/practical-alerting/)中所指出的那樣,監(jiān)控大型,復(fù)雜的系統(tǒng)面臨兩個主要挑戰(zhàn):正在監(jiān)控的組件數(shù)量龐大,以及需要對運維人員保持“合理的低維護的工作量”。這些要求需要一個監(jiān)控系統(tǒng),該系統(tǒng)不僅可以發(fā)出有關(guān)高級服務(wù)目標的警報,還可以檢查單個組件。為了擴展應(yīng)用程序并提供可靠的服務(wù),您需要深入了解應(yīng)用程序在部署時的行為。要監(jiān)控Kubernetes集群中的應(yīng)用程序性能,檢查容器,容器和服務(wù)的性能以及整個集群的特性至關(guān)重要。通過提供有關(guān)應(yīng)用程序資源使用情況的信息,Kubernetes允許您評估應(yīng)用程序性能以檢測和消除瓶頸。
Kubernetes集群架構(gòu)包括一個主節(jié)點和單獨的Kubernetes節(jié)點。主要組件包括:
etcd
存儲配置信息,集群中的每個節(jié)點均可使用。
API server(kube-apiserver)
驗證和配置API對象(例如Pod,服務(wù),復(fù)制控制器等)的數(shù)據(jù)。
Scheduler(kube-scheduler)
管理工作負載利用率以及將pod分配到可用節(jié)點。
kube-controller-manager
一個守護程序,負責(zé)收集信息并將其發(fā)送到API服務(wù)器。
cloud-controller-manager
運行與云供應(yīng)商進行交互的控制器。Kubernotes節(jié)點組件包括:
Kubernetes附加組件
您有很多Kubernetes附加組件可供選擇,但是這里有一些受歡迎的選擇。您可以在此處找到更全面的加載項列表。
將傳統(tǒng)的單片應(yīng)用程序遷移到Kubernetes既耗時又容易出錯。但是,企業(yè)愿意冒險以在云中實現(xiàn)更大的敏捷性,創(chuàng)新,成本優(yōu)勢,可擴展性和業(yè)務(wù)增長。但是將單片應(yīng)用程序遷移到微服務(wù)的公司缺乏對Kubernetes環(huán)境的可見性。這使得無法實時查看每個微服務(wù)的交互。
Kubernetes很復(fù)雜
集成工程師Dave Snyder指出,Kubernetes難以監(jiān)控的另一個原因是,Kubernetes集群要復(fù)雜得多,它有多個服務(wù)器以及私有和公有云服務(wù)。問題開始時,將有許多日志以及其他數(shù)據(jù)和組件需要排查。整體環(huán)境可能需要好幾個日志搜索,但是Kubernetes環(huán)境可能包含一個或多個有關(guān)正在排查的問題需要多個微服務(wù)的日志。
使用APM進行Kubernetes監(jiān)控
使用應(yīng)用程序性能監(jiān)控解決方案進行的Kubernetes監(jiān)控使組織可以查看應(yīng)用程序和業(yè)務(wù)性能,包括對容器化應(yīng)用程序,Kubernetes集群,Docker容器和基礎(chǔ)架構(gòu)指標的更深入了解。這種可見性使企業(yè)可以增強容器級別的指標,并獲得有關(guān)CPU,數(shù)據(jù)包,內(nèi)存和網(wǎng)絡(luò)利用率的可見性。然后,用戶可以將這些指標和關(guān)聯(lián)的運行狀況規(guī)則以及它們在APM監(jiān)控的容器應(yīng)用程序上的資源使用統(tǒng)計信息作為基準。通過將APM指標與基礎(chǔ)容器和服務(wù)器指標進行比較,公司可以快速了解其容器化應(yīng)用程序的性能,并了解基礎(chǔ)架構(gòu)中的潛在障礙。例如,特定指標可以幫助識別占用帶寬的應(yīng)用程序和容器級網(wǎng)絡(luò)錯誤。
可見性使組織可以監(jiān)控在Kubernetes Pod中運行的容器化應(yīng)用程序,并確定妨礙應(yīng)用程序性能的容器問題。全面的Kubernetes監(jiān)控解決方案可提供對組織應(yīng)用程序的每個組件(基礎(chǔ)架構(gòu),Kubernetes平臺,容器以及每個微服務(wù)和最終用戶設(shè)備)的端到端可見性。
Kubernetes提供了操作流程和復(fù)雜性,其中許多涉及應(yīng)用程序性能監(jiān)控。隨著您將Kubernetes的使用擴展到生產(chǎn)環(huán)境中,這些挑戰(zhàn)變得更加重要。通過創(chuàng)建諸如Pod和Service之類的抽象級別,Kubernetes使您不必擔心應(yīng)用程序在何處運行或它們是否具有足夠的資源來高效運行。但是要確保最佳性能,您仍然必須監(jiān)控應(yīng)用程序,運行它們的容器,甚至Kubernetes本身。以下是一些重要的Kubernetes監(jiān)控最佳實踐:
使用Kubernetes DaemonSets
在運行Kubernetes時,您可能希望在所有節(jié)點上運行單個pod,例如,在運行諸如AppDynamics代理或開源數(shù)據(jù)收集器Fluentd之類的監(jiān)控進程時,以收集日志。DaemonSet是一個Kubernetes工作負載對象,可確保特定的Pod在集群中的每個節(jié)點或節(jié)點的某些子集上運行。通過使用DaemonSet,您要告訴Kubernetes確保每個節(jié)點上都有一個pod實例。
Tags和Labels Matter很重要
使用Kubernetes管理容器編排,標簽對于監(jiān)控變得至關(guān)重要,因為標簽是您與容器和容器進行交互的唯一方法。為了使度量標準盡可能有用,必須使用邏輯且一致的方案定義標簽。
知道要監(jiān)控的指標
根據(jù)Kubernetes.io,應(yīng)該密切跟蹤Kubernetes指標的幾種關(guān)鍵類型:
使用服務(wù)發(fā)現(xiàn)
由于Kubernetes根據(jù)調(diào)度策略動態(tài)調(diào)度應(yīng)用程序,因此您可能不知道應(yīng)用程序在何處運行,但是無論如何您都必須對其進行監(jiān)控。您將希望使用具有服務(wù)發(fā)現(xiàn)功能的監(jiān)控系統(tǒng),該系統(tǒng)會自動使指標收集適應(yīng)移動的容器。這種方法使您可以連續(xù)監(jiān)控應(yīng)用程序而不會中斷。
Kubernetes有很多好處,但也增加了復(fù)雜性。例如,其要在多個數(shù)據(jù)中心甚至不同的云供應(yīng)商之間分布容器化應(yīng)用程序的能力,就需要一種全面的監(jiān)控解決方案來跨多個不同來源收集和匯總指標。持續(xù)監(jiān)控系統(tǒng)和應(yīng)用程序的運行狀況至關(guān)重要,許多免費的商業(yè)解決方案可提供對Kubernetes集群及其托管的應(yīng)用程序的實時監(jiān)控。這是用于Kubernetes監(jiān)控的幾個開源工具:
Prometheus
這個針對Kubernetes和Docker的流行的監(jiān)控和警報工具提供了詳細,可行的指標和分析。Prometheus由SoundCloud開發(fā)并捐贈給CNCF社區(qū),專門設(shè)計用于監(jiān)控在容器中運行的應(yīng)用程序和微服務(wù)。但是,Prometheus并不是儀表板,通常與Grafana結(jié)合使用(見下文)以可視化數(shù)據(jù)。
Grafana
Grafana是用于分析和度量可視化的開源平臺,包括四個儀表板:集群,節(jié)點,Pod/容器和部署。Kubernetes管理員通常會安裝Grafana并利用Prometheus數(shù)據(jù)源來創(chuàng)建信息豐富的儀表板。
Jaeger
Jaeger是一個跟蹤系統(tǒng),用于對復(fù)雜的分布式系統(tǒng)中的事務(wù)進行故障排除和監(jiān)控。它解決了分布式上下文傳播,分布式事務(wù)監(jiān)控,等待時間優(yōu)化等中出現(xiàn)的軟件問題。
Dashboard
Kubernetes儀表板是Kubernetes集群的Web UI插件,可讓您監(jiān)控工作負載的運行狀況。
Kubewatch
該附加組件監(jiān)控Kubernetes pod中發(fā)生的更改,并將通知發(fā)送到Slack Channel。Kubewatch用Golang編寫,它使用Kubernetes客戶端庫與Kubernetes API服務(wù)器進行交互,并使用Slack客戶端庫與Slack進行交互。
Weave Scope
Weave Scope是Kubernetes和Docker的可視化和監(jiān)控工具,它提供了應(yīng)用程序和整個基礎(chǔ)架構(gòu)的自頂向下視圖。由Weaveworks開發(fā),Weave Scope生成Kubernetes集群中的進程,容器和主機的映射。它的圖形用戶界面還允許您在容器上管理和運行診斷命令。
EFK Stack
EFK Stack實際上是三個可以很好地協(xié)同工作的工具的混合物:Elasticsearch,F(xiàn)luentd和Kibana。Fluentd是一個數(shù)據(jù)收集器,它從Kubernetes集群節(jié)點上運行的Pod中刪除日志。它將這些日志路由到Elasticsearch搜索引擎,Elasticsearch搜索引擎提取數(shù)據(jù)并將其存儲在中央存儲庫中。Kibana是Elasticsearch的數(shù)據(jù)可視化插件,是EFK Stack的UI,允許用戶可視化收集的日志和指標并創(chuàng)建自定義儀表板。
InfluxDB
InfluxData的InfluxDB是時間序列數(shù)據(jù)的高性能存儲。它專為監(jiān)控記錄的大量存儲而構(gòu)建,可通過集群提供水平可伸縮性和高可用性。InfluxDB是長期存儲Kubernetes監(jiān)控數(shù)據(jù)以用于歷史記錄或建模的很好的解決方案。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流