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

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

2020-12-08 08:10:21 其他

概述

下面幾個問題,相信廣大 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

img

審計中都記錄了些什么?

每一條審計日志都是一個 JSON 格式的結構化記錄,包括元資料(metadata)、請求內容(requestObject)和回應內容(responseObject)3個部分,其中元資料一定會存在,請求和回應內容是否存在取決于審計級別,元資料包含了請求的背景關系資訊,例如誰發起的請求,從哪里發起的,訪問的 URI 等等;

img

審計有什么用?

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

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

什么是Kubernetes事件?

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

事件中記錄了什么?

img

  • 級別(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 控制臺上進行各種檢索和分析操作,足以涵蓋絕大多數常見集群運維場景, 讓無論是發現問題還是定位問題都事半功倍,提升運維效率,真正將審計和事件資料的價值最大化 ,

img
img

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

關于 TKE 的集群審計/事件簡介與基礎操作,請參考集群審計、事件存盤的官方檔案,

場景示例:

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

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

審計檢索頁面中,單擊【K8s 物件操作概覽】標簽,指定操作型別和資源物件

img

查詢結果如下圖所示:

img

由圖可見,是 10001****7138 這個帳號,對應用「nginx」進行了洗掉,可根據帳號ID在【訪問管理】>【用戶串列】中找到關于此賬號的詳細資訊,

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

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

查詢結果如下圖所示:

img

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

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

審計檢索的【聚合檢索】標簽頁中,提供了從用戶、操作型別、回傳狀態碼等多個維度對于 Apiserver 訪問聚合趨勢圖,

img
img
img

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

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

E1130 06:19:37.368981       1 reflector.go:156] pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:108: Failed to list *v1.VolumeAttachment: volumeattachments.storage.k8s.io is forbidden: User "system:serviceaccount:kube-system:tke-kube-state-metrics" cannot list resource "volumeattachments" in API group "storage.k8s.io" at the cluster scope

示例4:排查節點例外的問題

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

img

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

img

進一步查看例外事件趨勢

img
img

可以發現,2020-11-25號開始,節點172.16.18.13由于磁盤空間不足導致節點例外,此后 kubelet 開始嘗試驅逐節點上的 pod 以回收節點磁盤空間;

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

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

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

event.source.component : "cluster-autoscaler"

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

img

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

總結

本文介紹了在 Kubernetes 中兩個經常被忽略的元素--「審計日志」和「集群事件」,并討論了它們在賦能集群運維和提升系統可觀測性方面的價值,騰訊云容器團隊在長期運維海量 Kubernetes 集群經驗總結的基礎上,在 TKE 中發布了基于審計和事件的產品服務,幫助用戶能夠快速高效解決日常集群運維中遇到的問題,將用戶從繁雜的集群問題中解放出來,

最后我們從實戰角度出發,通過幾個經典問題來演示通過 TKE 審計/事件服務來定位排查問題,由于篇幅有限,我們的演示只是產品功能的冰山一角,更多的功能需要用戶去探索使用,最后歡迎用戶體驗 ,(騰訊云日志服務 CLS 對于 TKE 產生的所有審計/事件資料提供免費服務至 2021年6月1日,)

【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/231369.html

標籤:其他

上一篇:云服務器的選型

下一篇:兩地三中心和三地五中心聽起來很美,現實卻很殘酷

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more