k8s中sidecar死循環

序言

? ??怎么發現我的同事們很上進呢,估計做了下賤的事兒吧。

? ? 傷不到我,不代表不疼!

sidecar產生的問題

? ? 1 背景

? ? 在k8s的環境中,pod的使用越來越多了,也就產生了sidecar容器,在現在的環境中,一個pod可以帶差不多快10個sidecar容器了,各種各樣的場景,例如監控的sidecar容器,例如日志的sidecar容器。

? ? sidecar容器最好用的地方在于只要在pod中加了一個annotations就可以無縫啟動一個容器了,而且當pod刪除之后,如果sidecar容器的配置發生了變化,那么就會自動生效了。

? ? 日志sidecar容器,主要用來將pod的日志進行收集,發送到kafka中,從而保存日志,在pod中寫了一個annotions進行保存,而sidecar的配置的相關的容器,用一個helm進行安裝,一個k8s中一個集群就好了。

? ? 2 sidecar容器引發的問題

? ? 在某一個月黑風高夜,要進行kafka的topic變更,從而就理所當然的修改了sidecar容器的配置,將topic修改,然后進行升級,升級完成之后,重啟了一個測試pod,發現配置未發生變化。

? ? 查看sidecar的cm配置,發現沒有變化,手動進行修改cm,然后再重啟容器,發現生效了,但是再次更新helm,依舊變成了老的值。

? ? 沒有想出特別好的辦法,從而將sidecar 配置的2的pod同時進行了刪除,然后發現pod居然不能重新啟動了,emmm,有點慌。

? ? 趕緊將業務的測試pod刪除一個,看是否能啟動,發現pod能正常刪除,但是啟動不了,生產環境有點壓力,這個時候只要有pod掛掉或者是宿主機掛機,那么所有的業務pod將不能啟動,必然會造成故障。

? ? 掐指一算,沒辦法了,先喊人一起幫忙查,pod都沒啟動,看不到任何錯誤信息,只能直接查看namespace的事件了。

kubectl?get?events -n fuck

? ? 發現有事件,事件顯示pod無法啟動,是因為sidecar的svc端點無法找到,這不是很正常嗎,因為服務的pod都被刪除了,那么svc肯定用不了,從而形成了一個死循環。

? ? pod啟動需要經過驗證,也就是要調用svc,而svc的兩個pod被刪除了,那么就卡死在這里,都不能啟動。

webhooks.failurePolicyfailurePolicy 定義了如何處理來自準入端點的無法識別的錯誤 -?允許的值是 Ignore 或 Fail。默認為 Fail

? ?默默地修改了webhook的失敗策略,從默認值修改為Ignore,然后發現控制的pod啟動了,發現業務的pod也啟動了,危機解決,默默地送了一口氣,說了一句fuck,居然還會有循環依賴的情況發生。

? ? 我知道你很急,但是請先別急,找找思路,實在不行,就只能搖人了。

? ? 故障都是天注定的,所以急也沒用,沒用也急。

validatingwebhookconfiguration?全局資源,用來進行驗證使用。

? ? 3 日志sidecar存在的問題

? ? 在使用日志sidecar的時候,碰到幾個問題,注意避雷。

? ? 使用sidecar的時候,如果修改配置,必須要重啟原來的pod,如果重啟pod影響很大,可能要使用其他的方案,因為在使用sidecar的時候,如果單獨啟動sidecar容器,配置是不能生效的;如果對于發布部署類的,這種比較好用,如果是中間件那種萬年不啟動的,有點難度,所以選擇sidecar的時候,最好的是pod能自動對修改的配置生效。

? ? 在使用sidecar的時候,注意分配好對應的request和limit,如果一個宿主機上的機器過多,不要把request和limit設置成一樣,設置的很大,因為sidecar占用的資源也很大,最好是request很少,limit稍微大一點,而且這個配置都是固定的,不能說有的pod是一個值,其他的pod又是一個值。

? ? 在使用日志配置的時候,有一個是多行的配置,默認值是開啟的,這個容易產生一個bug,在有的云上面,如果日志為空,那么會直接將這個宿主機的磁盤直接吃滿,不過沒仔細查,當時也就草草的把這個配置設置為false就解決了。

? ? sidecar的配置是全局的時候,你會發送最新的配置更新了,但是在其他的namespace里面的配置沒更新,直到你重啟了一個pod,才會發現配置更新,這點也需要注意,經常會在重啟pod之前去檢查配置,然后發現沒更新,在那折騰半天。

