K8s 常見故障案例分析

#作者:程宏斌

文章目錄

  • 一、節點故障
    • (一)節點 NotReady 狀態
    • 排查步驟
    • 解決方案
  • 二、Pod 故障
    • (一)Pod 一直處于 Pending 狀態
    • 排查步驟
    • 解決方案
    • (二)Pod 頻繁重啟
    • 故障現象
    • 排查步驟
    • 解決方案
  • 三、控制器故障
    • (一)Deployment 無法創建 Pod
    • 故障現象
    • 排查步驟
    • 解決方案
  • 四、網絡故障
    • (一)Pod 之間無法通信
    • 排查步驟
    • 解決方案
  • 五、存儲故障
    • 排查步驟
    • 解決方案
  • 六、總結

在這里插入圖片描述
在 Kubernetes(K8s)集群的日常運維中,各種故障時有發生。本文將針對 K8s 中常見的故障案例進行詳細分析,包括故障現象、排查步驟和解決方案,為運維人員提供參考。

一、節點故障

(一)節點 NotReady 狀態

故障現象
通過kubectl get nodes命令查看節點狀態時,發現某個節點處于 NotReady 狀態,導致該節點上的 Pod 無法正常運行。

排查步驟

  1. 登錄到該節點,檢查 Kubelet 服務狀態,執行systemctl status kubelet命令,查看是否存在服務未啟動或異常退出的情況。
  2. 檢查節點的網絡連接,使用ping命令測試與集群中其他節點及 API Server 的連通性。
  3. 查看節點的資源使用情況,執行top或free -m等命令,檢查 CPU、內存、磁盤等資源是否耗盡。
  4. 檢查 Kubelet 的日志,執行journalctl -u kubelet -f命令,查找可能的錯誤信息。

解決方案

  1. 如果 Kubelet 服務未啟動,執行systemctl start kubelet命令啟動服務;如果服務異常,根據日志信息排查問題,可能需要重啟服務或修復配置文件。
  2. 若網絡存在問題,檢查網絡配置,修復網絡連接,確保節點能夠正常與其他組件通信。
  3. 當資源耗盡時,清理節點上不必要的進程或服務,釋放資源;如果是長期資源不足,考慮擴容節點。

二、Pod 故障

(一)Pod 一直處于 Pending 狀態

故障現象
創建 Pod 后,通過kubectl get pods命令查看,發現 Pod 長時間處于 Pending 狀態,無法進入 Running 狀態。

排查步驟

  1. 執行kubectl describe pod <pod名稱>命令,查看事件信息,了解 Pod 調度失敗的原因,可能是節點資源不足、節點親和性不滿足等。
  2. 檢查集群中節點的資源情況,執行kubectl describe nodes命令,查看節點的可分配資源是否滿足 Pod 的需求。
  3. 查看 Pod 的親和性和反親和性配置,確認是否存在配置錯誤導致無法調度。

解決方案

  1. 若節點資源不足,可擴容節點或調整 Pod 的資源請求和限制;若存在節點親和性問題,修正親和性配置。

(二)Pod 頻繁重啟

故障現象

Pod 在運行過程中頻繁重啟,通過kubectl get pods命令可看到 RESTARTS 字段數值不斷增加。

排查步驟

  1. 執行kubectl logs <pod名稱> --previous命令,查看 Pod 重啟前的日志,尋找錯誤信息。
  2. 檢查 Pod 的健康檢查配置(livenessProbe 和 readinessProbe),確認是否因健康檢查失敗導致重啟。
  3. 查看容器的資源使用情況,是否因資源限制導致容器被 Kill。

解決方案

  1. 根據日志中的錯誤信息修復應用程序的問題;若健康檢查配置不合理,調整檢查參數;若資源限制過低,適當提高資源限制。

三、控制器故障

(一)Deployment 無法創建 Pod

故障現象

創建 Deployment 后,沒有 Pod 被創建,通過kubectl get deployments命令查看,發現 Deployment 的 replicas 數量未達到預期。

排查步驟

  1. 執行kubectl describe deployment <deployment名稱>命令,查看事件信息,了解無法創建 Pod 的原因,可能是鏡像拉取失敗、配置錯誤等。
  2. 檢查 Deployment 的配置文件,確認鏡像名稱、標簽選擇器等配置是否正確。
  3. 檢查集群的鏡像倉庫是否可達,以及鏡像是否存在。

解決方案

  1. 若鏡像拉取失敗,檢查鏡像倉庫地址和認證信息,確保能夠正常拉取鏡像;若配置錯誤,修正 Deployment 的配置文件。

四、網絡故障

(一)Pod 之間無法通信

故障現象
集群中的兩個 Pod 無法進行通信,如無法 ping 通或無法訪問對方的服務。

排查步驟

