如何使用 K8s 兩大利器"審計"和"事件"幫你擺脫運維困境?

2020-12-25 計算機java編程

概述

下面幾個問題,相信廣大 K8s 用戶在日常集群運維中都曾經遇到過:

集群中的某個應用被刪除了,誰幹的?Apiserver 的負載突然變高,大量訪問失敗,集群中到底發生了什麼?集群節點 NotReady,是什麼原因導致的?集群的節點發生了自動擴容,是什麼觸發的?什麼時間觸發的?以前,排查這些問題,對客戶來說並不容易。生產環境中的 Kubernetes 集群通常是一個相當複雜的系統,底層是各種異構的主機、網絡、存儲等雲基礎設施,上層承載著大量的應用負載,中間運行著各種原生(例如:Scheduler、Kubelet)和第三方(例如:各種 Operator)的組件,負責對基礎設施和應用進行管理和調度; 此外不同角色的人員頻繁地在集群上進行部署應用、添加節點等各種操作。在集群運行的過程中,為了對集群中發生的狀況能夠儘可能的了如指掌,我們通常會從多個維度對集群進行觀測。

日誌,作為實現軟體可觀測性的三大支柱之一,為了解系統運行狀況,排查系統故障提供了關鍵的線索,在運維管理中起著至關重要的作用。Kubernetes 提供了兩種原生的日誌形式——審計(Audit)和事件(Event),它們分別記錄了對於集群資源的訪問以及集群中發生的事件信息。從騰訊雲容器團隊長期運維 K8s 集群的經驗來看,審計和事件並不是可有可無的東西,善用它們可以極大的提高集群的可觀測性,為運維帶來巨大的便利。下面讓我們先來簡單認識一下它們。

什麼是 Kubernetes 審計?

Kubernetes 審計日誌是 Kube-apiserver 產生的可配置策略的結構化日誌,記錄了對 Apiserver 的訪問事件。審計日誌提供 Metrics 之外的另一種集群觀測維度,通過查看、分析審計日誌,可以追溯對集群狀態的變更;了解集群的運行狀況;排查異常;發現集群潛在的安全、性能風險等等。

審計來源

在 Kubernetes 中,所有對集群狀態的查詢和修改都是通過向 Apiserver 發送請求,對 Apiserver 的請求來源可以分為4類

控制面組件,例如 Scheduler,各種 Controller,Apiserver 自身節點上的各種 Agent,例如 Kubelet、Kube-proxy 等集群的其它服務,例如 Coredns、Ingress-controller、各種第三方的 Operator 等外部用戶,例如運維人員通過 Kubectl

審計中都記錄了些什麼?

每一條審計日誌都是一個 JSON 格式的結構化記錄,包括元數據(metadata)、請求內容(requestObject)和響應內容(responseObject)3個部分。其中元數據一定會存在,請求和響應內容是否存在取決於審計級別。元數據包含了請求的上下文信息,例如誰發起的請求,從哪裡發起的,訪問的 URI 等等;

審計有什麼用?

Apiserver 做為 Kubernetes 集群唯一的資源查詢、變更入口,審計日誌可以說記錄了所有對於集群訪問的流水, 通過它可以從宏觀和微觀了解整個集群的運行狀況,比如:

資源被刪掉了,什麼時候刪掉的,被「誰」刪掉的?服務出現問題,什麼時候做過版本變更?Apiserver 的響應延時變長,或者出現大量 5XX 響應 Status Code,Apiserver 負載變高,是什麼導致的?Apiserver 返回 401/403 請求,究竟是證書過期,非法訪問,還是 RBAC 配置錯誤等。Apiserver 收到大量來自外網 IP 對敏感資源的訪問請求,這種請求是否合理,是否存在安全風險;什麼是Kubernetes事件?

事件(Event)是 Kubernetes 中眾多資源對象中的一員,通常用來記錄集群內發生的狀態變更,大到集群節點異常,小到 Pod 啟動、調度成功等等。我們常用的kubectl describe命令就可以查看相關資源的事件信息。