? ? 在使用helm的時候,如果發現upgrade的時候,set的值未生效,檢查一下template,沒準就會發現有些傻叉把對應的配置要么就是不能配置,要么就是配置的位置不對,從而導致不能生效。

風言風語

? ??sidecar用起來的確很爽,因為使用起來很簡單,只要加一個annotation,但是要注意使用的時候,可能會阻塞pod的啟動,如果你使用了istio,也可能存在這種問題。

? ? 兩個pod同時刪除,就導致了webhook不能使用,這個也是個風險點,如果2個pod同時在一個機器上,而這臺機器宕機了;如果這兩個pod所在的兩個機器同時宕機了,也不能使用了,而且這個時候,如果業務容器重啟了,那還啟不起來,如果告警做的不好,那估計等整個集群掛了,你才能發現這個問題,告警做的是否充足,也是個考驗。

? ? ?上進和下賤有區別嗎?當然沒分別了,凡是有上進心的人一定會做出下賤的事兒,這下賤的人也一定會有上進心的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79583.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Day53 二叉樹的層序遍歷

給你二叉樹的根節點 root ,返回其節點值的 層序遍歷 。 (即逐層地,從左到右訪問所有節點)。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* T…

C盤清理技巧分享

一、系統級深度清理 1. 存儲感知自動化 路徑:設置 → 系統 → 存儲 → 開啟「存儲感知」配置策略: 臨時文件:每 1-2 周自動清理回收站:超過 30 天自動清空應用緩存:按需求設置清理頻率進階操作:在「高級存儲設置」中關閉「傳遞優化」(減少更新緩存占用)2. 磁盤清理工具…

面試題--隨機(一)

MySQL事務中的ACID特性? A 原子性 事務是一組SQL語句,不可分割 C 一致性 事務中的SQL語句要么同時執行,即全部執行成功,要么全部不執行,即執行失敗 I 隔離性 MySQL中的各個事務通過不同的事務隔離等級,產生…

Spring Boot資源耗盡問題排查與優化

Spring Boot服務運行一段時間后新請求無法處理的問題。服務沒有掛掉,也沒有異常日志。思考可能是一些資源耗盡或阻塞的問題。 思考分析 首先,資源耗盡可能涉及線程池、數據庫連接、內存、文件句柄或網絡連接等。常見的如線程池配置不當,導致…

Map和Set相關練習

目錄 1、只出現一次的數字 2、寶石與石頭 3、壞鍵盤打字 4、復制帶隨機指針的鏈表 5、大量數據去重 6、大量數據重復次數 7、前K個高頻單詞 1、只出現一次的數字 oj:136. 只出現一次的數字 - 力扣(LeetCode) 思路: 1. 使用…

day45——非遞減數列(LeetCode-665)

題目描述 給你一個長度為 n 的整數數組 nums &#xff0c;請你判斷在 最多 改變 1 個元素的情況下&#xff0c;該數組能否變成一個非遞減數列。 我們是這樣定義一個非遞減數列的&#xff1a; 對于數組中任意的 i (0 < i < n-2)&#xff0c;總滿足 nums[i] < nums[i …

OOM 未觸發 JVM 崩潰的可能原因

1. OOM 未觸發 JVM 崩潰的可能原因? (1) 未配置 JVM 參數強制崩潰? 關鍵參數缺失?&#xff1a; 若未添加 -XX:CrashOnOutOfMemoryError&#xff0c;JVM 在 OOM 時可能僅拋出異常并正常退出&#xff0c;而非崩潰&#xff0c;因此不會生成 hs_err_pid.log。 # 正確配置示例&…

Axios 介紹及使用指南

本文將基于 Axios 原理&#xff0c;安裝及封裝方面展開描述&#xff0c;話不多說&#xff0c;現在發車&#xff01; 一、原理 Axios 中文文檔&#xff1a;起步 | Axios中文文檔 | Axios中文網 賽前科普&#xff1a; 下文將涉及到三個關鍵詞&#xff1a;Axios&#xff0c;Ajax…

C#插件與可擴展性

外接程序為主機應用程序提供了擴展功能或服務。.net framework提供了一個編程模型,開發人員可以使用該模型來開發加載項并在其主機應用程序中激活它們。該模型通過在主機和外接程序之間構建通信管道來實現此目的。該模型是使用: System.AddIn, System.AddIn.Hosting, System.…

Melos 發布pub.dev

