【云駐共創】華為云原生之Kubernetes運維管理詳解(下)

      網友投稿 973 2025-03-31

      前言

      《云原生王者之路集訓營》是華為云云原生團隊精心打磨的云原生學習技術公開課,分為黃金、鉆石、王者三個階段,幫助廣大技術愛好者快速掌握云原生相關技能。本課程為黃金課程的第九課,由華為云容器洞察引擎CIE團隊高級工程師 Roc主講,帶領大家深入理解K8S集群監控的最佳實踐,幫助大家構建穩定、可靠的云原生應用服務。

      目標學員:計算機、軟件工程等專業的大學生,涉及Kubernetes、Istio等技術的應用開發者,其他的云原生技術興趣愛好。學完本課程后,您將能夠:了解集群監控基本方法;了解常見集群組件故障排錯分析方法;了解華為云CIE集群監控方案架構。

      上一節課我們了解了應用在k8s生產環境中的最佳實踐,包括應用更新與回滾,應用健康檢查彈性伸縮等特性。本次課程將會帶領大家深入理解K8S集群監控的最佳實踐,幫助大家構建穩定、可靠的云原生應用服務。

      一 集群可觀測性詳解

      1.1 云原生應用的特點

      首先要明白云原生要具備云的天然基因,天生就是云的一部分。云原生不是為云而生,而是天生就是云,生而是云,所以它具有云的特性:通過網絡訪問、遠端部署執行、可擴展彈性伸縮、共享、按需使用自助服務、高可用、可遠程監控計費審計、標準化交付與位置無關等。

      應用架構:

      從單體應用向微服務過渡

      應用架構過渡為松耦合系統

      應用版本迭代更快、 周期更短

      基礎設施層:

      容器化、應用自身快、輕、微

      Kubernetes 成為運行容器的默認平臺

      laaS、PaaS 平臺底層來承載Kubernetes平臺

      3. 軟件生命周期:

      服務通過DevOps流水線持續部署

      服務變更低成本和低風險

      呈現高頻率和全自動變更

      1.2 K8S與云原生應用監控挑戰

      雖然云原生為企業數字化帶來了非常多的好處,但同時針對K8S與云原生應用的監控也帶來了諸多挑戰。

      K8S架構復雜性: K8S架構包括控制節點和工作節點,各自包含一組相互通信的組件,比如kube-apiserver, etcd, kubelet等。

      微服務架構:應用從單體到微服務架構的轉變,導致應用數量激增,相互依賴關系復雜,出現了問題之后,如何快速定位到發生問題的根本原因。

      動態性:應用的迭代更新更加便捷迅速,POD、Service等資源隨時可能會銷毀或重建,需要監控系統具備動態發現k8s資源的能力。

      成本:微服務的規模和動態性使得監控數據規模和收集的成本大幅度提高。

      1.3 云原生可觀測性

      為了應對云原生監控的挑戰,社區引入了可觀測性這一理念。 可觀測性系統主要基于Metrics、Traces、 Logs三大數據類型構建。

      Metrics:收集并存儲海量指標,通過指標閾值等手段實現告警通知,從而告知有沒有問題發生。

      Traces:通過告警指標發現問題后,依據調用追蹤分析,進一步明確是什么問題。

      Logs:明確了問題發生的對象或者位置后,通過日志分析等手段實現為什么問題會發生,即找到問題的根因。

      圍繞著這三種數據類型,開源社區構建了多種多樣的開源產品,像Prometheus, Cortex, node-problem-detector, Fluentd, ELK, Loki,Jaeger等。

      1.4 指標監控與prometheus

      1.4.1 指標監控

      指標(Metrics) 是在許多個連續的時間周期里度量的KPI數值。比如我們常常談到的一個應用在過去十分鐘、半小時內的CPU、內存占用率等。

      一般情況下可以將指標進行如下分類:

      系統指標:集群CPU使用率、磁盤使用率以及網絡寬帶情況等等。

      應用指標: QPS、 出錯率、平均延時等。

      業務指標:用戶會話、訂單數量和營業額等。

      常見的開源指標監控系統有Zabbix、Prometheus等; 還有一些商業監控產品,比如sysdig. dynatrace等。

      1.4.2 Prometheus簡介

      Prometheus受啟發于Google的Brogmon監控系統(相似的Kubernetes是從Google的Brog系統演變而來), 從2012年開始由前Google前工程師在Soundcloud以開源軟件的形式進行研發,并且于2015年早期對外發布早期版本。201 6年5月繼Kubernetes之后成為第二個正式加入CNCF基金會的項目。目前,Prometheus已經成為云原生監控領域的事實標準。

      在kubernetes容器管理系統中,通常會搭配prometheus進行監控,同時也支持多種exporter采集數據,還支持pushgateway進行數據上報,Prometheus性能足夠支撐上萬臺規模的集群。

      1.5 prometheus的主要特點

      監控工具prometheus具備完整的監控體系,其特點如下:

      自定義多維數據模型(時序列數據由metric名和一組key/value標簽組成)。

      非常高效的存儲,平均一個采樣數據占~3.5 bytes左右,320萬的時間序列,每30秒采樣,保存60天,消耗磁盤大概228G。

      在多維度上靈活且強大的查詢語言(promQL),支持sum, rate,max,min等大量的計算 函數。

      不依賴分布式存儲,支持單節點工作。

      基于pull方式采集時序數據。

      可以通過push gateway進行時序列數據推送(pushing)。

      可以通過服務發現或者靜態配置去獲取要采集的target。

      社區支持大量的第三方exporter和client庫。

      1.6 基于prometheus-operator集群監控

      prometheus-operator: 本質是一組CRD和controller的實現,prometheus operator提供如下幾類CRD:

      Prometheus:聲明式創建和管理Prometheus Server實例;

      ServiceMonitor:負責聲明式的管理監控配置;

      PrometheusRule:負責聲明式的管理告警配置;

      Alertmanager:聲明式的創建和管理Alertmanager實例;

      Prometheus Operator能夠幫助用戶自動化的創建以及管理Prometheus Server以及其相應的配置。

      prometheus-operator為了實現更方便的監控K8s中各類資源,利用watch機制關注自定義CRDs,通過prometheus來從不同的資源中pull拉去監控指標,通過Alertmanager來發送告警,通過Grafana來實現可視化。

      1.7 K8S集群監控指標解析

      K8s集群監控指標主要分為四個維度,從容器的基礎資源例如container_cpu_usage_seconds_total來獲取容器的各類運行指標;

      K8s資源指標主要監控K8s中各類資源的運行狀態;K8s服務組件指標主要包含K8s核心組件的各類運行指標,通過這類指標可以監控K8s整個集群的運行狀態;Pod業務埋點指標,根據業務場景自定義指標,比如地訂單數量,交易失敗次數等,來反饋業務運行狀態。

      1.8 基于Grafana指標可視化

      grafana是用于可視化大型測量數據的開源程序,他提供了強大和優雅的方式去創建、共享、瀏覽數據。dashboard中顯示了你不同metric數據源中的數據。

      Grafana是一個開源的,擁有豐富dashboard和圖表編輯的指標分析平臺,和Kibana不同的是Grafana專注于時序類圖表分析,而且支持多種數據源,如Graphite、InfluxDB、Elasticsearch、Mysql、K8s、Zabbix等。

      容器內存使用率

      1.9 集群事件監控

      k8s的Event事件是一種資源對象, 用于展示集群內發生的情況,k8s系統中的各個組件會將運行時發生的各種事件上報給apiserver。可以通過kubectl get event或kubectl describe pod podName命令顯示事件,查看k8s集群中發生了哪些事件。

      apiserver會將Event事件存在etcd集群中,為避免磁盤空間被填滿,故強制執行保留策略:在最后一次的事件發生后, 刪除1小時之前發生的事件。

      通過監控集群狀態,能更深層次的了解業務具體發生了什么類型的事件,從而對癥下藥,提升問題解決效率。

      1.10 NodeProblemDetector (NPD)

      節點問題檢測器(Node Problem Detector, NPD)是-個守護程序,用于監視和報告節點的健康狀況。

      可以將NPD以DaemonSet運行。NPD從各種守護進程收集節點問題,并以NodeCondition和Event的形式報告給APIServer。

      通過NPD,可以有效監控Node節點各類指標,從而更全方位的保障集群穩定性,預見一些資源問題風險,及時規避。

      1.11 集群日志監控(fluentd+ELK)

      針對K8s集群中業務日志監控,在K8S里面主要分為四個大的場景:

      主機內核的日志:比如文件系統異常,kernelpanic,或者OOM日志等。

      Runtime日志:比較常見的是Docker的一些日志,我們可以通過docker的日志來排查類似像Pod Hang這一系列的問題。

      核心組件日志:在K8s里面核心組件包含了etcd,apiserver、kube-scheduler、 controller-manger、kubelet等等一系列的組件。 這些組件的日志可以幫我們來看到整個K8s集群管控面是否有一些異常。

      應用日志:可以通過應用的日志來查看業務層的一個狀態。比如說可以看業務層有沒有500的請求?有沒有一些 panic?有沒有一些異常的錯誤訪問?那這些其實都可以通過應用日志來進行查看的。

      1.12 拓撲與調用鏈

      當我將單體應用拆成多個微服務之后,如何監控服務之間的依賴關系和調用鏈,以判斷應用在哪個服務環節出了問題,哪些地方可以優化?這就需要用到分布式追蹤(Distributed Tracing)。

      CNCF提出了分布式追蹤的標準OpenTracing,它提供用戶廠商中立的API,并提供Go、Java、JavaScript、Python、 Ruby、 PHP、Objective-C、C++和C#這多種語言的庫。同時CNCF中還有個端到端的支持OpenTracingAPI的分布式追蹤項目Jaeger。

      二 集群常見問題排障

      2.1 k8s常用排錯方法:

      查看Kubernetes對象的當前運行時信息,特別是與對象關聯的Event事件。這些事件記錄了相關主題、發生時間、最近發生間、發生次數及事件原因等,對排查故障非常有價值。

      對于服務、容器方面的問題,可能需要深入容器內部進行故障診斷,此時可以通過查看容器的運行日志來定位具體問題。

      對于某些復雜問題,例如Pod調度這種全局性的問題,可能需要結合集群中每個節點上的Kubernetes服務日志來排查。比如搜集Master.上的kube-apiserver、kube-schedule、 kube-controler-manager服務日志,以及各個Node.上的kubelet.kube-proxy服務日志,通過綜合判斷各種信息來定位問題。

      2.2 常見K8S問題舉例

      無法下載鏡像:需要定位鏡像是否存儲,或者是否為K8s網絡與鏡像倉庫無法聯通,或者是私有鏡像權限問題等;

      POD持續重啟 :查看業務是否運行異常,或是配置的存活性探針異常。

      通過Service無法訪問:查看業務POD是否正常,lable選擇器是否匹配到對應業務POD,端口是否正常等。

      2.3 實戰案例

      可以看到nginx 應用啟動異常

      使用華為云提供的cloud shell工具

      通過命令行定位問題,首先查看pod狀態,看到有三個pod運行異常

      查看pod事件發現是pod的Liveness檢測失敗,返回狀態碼為404,找不到文件。

      【云駐共創】華為云原生之Kubernetes運維管理詳解(下)

      查看Liveness配置為/test

      通過CCE集群對資源文件進行修正,修改/test為/。

      可以看到此刻POD以及恢復正常。

      三 華為云CIE集群監控方案架構詳解

      3.1 華為云容器洞察引擎(CIE) 架構解析

      容器洞察引擎(Container Insight Engine,簡稱CIE)是以應用為中心、開箱即用的新一代云原生容器運維平臺,實時監控應用及資源,采集各項指標及事件等數據分析應用健康狀態,提供告警能力以及全面、清晰、多維度數據可視化能力,兼容主流開源組件,并提供快捷故障定位及一鍵監控診斷的能力。

      架構特點:

      全面兼容云原生技術

      基于原生K8s + Prometheus的監控架構體系,增強了開箱即用的能力。

      從容應對容器生命周期動態變化、海量指標的挑戰。

      2. 以應用為中心,聚焦業務指標

      聚焦應用Golden Signal (RPS, Error, Duration) 等,并適時關聯資源指標。

      3. Everything in One Place,快捷排障

      應用全景視圖和資源映射,可以無縫關聯告警、事件、日志等信息。

      分布式調用鏈和依賴拓撲,應對服務網格化,支持快速排障。

      4. 一鍵診斷,主動預測預警

      鍵式集群業務診斷,關鍵指標主動預測,提前預警。

      3.2 集中統一的告警、事件管理和日志分析

      集中告警/事件/日志:具備多集群告警、事件、日志統一管理能力;

      告警通知靈活:支持基于PromQL表達式的閾值告警,支持K8s事件轉告警能力,告警可通過郵件,短信、webhook等通道及時通知給用戶;

      統一日志存儲:支持多種日志存儲方式,支持日志瀏覽、統計聚合;支持日志關鍵詞告警;

      3.3 快速故障定位

      資源模型統一建模:告警、日志、指標、事件運維數據對應的資源信息拉通統一, 同一個資源ID關聯一片相關運維數據。

      運維信息ALL in One:

      在告警、資源視圖、巡檢報告中提供-鍵式TroubleShooting入口,-鍵萃取資源故障相關信息。

      圖形化資源關系視圖,提供集群、節點、Pod實例、容器全景資源視圖,實現故障渲染,提升故障發現效率。

      提供定期巡檢,一鍵巡檢并展示巡檢報告,讓用戶時刻感知集群狀態。

      全鏈路應用調用分析:

      借力ASM lstio, 提供全鏈路應用拓撲,結合MCP實現集群內和跨集群的應用拓撲展示。

      非侵入試Agent埋點能力,實現基于業務的SLA指標監控。

      總結

      可觀測性是云原生場景必不可少的一環,關系到云原生實踐能否在生產環境順利實施。可觀測性技術實施具有技術棧多樣,場景復雜,數據規模大等特點,這給人們云原生實踐帶來了很大的障礙。開源社區針對這個問題,著手構建統一的云原生可觀測性技術與規范;各大云廠商與監控服務提供商也都看到了需求和機遇,陸續推出云原生可觀測性相關的產品或功能。

      目前,云原生可觀測性還在發展初期,很多產品都在探索階段,還有很多問題亟待解決。未來人們對可觀測性的需求只會越來越高,華為云CIE緊跟社區最新標準與方案,在監控運維上,強調數據關聯分析和無縫銜接,用戶無需到各個頁面頻繁跳轉,在一個地方就可以對問題進行集中分析和診斷,實現一鍵式故障分析,大大縮短問題定位定界的時間。

      本文整理自華為云社區【內容共創】活動第14期。

      https://bbs.huaweicloud.com/blogs/336904

      任務19.華為云云原生鉆石課程09:Kubernetes運維管理詳解(下)

      應用運維管理 AOM 上云必讀 云原生 容器 Kubernetes

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎么轉換版本格式(如何轉換版本)
      下一篇:工程項目進度表百分比(工程進度百分比怎么確定)
      相關文章
      亚洲av无码一区二区三区天堂| 亚洲成av人在线视| 久久夜色精品国产亚洲AV动态图| 亚洲国产一成久久精品国产成人综合 | 久久精品国产亚洲αv忘忧草| 日韩亚洲Av人人夜夜澡人人爽| 亚洲国产一二三精品无码| 亚洲伊人久久成综合人影院| 亚洲国模精品一区| 亚洲免费视频一区二区三区| 亚洲区日韩区无码区| 亚洲日韩人妻第一页| 亚洲色偷偷综合亚洲AV伊人| 亚洲国产一区二区三区| 亚洲精品国精品久久99热| 亚洲欧洲精品成人久久奇米网| 亚洲一级片内射网站在线观看| 亚洲色一色噜一噜噜噜| 久久久久久亚洲精品不卡| 在线观看亚洲精品国产| 亚洲精品无码久久千人斩| 久久久久久久尹人综合网亚洲| 久久久久久a亚洲欧洲aⅴ| 亚洲av福利无码无一区二区| 亚洲综合小说久久另类区| 亚洲一区二区三区无码国产| 国产99在线|亚洲| 亚洲欧美国产日韩av野草社区| 亚洲精品蜜夜内射| 国产成人久久精品亚洲小说| 久久精品国产亚洲AV不卡| 国产亚洲婷婷香蕉久久精品 | 亚洲日本在线电影| 18禁亚洲深夜福利人口| 亚洲日韩国产一区二区三区| 国产亚洲人成网站观看| 久久亚洲精品无码VA大香大香| 亚洲一区二区三区不卡在线播放| 亚洲精品天堂在线观看| 亚洲jizzjizz少妇| 国产L精品国产亚洲区久久|