1.檢查 Pod 的網絡配置,確認 Pod 是否獲取到正確的 IP 地址,執行kubectl get pods -o wide命令查看。
2.檢查節點之間的網絡是否通暢,確保節點間的端口通信正常。
3.查看網絡插件的狀態,如 Calico、Flannel 等,確認網絡插件運行正常。
4.檢查網絡策略(NetworkPolicy)是否限制了 Pod 之間的通信。

解決方案

1.若 Pod 未獲取到正確的 IP 地址,重啟網絡插件或檢查網絡插件的配置;若節點網絡不通,修復節點網絡;若網絡策略限制了通信,調整網絡策略配置。

五、存儲故障

(一)PersistentVolume(PV)無法綁定 PersistentVolumeClaim(PVC)
故障現象
創建 PVC 后,長時間處于 Pending 狀態,無法與 PV 綁定。

排查步驟

  1. 執行kubectl describe pvc <pvc名稱>命令,查看事件信息,了解綁定失敗的原因,可能是沒有合適的 PV、PV 與 PVC 的存儲類不匹配等。
  2. 執行kubectl get pv命令,查看集群中可用的 PV,檢查 PV 的容量、訪問模式、存儲類等是否與 PVC 匹配。

解決方案

1.若沒有合適的 PV,創建符合要求的 PV;若存儲類不匹配,調整 PVC 或 PV 的存儲類配置。

六、總結

K8s 集群故障種類繁多,排查故障時需要結合日志、事件信息和相關命令進行綜合分析。在日常運維中,應加強對集群的監控,及時發現潛在問題,并做好備份和應急處理預案,以提高集群的穩定性和可靠性。同時,不斷積累故障排查經驗,提升解決問題的效率。

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

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

相關文章

半精度權重 及 Phi-3線性層的權重分布

半精度權重 我們可以使用張量的 to() 方法以及適當的類型 torch.float16,將權重轉換為 FP16: torch.manual_seed(11) weights = torch.randn(1000) * .07 weights.min(),

Linux怎么安裝Docker?環境怎么搭建?步驟是什么?如何配置?有哪些注意事項?出現問題怎么排除?

一、Docker簡介與環境準備 1.1 什么是Docker Docker是一個開源的容器化平臺&#xff0c;它使用Linux內核的cgroup&#xff0c;namespace以及OverlayFS類的UnionFS等技術&#xff0c;對進程進行封裝隔離&#xff0c;屬于操作系統層面的虛擬化技術。Docker能夠自動執行重復性任務…

apiSQL網關調優:釋放單節點的最大潛能

前言 在構建高性能、高可用的API服務時&#xff0c;apiSQL 提供了強大的集群部署模式&#xff0c;通過橫向擴展來分散負載、提高吞吐量。然而&#xff0c;在某些場景下&#xff0c;我們同樣需要關注并最大化單個節點的處理能力。當單個 apiSQL 網關節點需要處理高并發請求或承載…

【開源工具】網絡交換機批量配置生成工具開發全解:從原理到實戰(附完整Python源碼)

?? 【開源工具】網絡交換機批量配置生成工具開發全解:從原理到實戰(附完整Python源碼) ?? 個人主頁:創客白澤 - CSDN博客 ?? 系列專欄:??《Python開源項目實戰》 ?? 熱愛不止于代碼,熱情源自每一個靈感閃現的夜晚。愿以開源之火,點亮前行之路。 ?? 希望大家…

【插件式微服務架構系統分享】之 解耦至上:gateway 網關與APISIX 網關的不同分工

【插件式微服務架構系統分享】之解耦至上&#xff1a;gateway 網關與APISIX 網關的不同分工作者&#xff1a;朱元祿一、一個比方 APISIX 就像是一個專業的高速公路收費站&#xff0c;不屬于你公司自己造的路&#xff0c;而是專門為所有車輛&#xff08;流量&#xff09;設計的&…

【感知機】感知機(perceptron)學習算法例題及詳解

感知機( perceptron )是二類分類的線性分類模型&#xff0c;其輸入為實例的特征向量&#xff0c;輸出為實例的類別&#xff0c;取1 和-1二值。感知機對應輸入空間(特征空間)中將實例劃分為正負兩類的分離超平面&#xff0c;是一種判別模型。感知機是神經網絡與支持向量機的基礎…

Linux基礎命令速查:從入門到精通

Linux常用命令指南一、操作系統概述1 . 什么是操作系統&#xff1f;2. 為什么需要操作系統&#xff1f;二、Linux基礎命令1. 目錄與文件操作2. 文件操作命令3. 文件查看命令4. 文本處理命令三、重定向1. 重定向符號四、Linux系統概念1. 文件系統特點2. 路徑規則3. 通配符五、壓…

一周學會Matplotlib3 Python 數據可視化-坐標軸 (Axis)

鋒哥原創的Matplotlib3 Python數據可視化視頻教程&#xff1a; 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib&#xff0c;學習Matplotlib圖形參數基本設置&…

防火墻安全作用及 firewalld 交互、端口配置