確保登錄 置登錄狀態 按照提示操作&#xff0c;先運行&#xff1a; bash dart pub logout 這會清除當前的&#xff08;損壞的&#xff09;登錄信息。 然后再重新登錄&#xff1a; bash dart pub login 這一次它應該會在瀏覽器中打開 Google 登錄頁面&#xff0c;完成登…

4.黑馬學習筆記-SpringMVC(P43-P47)

1.SpringMVC簡介 SpringMVC技術&#xff08;更少的代碼&#xff0c;簡便&#xff09;與servlet技術功能相同&#xff0c;屬于web層開發技術。 SpringMVC是一種基于java實現MVC模型的輕量級web框架。 輕量級指的是&#xff08;內存占用比較低&#xff0c;運行效率高&#xff09;…

【特殊場景應對1】視覺設計:信息密度與美學的博弈——讓簡歷在HR視網膜上蹦迪的科學指南

寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算有用,大家基本都能拿到想要的offe…

CentOS 7 linux系統從無到有部署項目

環境部署操作手冊 一、Maven安裝與配置 1. 下載與解壓 下載地址&#xff1a;https://maven.apache.org/download.cgi?spm5238cd80.38b417da.0.0.d54c32cbnOpQh2&filedownload.cgi上傳并解壓解壓命令&#xff1a; tar -zxvf apache-maven-3.9.9-bin.tar.gz -C /usr/loc…

Odoo:免費開源的軋制品行業管理軟件

Odoo免費開源的軋制品行業管理軟件能夠幫助建材、電線電纜、金屬、造紙包裝以及紡織品行業提高韌性和盈利能力&#xff0c;構筑美好未來。 文 &#xff5c; 開源智造&#xff08;OSCG&#xff09;Odoo金牌服務 提高供應鏈韌性&#xff0c;賦能可持續發展 如今&#xff0c;金屬…

51單片機實驗二:數碼管靜態顯示

目錄 一、實驗環境與實驗器材 二、實驗內容及實驗步驟 1.單個數碼管顯示 2.六個數碼管依次從0~F變換顯示 3.proteus仿真 一、實驗環境與實驗器材 環境&#xff1a;Keli&#xff0c;STC-ISP燒寫軟件,Proteus. 器材&#xff1a;TX-1C單片機&#xff08;STC89C52RC…

學術AI工具推薦

一、基礎信息對比 維度知網研學AI&#xff08;研學智得AI&#xff09;秘塔AIWOS AI開發公司同方知網&#xff08;CNKI&#xff09;上海秘塔網絡科技Clarivate Analytics是否接入DeepSeek? 深度集成&#xff08;全功能接入DeepSeek-R1推理服務&#xff09;? 通過API接入DeepS…

冰川流域提取分析——ArcGIS pro

一、河網提取和流域提取視頻詳細GIS小熊 || 6分鐘學會水文分析—河網提取&#xff08;以宜賓市為例&#xff09;_嗶哩嗶哩_bilibili 首先你要生成研究區域DEM&#xff0c;然后依次是填洼→流向→流量→柵格計算器→河網分級→柵格河網矢量化&#xff08;得到河網.shp&#xff…

【物聯網-RS-485】

物聯網-RS-485 ■ RS-485 連接方式■ RS-485 半雙工通訊■ RS-485 的特點 ■ RS-485 連接方式 ■ RS-485 半雙工通訊 一線定義為A 一線定義為B RS-485傳輸方式&#xff1a;半雙工通信、&#xff08;邏輯1&#xff1a;2V ~ 6V 邏輯0&#xff1a;-6V ~ -2V&#xff09;這里的電平…

解析檢驗平板:設備還是非設備?深入了解其功能與應用(北重鑄鐵平臺廠家)

檢驗平板通常被歸類為設備&#xff0c;因為它們具有特定的功能&#xff0c;并且被用于測試和評估其他設備或產品的性能和質量。檢驗平板通常具有平坦的表面&#xff0c;用于放置要進行測試或檢驗的物品。它們可以用于測量尺寸、形狀、平整度、表面光潔度等參數。 檢驗平板的應…

6.數據手冊解讀—運算放大器(二)

目錄 6、細節描述 6.1預覽 6.2功能框圖 6.3 特征描述 6.3.1輸入保護 6.3.1 EMI抑制 6.3.3 溫度保護 6.3.4 容性負載和穩定性 6.3.5 共模電壓范圍 6.3.6反相保護 6.3.7 電氣過載 6.3.8 過載恢復 6.3.9 典型規格與分布 6.3.9 散熱焊盤的封裝 6.3.11 Shutdown 6.4…