事件中記錄了什麼?

級別(Type): 目前僅有「Normal」和「Warning」,但是如果需要,可以使用自定義類型。資源類型/對象(Involved Object):事件所涉及的對象,例如 Pod,Deployment,Node 等。事件源(Source):報告此事件的組件;如 Scheduler、Kubelet 等。內容(Reason):當前發生事件的簡短描述,一般為枚舉值,主要在程序內部使用。詳細描述(Message):當前發生事件的詳細描述信息。出現次數(Count):事件發生的次數。事件有什麼用?

集群內已經翻江倒海,集群外卻風平浪靜,這可能是我們日常集群運維中常常遇到的情況,集群內的狀況如果無法透過事件來感知,很可能會錯過最佳的問題處理時間,待問題擴大,影響到業務時才發現往往已經為時已晚;除了早早發現問題,Event 也是排查問題的最佳幫手,由於 Event 記錄了全面的集群狀態變更信息,所以大部分的集群問題都可通過 Event 來排查。總結一下 Event 在集群中扮演兩大重要角色:

「吹哨人」:當集群發生異常情況時,用戶可通過事件第一時間感知;「目擊者」:集群中的大小事件都會通過 Event 記錄,如果集群中發生意外情況,如:節點狀態異常,Pod 重啟,都可以通過事件查找發生的時間點及原因;TKE 如何發掘審計/事件的價值

傳統的通過輸入查詢語句檢索日誌的方式來使用審計和事件,固然可以提供很高的靈活性,但也有著較高的使用門檻,不僅要求使用者對於日誌的數據結構非常了解,還要熟悉 Lucene、SQL 語法。這往往導致使用效率偏低,也無法充分發掘數據的價值。

騰訊雲容器服務 TKE 聯合騰訊雲日誌服務CLS,打造出針對 Kubernetes 審計/事件採集、存儲、檢索、分析的一站式產品級服務, 不僅提供了一鍵開啟/關閉功能,免去一切繁瑣的配置;而且容器團隊還從長期運維海量集群的經驗中,總結出對於 Kubernetes 審計/事件的最佳使用實踐,通過可視化的圖表,以多個維度對審計日誌和集群事件進行呈現,使用者只需了解 K8s 的基本概念,就能很「直覺」地在 TKE 控制臺上進行各種檢索和分析操作,足以涵蓋絕大多數常見集群運維場景, 讓無論是發現問題還是定位問題都事半功倍,提升運維效率,真正將審計和事件數據的價值最大化 。

如何使用 TKE 審計/事件服務去排查問題?

關於 TKE 的集群審計/事件簡介與基礎操作,請參考集群審計、事件存儲的官方文檔。

場景示例:

下面我們看幾個現實中的典型場景

示例1: 排查一個工作負載消失的問題

在審計檢索頁面中,單擊【K8s 對象操作概覽】標籤,指定操作類型和資源對象

查詢結果如下圖所示:

由圖可見,是 10001****7138 這個帳+號,對應用「nginx」進行了刪除。可根據帳號ID在【訪問管理】>【用戶列表】中找到關於此帳號的詳細信息。

示例2: 排查一個節點被封鎖的問題

在審計檢索頁面中,單擊【節點操作概覽】標籤,填寫被封鎖的節點名

查詢結果如下圖所示:

由圖可見,是10001****7138這個帳+號在2020-1-30T06:22:18時對172.16.18.13這臺節點進行了封鎖操作。

示例3: 排查 Apiserver 響應變慢的問題

在審計檢索的【聚合檢索】標籤頁中,提供了從用戶、操作類型、返回狀態碼等多個維度對於 Apiserver 訪問聚合趨勢圖。

由圖可見,用戶tke-kube-state-metrics的訪問量遠高於其他用戶,並且在「操作類型分布趨勢」圖中可以看出大多數都是 list 操作,在「狀態碼分布趨勢」圖中可以看出,狀態

