華為云云原生鉆石集訓營 第九課:Kubernetes運維管理詳解(下)

      網(wǎng)友投稿 684 2025-04-01

      課程目標:


      1.了解集群監(jiān)控基本方法

      2.了解常見集群組件故障排錯分析方法

      3.了解華為云CIE集群監(jiān)控方案架構(gòu)

      目錄:

      1.集群可觀測性詳解

      2.常見集群故障排錯分析

      3.華為云CIE集群監(jiān)控方案架構(gòu)詳解

      上一節(jié)課我們了解了應(yīng)用在k8s生產(chǎn)環(huán)境中的最佳實踐,包括應(yīng)用更新與回滾,應(yīng)用健康檢查,彈性伸縮等特性。

      本次課程將會帶領(lǐng)大家深入理解K8S集群監(jiān)控的最佳實踐,幫助大家構(gòu)建穩(wěn)定、可靠的云原生應(yīng)用服務(wù)。

      1.集群可觀測性詳解

      云原生應(yīng)用特點:

      應(yīng)用架構(gòu):

      1.從單體應(yīng)用向微服務(wù)過渡

      2.應(yīng)用架構(gòu)過渡為松耦合系統(tǒng)

      3.應(yīng)用版本迭代更快、周期更短

      基礎(chǔ)設(shè)施層:

      1.容器化、應(yīng)用自身快、輕、微

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

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

      軟件生命周期:

      1. 服務(wù)通過DevOps流水線持續(xù)部署

      2.服務(wù)變更低成本和低風險

      3.呈現(xiàn)高頻率和全自動變更

      K8S與云原生應(yīng)用監(jiān)控挑戰(zhàn)

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

      微服務(wù)架構(gòu):應(yīng)用從單體到微服務(wù)架構(gòu)的轉(zhuǎn)變,導(dǎo)致應(yīng)用數(shù)量激增,相互依賴關(guān)系復(fù)雜,出現(xiàn)了問題之后,如何快速定位到發(fā)生問題的根本原因.

      動態(tài)性:應(yīng)用的迭代更新更加便捷迅速,POD、Service等資源隨時可能會銷毀或重建,需要監(jiān)控系統(tǒng)具備動態(tài)發(fā)現(xiàn)k8s資源的能力。

      成本:微服務(wù)的規(guī)模和動態(tài)性使得監(jiān)控數(shù)據(jù)規(guī)模和收集的成本大幅度提高。

      云原生可觀測性

      為了應(yīng)對云原生監(jiān)控的挑戰(zhàn),社區(qū)引入了可觀測性這一理念??捎^測性系統(tǒng)主要基于Metrics、Traces、Logs三大數(shù)據(jù)類型構(gòu)建。

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

      Traces:通過告警指標發(fā)現(xiàn)問題后,依據(jù)調(diào)用追蹤分析,進一步明確是什么問題。

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

      圍繞著這三種數(shù)據(jù)類型,開源社區(qū)構(gòu)建了多種多樣的開源產(chǎn)品,像Prometheus, Cortex, node-problem-detector,Fluentd,ELK,Loki,Jaeger等。

      指標監(jiān)控與prometheus

      指標監(jiān)控:

      指標(Metrics)是在許多個連續(xù)的時間周期里度量的KPI數(shù)值。

      比如我們常常談到的一個應(yīng)用在過去十分鐘、半小時內(nèi)的CPU、內(nèi)存占用率等。

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

      系統(tǒng)指標:集群CPU使用率、磁盤使用率以及網(wǎng)絡(luò)寬帶情況等等。

      應(yīng)用指標:QPS、出錯率、平均延時等。

      業(yè)務(wù)指標:用戶會話、訂單數(shù)量和營業(yè)額等。

      Prometheus簡介:

      Prometheus受啟發(fā)于Google的Brogmon監(jiān)控系統(tǒng)(相似的Kubernetes是從Google的Brog系統(tǒng)演變而來),從2012年開始由前Google前工程師在Soundcloud以開源軟件的形式進行研發(fā),并且于2015年早期對外發(fā)布早期版本。2016年5月繼Kubernetes之后成為第二個正式加入CNCF基金會的項目。

      目前,Prometheus已經(jīng)成為云原生監(jiān)控領(lǐng)域的事實標準。

      常見的開源指標監(jiān)控系統(tǒng)有Zabbix、Prometheus等;還有一些商業(yè)監(jiān)控產(chǎn)品,比如sysdig、dynatrace等。

      Prometheus架構(gòu)

      prometheus的主要特點:

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

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

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

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

      基于pull方式采集時序數(shù)據(jù)。

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

      可以通過服務(wù)發(fā)現(xiàn)或者靜態(tài)配置去獲取要采集的target。

      社區(qū)支持大量的第三方exporter和client庫。

      基于Prometheus-operator集群監(jiān)控

      prometheus-operator:本質(zhì)是一組CRD和controller的實現(xiàn),prometheus operator提供如下幾類CRD:

      Prometheus:聲明式創(chuàng)建和管理Prometheus Server實例;

      ServiceMonitor:負責聲明式的管理監(jiān)控配置;

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

      Alertmanager:聲明式的創(chuàng)建和管理Alertmanager實例。

      簡言之,Prometheus Operator能夠幫助用戶自動化的創(chuàng)建以及管理Prometheus Server以及其相應(yīng)的配置。

      集群事件監(jiān)控

      k8s的Event事件是一種資源對象,用于展示集群內(nèi)發(fā)生的情況,k8s系統(tǒng)中的各個組件會將運行時發(fā)生的各種事件上報給apiserver??梢酝ㄟ^kubectl get event或kubectl describe pod podName 命令顯示事件,查看k8s集群中發(fā)生了哪些事件。

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

      集群日志監(jiān)控(fluentd +ELK)

      日志在K8S里面主要分為四個大的場景:

      1.主機內(nèi)核的日志:比如文件系統(tǒng)異常,kernelpanic,或者〇OM日志等。

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

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

      4.應(yīng)用日志:可以通過應(yīng)用的日志來查看業(yè)務(wù)層的一個狀態(tài)。比如說可以看業(yè)務(wù)層有沒有500的請求?有沒有一些panic?有沒有一些異常的錯誤訪問?那這些其實都可以通過應(yīng)用日志來進行查看的。

      拓撲與調(diào)用鏈

      當我將單體應(yīng)用拆成多個微服務(wù)之后,如何監(jiān)控服務(wù)之間的依賴關(guān)系和調(diào)用鏈,以判斷應(yīng)用在哪個服務(wù)環(huán)節(jié)出了問題,哪些地方可以優(yōu)化?這就需要用到分布式追蹤(Distributed Tracing)。

      CNCF 提出了分布式追蹤的標準OpenTracing,它提供用戶廠商中立的API,并提供Go、Java、JavaScript、Python、Ruby、PHP、Objective-C、C++和C#這多種語言的庫。

      同時CNCF中還有個端到端的支持OpenTracingAPI的分布式追蹤項目Jaeger。

      2.常見集群故障排錯分析

      華為云云原生鉆石集訓營 第九課:Kubernetes運維管理詳解(下)

      集群常見問題排障

      k8s常用排錯方法:

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

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

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

      常見K8S問題舉例:

      1.無法下載鏡像

      2. POD持續(xù)重啟

      3.通過Service無法訪問

      3.華為云CIE集群監(jiān)控方案架構(gòu)詳解

      容器洞察引擎(Container Insight Engine)提供跨集群集中統(tǒng)一的云原生容器應(yīng)用監(jiān)控運維能力,支持多集群集中告警、事件管理,指標管理和分布式調(diào)用鏈跟蹤能力。借助CIE,用戶可以在華為云上獲得容器化應(yīng)用的全棧易用的可觀測性能力。

      架構(gòu)特點:

      1.全面兼容云原生技術(shù)

      基于原生K8s+Prometheus的監(jiān)控架構(gòu)體系,增強了開箱即用的能力。從容應(yīng)對容器生命周期動態(tài)變化、海量指標的挑戰(zhàn)。

      2.以應(yīng)用為中心,聚焦業(yè)務(wù)指標

      聚焦應(yīng)用Golden Signal (RPS,Error,Duration)等,并適時關(guān)聯(lián)資源指標。

      3.Everything in One Place,快捷排障

      應(yīng)用全景視圖和資源映射,可以無縫關(guān)聯(lián)告警、事件、日志等信息。

      分布式調(diào)用鏈和依賴拓撲,應(yīng)對服務(wù)網(wǎng)格化,支持快速排障。

      4.一鍵診斷,主動預(yù)測預(yù)警

      一鍵式集群業(yè)務(wù)診斷,關(guān)鍵指標主動預(yù)測,提前預(yù)警

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

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

      統(tǒng)一日志存儲:支持多種日志存儲方式,支持日志瀏覽、統(tǒng)計聚合;支持日志關(guān)鍵詞告警;

      本課總結(jié):

      Prometheus:云原生監(jiān)控系統(tǒng),云原生監(jiān)控事實標準。

      K8s Event:K8s Event是一種資源對象,用于展示集群內(nèi)發(fā)生的情況,k8s系統(tǒng)中的各個組件會將運行時發(fā)生的各種事件上報給apiserver.

      Fluentd:fluentd是一個針對日志的收集、處理、轉(zhuǎn)發(fā)系統(tǒng)。通過豐富的插件系統(tǒng),可以收集來自于各種系統(tǒng)或應(yīng)用的日志,轉(zhuǎn)化為用戶指定的格式后,轉(zhuǎn)發(fā)到用戶所指定的日志存儲系統(tǒng)之中。

      Jaeger:Jaeger是Uber開源的分布式跟蹤系統(tǒng),現(xiàn)在已經(jīng)成為CNCF的開源項目,其靈感來源于Google的Dapper和twitter的Zipkin

      參考鏈接:

      Prometheus官方文檔: https://prometheus.io/docs/introduction/overview/

      NodeProblemDetector代碼倉庫: https://github.com/kubernetes/node-problem-detector

      kubernetes-event-exporter代碼倉庫: https://github.com/opsgenie/kubernetes-event-exporter

      Kubernetes 云原生 運維

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

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

      上一篇:Word2013中使用交叉引用在文檔中快速定位的方法(快速定位到交叉引用處)
      下一篇:WPS如何設(shè)置表格按工資排序圖文教程(wps怎么做工資表表格)
      相關(guān)文章
      国产午夜亚洲精品理论片不卡| www.亚洲精品.com| 亚洲丰满熟女一区二区哦| 亚洲视频在线观看免费| 亚洲日韩中文字幕在线播放| 亚洲色婷婷综合开心网| 亚洲一区二区三区国产精品| 亚洲精品人成无码中文毛片 | 亚洲国产精品13p| 亚洲AV永久无码精品一区二区国产| 狠狠综合亚洲综合亚洲色| 一级毛片直播亚洲| 亚洲欧洲精品成人久久奇米网| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲欧洲日韩国产| 亚洲嫩草影院在线观看| 亚洲一级免费视频| 中文字幕亚洲精品无码| 亚洲人成未满十八禁网站| 亚洲AV女人18毛片水真多| xvideos亚洲永久网址| 亚洲精品线路一在线观看| 77777亚洲午夜久久多人| 亚洲国产精品一区第二页| 亚洲视频在线观看免费| 亚洲成AV人片久久| 亚洲国产成人精品无码区在线秒播| 亚洲一卡2卡3卡4卡国产网站| 国产亚洲精久久久久久无码AV| 亚洲国产成人精品无码区在线秒播| 亚洲国产夜色在线观看| 亚洲熟女乱色一区二区三区| 亚洲av永久中文无码精品| 亚洲精品国产高清嫩草影院| 日本红怡院亚洲红怡院最新| 亚洲综合精品香蕉久久网97| 亚洲av永久无码精品三区在线4 | 亚洲av综合av一区| 亚洲熟妇无码爱v在线观看| 亚洲高清有码中文字| 精品久久久久久亚洲综合网|