簡(jiǎn)介
Kubernetes 憑借其強(qiáng)大的功能屯阀,已成為部署和管理容器化工作負(fù)載的“容器編排平臺(tái)”鲫趁。然而踱葛,其架構(gòu)的復(fù)雜性和動(dòng)態(tài)特性給監(jiān)控已部署工作負(fù)載和平臺(tái)本身帶來(lái)了重大挑戰(zhàn)土陪。對(duì)于使用者煤蹭,保證 Kubernetes 的穩(wěn)定性和可用性是最基礎(chǔ)的需求笔喉,而這其中最核心的就是如何有效地監(jiān)控 Kubernetes 集群,保證集群有一個(gè)良好的可觀測(cè)性硝皂。接下來(lái)將為大家介紹 Kubernetes 的可觀測(cè)方案常挚。
Kubernetes 可觀測(cè)方案
面對(duì) Kubernetes 監(jiān)控的挑戰(zhàn),如技術(shù)棧復(fù)雜稽物、學(xué)習(xí)成本高奄毡、監(jiān)控指標(biāo)不準(zhǔn)確和缺乏合適的監(jiān)控界面等問(wèn)題,觀測(cè)云提供了一個(gè)全面的解決方案贝或。觀測(cè)云是一款適用于全技術(shù)棧的監(jiān)控和觀測(cè)一體化產(chǎn)品吼过,能夠?qū)崿F(xiàn)對(duì)云原生、中間件和應(yīng)用的實(shí)時(shí)監(jiān)控咪奖。
針對(duì) Kubernetes盗忱,觀測(cè)云提供了一套完整的監(jiān)控解決方案,有效解決了 Kubernetes 監(jiān)控中的多個(gè)痛點(diǎn)羊赵。觀測(cè)云的數(shù)據(jù)采集依賴于 DataKit趟佃,無(wú)需額外的 agent,即可一站式采集以下數(shù)據(jù):
- 節(jié)點(diǎn)基礎(chǔ)指標(biāo):包括 CPU昧捷、內(nèi)存揖闸、網(wǎng)絡(luò)和磁盤 IO 等關(guān)鍵性能指標(biāo)。
- Kubernetes 核心指標(biāo):涵蓋運(yùn)行中的 Deployment料身、StatefulSet汤纸、DaemonSet、Pod 和容器等指標(biāo)數(shù)據(jù)芹血。
- 控制平面監(jiān)控:監(jiān)控 Kubernetes 的內(nèi)部組件贮泞,如 APIServer、ETCD幔烛、Kubelet 和 Scheduler 等啃擦。
- Kubernetes 事件:報(bào)告集群內(nèi)的事件,包括資源狀態(tài)變化饿悬、錯(cuò)誤信息以及其他需要系統(tǒng)廣播的消息令蛉。
通過(guò)觀測(cè)云,用戶可以簡(jiǎn)化 Kubernetes 監(jiān)控的復(fù)雜性,降低學(xué)習(xí)成本珠叔,并確保監(jiān)控?cái)?shù)據(jù)的準(zhǔn)確性蝎宇,同時(shí)提供一個(gè)直觀的監(jiān)控界面,幫助用戶更好地管理和優(yōu)化 Kubernetes 集群祷安。
部署 DataKit
登錄[觀測(cè)云控制臺(tái)](https://console.guance.com/)姥芥,點(diǎn)擊「集成」 -「DataKit」 - 「Kubernetes」,下載 datakit.yaml 汇鞭,拷貝第 3 步中的 token 凉唐。
編輯 datakit.yaml ,把 token 粘貼到 ENV_DATAWAY 環(huán)境變量值中“token=”后面霍骄,設(shè)置環(huán)境變量 ENV_CLUSTER_NAME_K8S 的值并增加環(huán)境變量 ENV_NAMESPACE台囱,這兩個(gè)環(huán)境變量的值一般和集群名稱對(duì)應(yīng),一個(gè)工作空間集群名稱要唯一读整。
? ? ? ? - name: ENV_NAMESPACE
? ? ? ? ? value: xxxx
把 datakit.yaml 上傳到可以連接到 Kubernetes 集群的主機(jī)上玄坦,執(zhí)行如下命令。
kubectl apply -f datakit.yaml
kubectl get pod -n datakit
當(dāng)看到狀態(tài)是“Running”后表示安裝 DataKit 成功绘沉。
開(kāi)通采集器
DataKit 的 Container 采集器煎楣,支持采集 Kubernetes 的指標(biāo)、事件车伞、stdout 日志择懂,不依賴 metrics-server、node-exporter另玖、kube-state-metrics困曙。DataKit 默認(rèn)開(kāi)通了容器采集器,為了采集 Pod 指標(biāo)谦去,需要增加環(huán)境變量慷丽。
? ? ? ? - name: ENV_INPUT_CONTAINER_ENABLE_POD_METRIC? ?
? ? ? ? ? value: "true"
組件指標(biāo)采集,需要使用 DataKit 的 [KubernetesPrometheus](https://docs.guance.com/integrations/kubernetesprometheus/) 采集器鳄哭,它根據(jù)自定義配置實(shí)現(xiàn)自動(dòng)發(fā)現(xiàn)集群中暴露的 metrics 并進(jìn)行采集要糊。下面列出了各組件的 metrics 接口,使用方式請(qǐng)移步到對(duì)應(yīng)的最佳實(shí)踐妆丘。
指標(biāo)
點(diǎn)擊「指標(biāo)」 -「指標(biāo)管理」锄俄,輸入“kube”,就能查詢采集到的指標(biāo)勺拣。
事件
點(diǎn)擊「日志」 -「指標(biāo)管理」奶赠,數(shù)據(jù)來(lái)源選擇“kubernets_events”。
監(jiān)控視圖
點(diǎn)擊「基礎(chǔ)設(shè)施」 -「容器」-「分析看板」-「Kubernetes」药有,查看 Kubernetes 集群看板毅戈。
點(diǎn)擊「基礎(chǔ)設(shè)施」 -「容器」-「分析看板」-「Kubernetes Event」,查看 Kubernetes 事件看板。
關(guān)鍵指標(biāo)
Kubernetes 監(jiān)控指標(biāo)主要包括:節(jié)點(diǎn)指標(biāo)苇经、資源指標(biāo)赘理、Pod 指標(biāo)、容器指標(biāo)等塑陵。這些指標(biāo)歸屬不同的指標(biāo)集感憾。下面列出部分指標(biāo)蜡励,更多指標(biāo)請(qǐng)參閱[集成文檔](https://docs.guance.com/integrations/container/)令花。
kubernetes 指標(biāo)集
kube_pod 指標(biāo)集
監(jiān)控器(告警)
通過(guò)合理配置監(jiān)控器,可以及時(shí)發(fā)現(xiàn) Kubernetes 潛在風(fēng)險(xiǎn)凉倚,觀測(cè)云也提供了相應(yīng)的模板供客戶參考使用兼都。
事件
Kubernetes 事件(Events)是 Kubernetes 集群中用于記錄和監(jiān)控集群內(nèi)發(fā)生的各種狀態(tài)變化和操作的通知。這些事件包括但不限于 Pod 的啟動(dòng)和停止稽寒、配置更改扮碧、資源不足、錯(cuò)誤狀況等杏糙。通過(guò)這些事件告警慎王,可以更容易地理解和診斷集群中的問(wèn)題和狀態(tài),確保容器化應(yīng)用程序的平穩(wěn)高效運(yùn)行宏侍。
Pod 重啟
Pod 內(nèi)存使用率過(guò)高
Pod? 內(nèi)存使用率超過(guò) 95%赖淤,觸發(fā)告警。
Pod CPU 使用率過(guò)高
Pod? CPU 使用率超過(guò) 95%谅河,觸發(fā)告警咱旱。
如需更多監(jiān)控器可以按照實(shí)際生產(chǎn)需求進(jìn)行配置。
總結(jié)
Kubernetes 可觀測(cè)對(duì)于維護(hù)容器化應(yīng)用程序的健康绷耍、性能和可靠性至關(guān)重要吐限。它是一種主動(dòng)方法,涉及持續(xù)跟蹤褂始、分析和可視化 Kubernetes 集群的健康和性能诸典。它提供對(duì)資源利用率、系統(tǒng)行為和潛在瓶頸的見(jiàn)解崎苗,能夠在應(yīng)用程序或集群本身中斷之前及早發(fā)現(xiàn)和解決潛在問(wèn)題搂赋,確保最佳運(yùn)行。