1. 防火墻在 Linux 系統安全中有哪些重要的作用&#xff1f;網絡訪問控制&#xff1b;隔離網絡區域&#xff1b;抵御網絡攻擊&#xff1b;限制服務暴露&#xff1b;日志審計與溯源&#xff1b;隱藏內部網絡結構。2. 簡單說明一下firewalld。Firewalld服務是一種動態防火網管理器…

RabbitMQ削峰填谷詳解:讓系統在流量洪峰中“穩如泰山”

想象一下&#xff1a;雙十一零點&#xff0c;千萬用戶同時點擊下單按鈕&#xff0c;服務器該如何應對&#xff1f;這就是削峰填谷要解決的難題。而RabbitMQ正是這場戰役中的超級緩沖器&#xff01;一、什么是“峰”和“谷”&#xff1f; 峰&#xff1a;系統瞬時高并發&#xff…

數據庫表字段命名建議和最佳實踐

在設計數據庫時&#xff0c;字段命名是至關重要的&#xff0c;它直接影響到數據庫的可讀性、可維護性和團隊協作效率。以下是數據庫字段命名的一些建議和最佳實踐&#xff1a;1. 使用清晰且描述性的名稱目的&#xff1a;確保字段名能夠清晰地表達其含義&#xff0c;便于其他開發…

散點圖矩陣

create_scatterplotmatrix對角線是直方圖&#xff0c;但是框選無交互import plotly.figure_factory as fffig ff.create_scatterplotmatrix(df, diaghistogram, # 將對角線設置為直方圖)fig.update_layout(autosizeTrue, # 讓 Plotly 自動適應容器widthNone, # 設置寬度hei…

Linux驅動25 --- RkMedia音頻API使用增加 USB 音視頻設備

目錄 一、RV1126 增加 USB 音視頻設備 二、RkMedia 音頻 API 2.1 PCM 音頻輸入 系統初始化 AI 通道配置 AI 通道使能 開啟數據流 獲取數據 保存數據 2.2 編碼音頻編碼輸入 2.3 PCM 音頻輸出 一、RV1126 增加 USB 音視頻設備 配置過程 第一步&#xff1a;來到 SDK 內核路…

CETOL 6σ 幫助提升活檢器械精度并降低制造成本

某全球醫療器械企業采用 Sigmetrix 的 CETOL 6σ 公差分析軟件&#xff0c;針對一次性活檢采集器械&#xff08;Biopsy Harvesting Instrument&#xff09;完成結構優化&#xff0c;成功解決頜骨動力學缺陷、4mm孔徑精度控制及線纜傳動敏感度等核心挑戰&#xff0c;大大提高了活…

基于協同過濾算法的圖書推薦系統設計與實現/基于python的圖書推薦系統設計與實現/基于python的圖書借閱系統設計與實現

基于協同過濾算法的圖書推薦系統設計與實現采用django、vue技術用戶&#xff1a;注冊、登錄、圖書信息、公告信息、個人中心、借閱記錄、歸還記錄、我的收藏。管理員&#xff1a;登錄、用戶、圖書分類、圖書信息、借閱記錄、歸還記錄、系統管理、用戶信息。

線程組和線程池的基本用法

1.線程組1.1創建線程組的方法public class xianchengzu {public static void main(String[] args) {ThreadGroup group new ThreadGroup("group");// 創建線程組時指定父線程組ThreadGroup parent new ThreadGroup("parent");ThreadGroup child new Thr…

百度華為硬件筆試機試題-卷4

百度華為硬件筆試機試題-卷4 收集整理了以下30道選擇題和判斷題,涵蓋電源管理、功率放大、半導體器件、數字邏輯、信號處理和電磁理論等領域。題目涉及復雜計算和分析,給出了參考答案和詳細的解析,非常適合硬件工程師筆試機試準備。 選擇題 1. 電源紋波主要測量什么值? …

38-TS之類型保護

關注大師不迷路,大師帶你上高度~ 文章目錄 前言 一、類型保護是什么? 二、使用步驟 1. 使用 typeof 操作符 2. 使用 instanceof 操作符 3. 自定義類型保護函數 4. 使用 in 操作符 總結 前言 關注大師不迷路,大師帶你上高度~ 在前端開發中,JavaScript 的動態類型特性提供了…

win下安裝labelimg

1、anconda安裝python、qt的版本 conda create -n labelme python3.10.18 PyQt5 5.15.11 <pip> PyQt5-Qt5 5.15.2 <pip> PyQt5_sip 12.17.0 <p…

【Qt開發】常用控件(二) -> enabled

目錄 1 -> 什么是 enabled 屬性 2 -> API 3 -> 代碼示例 3.1 -> 創建禁用狀態按鈕 3.2 -> 通過按鈕切換按鈕的禁用狀態 1 -> 什么是 enabled 屬性 在 Qt 中&#xff0c;enabled 是 QWidget 類的一個基礎屬性&#xff0c;它控制控件是否對用戶輸入做出響…