碼大多數為 403,結合業務日誌可知,由於 RBAC 鑑權問題導致tke-kube-state-metrics組件不停的請求Apiserver重試,導致 Apiserver 訪問劇增。日誌如下所示:

示例4:排查節點異常的問題

一臺 Node 節點出現異常,在事件檢索頁面,點擊【事件總覽】,在過濾項中輸入異常節點名稱

查詢結果顯示,有一條節點磁碟空間不足的事件記錄查詢結果如下圖:

進一步查看異常事件趨勢

可以發現,2020-11-25號開始,節點172|16|18|13由於磁碟空間不足導致節點異常,此後 kubelet 開始嘗試驅逐節點上的 pod 以回收節點磁碟空間;

示例5: 查找觸發節點擴容的原因

開啟了節點池「彈性伸縮」的集群,CA(cluster-autoscler)組件會根據負載狀況自動對集群中節點數量進行增減。如果集群中的節點發生了自動擴(縮)容,用戶可通過事件檢索對整個擴(縮)容過程進行回溯。

在事件檢索頁面,點擊【全局檢索】,輸入以下檢索命令:

event.source.component : "cluster-autoscaler"

在左側隱藏欄位中選擇event.reason、event.message、event.involvedObject.name、event.involvedObject.name進行顯示,將查詢結果按照日誌時間倒序排列,結果如下圖所示:

通過上圖的事件流水,可以看到節點擴容操作在2020-11-25 20:35:45左右,分別由三個 nginx Pod(nginx-5dbf784b68-tq8rd、nginx-5dbf784b68-fpvbx、nginx-5dbf784b68-v9jv5) 觸發,最終擴增了3個節點,後續的擴容由於達到節點池的最大節點數沒有再次觸發。

相關焦點

  • 天融信堡壘機 運維管理利器
    IT業務系統日益龐大,如何簡化運維管理難題及運維安全性問題?IT運維人員如何應對諸多系統用戶名和密碼的記憶以及口令複雜度要求?IT業務系統發生事故時,如何查找並舉證相關責任事件,問責到人?同時,系統運維人員也隨之增多。IT部門的管理與運維困擾逐漸凸顯。現狀管理問題網絡設備、主機系統等,分別具備獨立的用戶管理、認證授權和系統審計,且由不同的系統管理員負責維護和管理,工作量及複雜程度成倍激增。
  • Linux運維如何轉型安全滲透,前景如何
    ——《在中央網絡安全和信息化領導小組第一次會議上的講話》上面種種情況直接表明安全滲透的發展可以說是一片藍海,而且從事的崗位也很多(安全服務工程師、安全運維工程師、滲透測試工程師、Web安全工程師、代碼審計工程師等)薪資基本都在2W左右!
  • 手把手教你用 Jenkins + K8S 打造流水線環境
    朋友的真實操作流程,使用 Jenkins 和 Kubernetes 完成持續集成和持續部署,有搭建,有入門,手把手教學文檔,幹得擰不出水來,分享一波。本文作者:孫丹丹,女,單身  ,DevOps 運維工程師,CKA 認證。就職於某容器雲平臺服務公司,負責國內多家知名企業 DevOps 運維交付。
  • 【IDCC2020】廣東浩雲長盛網絡股份有限公司全國運維總經理朱紅兵...
    第二個容易缺的尾巴,因為我們數據中心正常的生命周期大概是8到10年,但是我設備的生命周期沒有這麼長,像蓄電池正常的生命周期就是6年左右,包括冷卻塔、精密空調、風櫃,它的周期5到8年的時候需要大修,需要優化、改造,這部分的運維體系很多第三方同行是容易缺的。第二個容易缺的地方是很多同行做這個事情的時候,它的運維體系有,但是很多年沒有迭代。
  • 白巖松:如何擺脫稚嫩心態和不敢表達的困境
    白巖松:如何擺脫稚嫩 心態和不敢表達的困境其中之一是:如何打破緊張膽小、不敢表達的困境?如何擺脫「總覺得自己還是小孩子」的稚嫩思維和心態?對這些問題,央視評論員白巖松分享了他的看法。 白巖松認為:大多數人的不善表達,都是突破不了內心障礙。與其說是膽小,不如說是太在意別人對自己表達的反應,因此擔心憂慮害怕,所以就不表達了。
  • 愛數AnyRobot:一文詳解Oracle運維分析實踐
    對於複雜的業務系統,一旦資料庫性能降低,會導致依賴於資料庫的應用系統運行緩慢,或者根本無法使用,最終引起企業的客戶流失和經營利潤的損失。Oracle Database,簡稱Oracle,在資料庫領域一直處於領先地位。其系統可移植性好、使用方便、功能強,廣泛應用於各類大、中、小、微機環境。
  • 日誌易助力臺灣國泰世華銀行網絡安全合規審計
    近日,臺灣國泰世華銀行上海分行與日誌易就安全合規審計項目展開合作,日誌易將助力國泰世華銀行實現基於海量日誌的實時監控、安全事件響應等需求,滿足國家網絡安全法規要求。二、日誌審計日誌易能夠實現對網絡設備、安全設備的日誌審計。包括網絡設備審計、防火牆日誌審計、IPS日誌審計等。
  • 軍用重卡深陷沙海無法前進,看汽車兵如何擺脫困境?
    軍用重卡深陷沙海無法前進,看汽車兵如何擺脫困境?「所有人都要使勁!」本期節目沙海救援課目,要求兩支戰隊分別攜帶就便器材,快速到達受困車輛位置並展開救援,首先將被困車輛救援出受困區域的戰隊獲勝。
  • 在大數據世界「尋寶」,科研新範式如何用好存儲這把利器?
    原標題:在大數據世界「尋寶」,科研新範式如何用好存儲這把利器?如今越來越多科研人員,面臨的不是缺少數據的難題,而是海量數據環境下如何存儲、管理和利用數據,這對於科研數據底座的存儲在容量、性能、擴展和管理等方面提出極高的要求。 薛向陽教授介紹:「我們正在建設一個人工智慧與大數據的開放共享平臺,就是希望為科研工作者解決數據存儲、管理和利用等方面的挑戰,讓數據更好地為科研所用。」
  • 託爾斯泰:我們應該如何擺脫生活的困境?
    我們應該如何擺脫生活的困境?文|託爾斯泰由於在知識中找不到解釋,我開始在生活中探索,寄希望於我身邊的人群。我開始觀察像我這樣的人,琢磨他們在我身邊如何生活,如何處理這個把我帶入萬劫不復的問題。這就是在和我有著相同教育背景以及生活方式的人身上找到的解釋。
  • 跟著《審計風雲》學審計
    但卻是實實在在存在的,用事務所理事長的話來說:"如果嚴格審計全部用到現在的日本經濟上的話,會出大問題!"我國和日本之間對審計的一些專業術語還是有差異的,比如日本的審計人員叫做監察法人,註冊會計師叫做公認會計士,日本的審計師高高在上,而我國註冊會計師在審計中地位懸殊,對待客戶就像對待上帝。
  • 全球敏捷運維峰會(Gdevops)即將於上海盛大收官
    最佳案例:技術革新名企大咖,分享那些在光鮮亮麗背後踩過的坑,一個個鮮活的乾貨案例,字字珠璣的忠告,值得學習借鑑。 同場收穫:一主場兩分場,共論架構、敏捷、運維以及雲之道;2016年度最受矚目MVP評選與頒獎典禮,見證實至名歸的加冕;共建精英圈子、專享私密聚會,期待你的加入!
  • 史上最強會計電影《審計陷阱》
    《審計陷阱》是一部令人興奮的劇情片,該片對會計師、審計師和公司高管在面臨困難決策時該如何採取行動進行了廣泛討論。之後,Duncan又創作了兩部有關公司治理的影片:《權衡得失》(Counting The Cost)和《代價》(A Price Worth Paying)。2013年7月《華爾街日報》頭版對《代價》進行報導後,該片在歐美及世界其它地區熱播。《審計陷阱》採用電影專業設備,在位於倫敦的英格蘭及威爾斯特許會計師協會(ICAEW)總部大樓進行取景拍攝。
  • 透過谷歌宕機事故看存儲運維三大重要趨勢
    近日,谷歌又出現大面積癱瘓事件,導致全球範圍內多款Google服務崩潰,這已經是谷歌近半年第三次出現大規模宕機事件,堪稱上演宕機「帽子戲法」。請教完大神之後,小編對數據中心當前運維情況進行了一番調研。並且,近期銀行、證券等金融行業也是頻頻故障癱瘓,有著深厚先進技術積累的科技、金融領域企業尚且在運維上頻頻觸礁,其他領域的風險和困境可想而知。可以說,解決存儲設備故障問題等於給數據中心買來一份「保險」。
  • 交通銀行數據中心網絡運維數位化轉型探索
    在這14年裡,數據中心的網絡規模不斷擴大,從最初的單中心逐漸延伸到了三地四中心運營;使用的網絡技術也從傳統的交換路由、負載均衡、防火牆逐步發展到軟體定義網絡、網絡服務虛擬化等各類新興技術。如何高質量、高效率地運維龐雜的網絡環境,已經成為網絡運維人員的必答題。2019年起,交通銀行數據中心啟動了智能數據中心建設,開啟了運維工作智能化轉型的序幕。
  • ThinkBook 13s 2021使用體驗:英特爾Evo平臺認證,輕度辦公利器
    除了這兩點之外,EVO 筆記本還要能支持 Wi-Fi 6 網絡和 Thunderbolt 4 接口,前者可以提供 1000Mbps 以上的網速,後者可以提供 40Gbps 的傳輸速度,是 USB 3.0 接口的 8 倍,4K 及 8K 視頻也能快速傳完。
  • 史上最強會計電影《審計陷阱》全球發行
    有些人可能會質疑ICAEW不是應該專注於會計審計等問題的研究嗎?頂多也就延伸到經濟領域,再怎麼也不至於跨界去拍電影吧?小編在這裡要肯定的告訴你:是!的!你沒有聽錯!ICAEW投資的以培訓為目的的電影已經面世了,還不趕快來圍觀~~小夥伴們此時一定很好奇電影的內容是什麼。
  • 運維必看電影:中國機長
    而幾乎所有運維做的操作基本都還不至於關乎自己的生命,如果關乎,我想沒有人會不嚴謹,無論這件事是不是已經成功的做了一萬次,這也是王堅博士在很多場合說的是不是和客戶在同一架飛機上的感受,畢竟事實上很多運維現在做的操作,點下的每個按鈕,敲下的每個回車,所能帶來的影響其實是非常非常大的,只是自己可能沒有那麼強的感受而已,我是一個無比相信系統的人,但對於一些影響巨大的運維操作,我現在也認為即使再簡單,也應該像飛機操作一樣
  • 全新K米,為你而來.
    k米點歌電腦版介紹 K米,新一代KTV娛樂神器! K米專為KTV裡的時尚達人設計。搜索喜愛的KTV、至酷手機點歌、包廂氣氛互動、演唱錄音下載、即時分享微博微信等,還可以參加特有K歌比賽活動。k米點歌特色功能 搜索並關注身邊熱門KTV - 獲悉KTV優惠信息,還可手機預訂包廂- 導航線路,邀約好友一起K歌 手機點歌時尚體驗:- 點歌不起身,插歌快人一步- 獨有精彩專題歌單,還可點播K米評分歌曲- 參加現場K歌比賽,秀自己贏大獎 大家一起玩的更HIGH:- 喝彩、吐槽、玩骰子、打節拍,嗨翻包房 - 祝福語表白