Kubernetes生產環境健康檢查自動化指南


核心腳本功能

  1. 一鍵檢查集群核心組件狀態
  2. 自動化掃描節點/Pod異常
  3. 存儲與網絡關鍵指標檢測
  4. 風險分級輸出(紅/黃/綠標識)

一、自動化巡檢腳本 (k8s-health-check.sh)
#!/bin/bash
# Desc: Kubernetes全維度健康檢查腳本
# 執行要求:kubectl配置+Popeye安裝# 核心組件檢查
check_core_components() {echo "===== 集群核心組件檢查 [高風險] ====="kubectl get componentstatuses | awk '$2 != "Healthy" {printf "\033[31mCRITICAL\033[0m: %s 狀態異常\n", $1; exit 1}{printf "\033[32mPASS\033[0m: %s 狀態正常\n", $1}'# ETCD集群檢測 (需提前配置etcdctl證書)etcdctl endpoint health 2>&1 | grep -v "health: true" && \echo -e "\033[31mCRITICAL\033[0m: ETCD節點異常" || \echo -e "\033[32mPASS\033[0m: ETCD集群健康"
}# 節點健康檢查
check_nodes() {echo "===== 節點健康巡檢 ====="# 節點就緒狀態kubectl get nodes --no-headers | awk '$2 != "Ready" {count++}END {if(count>=2) {printf "\033[31mCRITICAL\033[0m: %d個節點NotReady\n", count; exit 1}else if(count>0) {printf "\033[33mWARN\033[0m: %d個節點NotReady\n", count}else {print "\033[32mPASS\033[0m: 所有節點Ready"}}'# 資源使用率(依賴metrics-server)kubectl top nodes --no-headers | awk '{cpu=$3; mem=$5;sub(/%/, "", cpu); sub(/%/, "", mem);if (cpu>=95 || mem>=95) {printf "\033[31mCRITICAL\033[0m: 節點%s CPU=%d%% MEM=%d%%\n", $1, cpu, mem}else if (cpu>=85 || mem>=85) {printf "\033[33mWARN\033[0m: 節點%s CPU=%d%% MEM=%d%%\n", $1, cpu, mem}}'
}# 工作負載檢查
check_workloads() {echo "===== Pod狀態檢查 ====="# 異常Pod檢測kubectl get pods --all-namespaces --field-selector=status.phase!=Running,status.phase!=Completed -o wide | grep -v "No resources" && \echo -e "\033[31mCRITICAL\033[0m: 存在異常Pod" || \echo -e "\033[32mPASS\033[0m: 無Pending/CrashLoopBackOff狀態Pod"# 容器重啟次數kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.containerStatuses[].restartCount}{"\n"}{end}' | \awk '$2>5 {printf "\033[33mWARN\033[0m: Pod %s 重啟%d次\n", $1, $2}'
}# 存儲系統檢查
check_storage() {echo "===== 存儲健康檢查 ====="# PVC綁定狀態kubectl get pvc --all-namespaces | awk '$2 != "Bound" {print $0; exit 1}' && \echo -e "\033[31mCRITICAL\033[0m: 存在未綁定PVC" || \echo -e "\033[32mPASS\033[0m: PVC均正常綁定"# PostgreSQL連接數示例 (需替換實際參數)PG_POD=$(kubectl get pod -n db -l app=postgres -o name | head -1)kubectl exec -n db $PG_POD -- psql -U postgres -c "SELECT count(*) FROM pg_stat_activity" | \awk 'NR==3 && $1>1024 {printf "\033[33mWARN\033[0m: 數據庫連接數過高(%d)\n", $1}'
}# 網絡檢查
check_network() {echo "===== 網絡服務檢查 ====="# DNS解析延遲測試kubectl run dns-test --image=busybox:1.28 --rm -it --restart=Never -- \sh -c "time nslookup kubernetes.default" 2>&1 | grep real | \awk -F'm' '{print $2*60+$3}' | awk '$1>5 {printf "\033[33mWARN\033[0m: DNS解析延遲%.2fs\n", $1}'
}# 證書過期檢查
check_certs() {echo "===== 證書有效期檢查 [高風險] ====="kubectl config view --raw -o jsonpath='{..certificate-data}' | base64 -d | \openssl x509 -enddate -noout | awk -F'=' '$1=="notAfter" {cmd="date -d \""$2"\" +%s";cmd | getline exp;close(cmd);now=systime();diff=(exp-now)/86400;if(diff<90) printf "\033[31mCRITICAL\033[0m: 證書將在%.0f天后過期\n", diff}'
}### 執行所有檢查 ###
check_core_components
check_nodes
check_workloads
check_storage
check_network
check_certs# 使用Popeye做深度掃描
echo "===== 運行Popeye集群掃描 ====="
popeye --out=html > /tmp/popeye-report.html && \echo "報告已保存: /tmp/popeye-report.html"

二、關鍵巡檢項說明與閾值
檢查維度自動化實現方式風險閾值
API Server健康kubectl get componentstatuses非Healthy狀態即高風險
節點資源使用率kubectl top nodesCPU/Mem ≥85% 告警,≥95% 嚴重
Pod重啟次數Pod注解restartCount>5次為異常
PVC綁定狀態kubectl get pvc非Bound狀態即高風險
DNS解析延遲臨時Pod執行nslookup>5s 警告
證書有效期解析Kubeconfig證書有效期<90天高風險

三、自動化部署建議
  1. 定時任務配置(每日巡檢):

    # 將腳本加入CronJob
    kubectl create cronjob k8s-daily-check --image=bitnami/kubectl:latest \--scheme="0 8 * * *" \-- /bin/sh -c "curl -sL https://raw.githubusercontent.com/ops/k8s-health-check.sh | bash && aws s3 cp /tmp/popeye-report.html s3://my-bucket/reports/"
    
  2. Prometheus關鍵告警規則(示例):

    # 內存泄漏檢測
    - alert: NodeMemoryPressureexpr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 > 85for: 10mlabels:severity: warningannotations:summary: "節點內存壓力 ({{ $labels.instance }})"
    

四、緊急事件處理流程

當腳本輸出 CRITICAL(紅色) 時:

  1. Master組件異常:立即檢查kube-apiserver/etcd日志
  2. 節點NotReady
    kubectl cordon <NODE_NAME>    # 停止調度
    kubectl drain <NODE_NAME>     # 驅逐Pod
    
  3. 證書即將過期
    kubeadm certs renew all       # 使用kubeadm更新證書
    

最佳實踐補充

  • 探針配置:Java應用設置initialDelaySeconds: 120避免頻繁重啟
  • 存儲擴容:當PVC使用率>80%時自動觸發擴容(需配置CSI StorageClass)
  • 日志跟蹤:集成ELK過濾ERROR日志并統計占比(>5%觸發告警)

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

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

相關文章

消息隊列系統測試報告

目錄 一、項目背景 二、RabbitMQ介紹 1.什么是RabbitMQ&#xff1f; 2.RabbitMQ的工作流程是怎么樣的&#xff1f; 3.項目設計 三、測試概述 MQ 測試目標&#xff1a; 測試用例統計&#xff1a; 核心模塊測試詳情及代碼示例&#xff1a; 1. 數據庫管理&#xff08;Da…

基于 Axios 的 HTTP 請求封裝文件解析

import axios from "axios"; import { ElMessage } from "element-plus"; import store from "/store"; import router from "/router";// 創建axios實例 const service axios.create({baseURL: "http://localhost:8080/api&quo…

PowerDesigner生成帶注釋的sql方法

前提是name里面是有文字的&#xff1a; 方法開始&#xff1a; 第一步&#xff1a; Database → Edit Current DBMS → Script → Objects → Column → Add 把輸出模板改成&#xff1a; %20:COLUMN% %30:DATATYPE%[.Z:[%Compressed%? compressed][ %NULLNOTNULL%][%IDENTITY…

獵板PCB:專業鍵盤PCB板解決方案供應商

獵板PCB深耕印刷電路板&#xff08;PCB&#xff09;制造領域&#xff0c;憑借前沿技術與深厚積淀&#xff0c;在鍵盤PCB板細分市場積極布局&#xff0c;致力于為不同客戶提供多樣化、高性能的鍵盤PCB板產品&#xff0c;滿足多元需求。一、定義&#xff1a;鍵盤PCB板鍵盤PCB板&a…

基于 Spring Boot 的登錄功能實現詳解

在 Web 應用開發中&#xff0c;登錄功能是保障系統安全的第一道防線。本文將結合實際代碼&#xff0c;詳細解析一個基于 Spring Boot 框架的登錄功能實現&#xff0c;包括驗證碼生成、用戶驗證、Token 機制等關鍵環節。技術棧概覽本登錄功能實現涉及以下核心技術和組件&#xf…

vue+django 大模型心理學智能診斷評測系統干預治療輔助系統、智慧心理醫療、帶知識圖譜

vuedjango 大模型心理學智能診斷評測系統干預治療輔助系統、智慧心理醫療、帶知識圖譜文章結尾部分有CSDN官方提供的學長 聯系方式名片 文章結尾部分有CSDN官方提供的學長 聯系方式名片 關注B站&#xff0c;有好處&#xff01;編號:D003 pro基于大模型心理學問卷、智能診斷&…

【linux】企業級WEB應用服務器tomcat

一 WEB技術1.1 HTTP協議和B/S 結構操作系統有進程子系統&#xff0c;使用多進程就可以充分利用硬件資源。進程中可以多個線程&#xff0c;每一個線程可以被CPU調度執行&#xff0c;這樣就可以讓程序并行的執行。這樣一臺主機就可以作為一個服務器為多個客戶端提供計算服務。客戶…

【Unity優化】Unity多場景加載優化與資源釋放完整指南:解決Additive加載卡頓、預熱、卸載與內存釋放問題

【Unity優化】Unity多場景加載優化與資源釋放完整指南&#xff1a;解決Additive加載卡頓、預熱、卸載與內存釋放問題 本文將完整梳理 Unity 中通過 SceneManager.LoadSceneAsync 使用 Additive 模式加載子場景時出現的卡頓問題&#xff0c;分析其本質&#xff0c;提出不同階段的…

B 樹與 B + 樹解析與實現

一、磁盤存儲優化的核心邏輯 在大規模數據處理場景中&#xff0c;磁盤 I/O 效率是性能瓶頸的核心。磁盤訪問具有以下特性&#xff1a; 隨機訪問成本高&#xff1a;磁頭尋道時間&#xff08;Seek Time&#xff09;可達毫秒級&#xff0c;相比內存訪問&#xff08;納秒級&#…

MySQL 查詢相同記錄并保留時間最晚的一條

要在 MySQL 中查詢相同記錄并僅保留時間最晚的那一條&#xff0c;你可以使用以下幾種方法&#xff1a;方法一&#xff1a;使用子查詢和 GROUP BY假設你的表名為 your_table&#xff0c;時間字段為 create_time&#xff0c;其他用于判斷記錄相同的字段為 field1, field2 等&…

在 .NET Core 5.0 中啟用 Gzip 壓縮 Response

在 .NET Core 5.0 中啟用 Gzip 壓縮 Response 在 .NET Core 5.0 (ASP.NET Core 5.0) 中啟用 Gzip 壓縮主要通過響應壓縮中間件實現。以下是詳細配置步驟&#xff1a; 1. 安裝必要的 NuGet 包 首先確保已安裝響應壓縮包&#xff1a; dotnet add package Microsoft.AspNetCore.Re…

[Oracle] TRUNC()函數

TRUNC() 是 Oracle 中一個多功能函數&#xff0c;主要用于對數值、日期進行截斷操作1.TRUNC()函數用于數值處理語法格式TRUNC(number, decimal_places)參數說明number&#xff1a;要截斷的數值 decimal_places&#xff1a;保留的小數位數(可選)&#xff0c;默認為0(截斷所有小數…

GPT-oss:OpenAI再次開源新模型,技術報告解讀

1.簡介OpenAI 發布了兩款開源權重推理模型 gpt-oss-120b 與 gpt-oss-20b&#xff0c;均采用 Apache 2.0 許可&#xff0c;主打在代理工作流中執行復雜推理、調用工具&#xff08;如搜索、Python 代碼執行&#xff09;并嚴格遵循指令。120b 為 36 層 MoE 結構&#xff0c;活躍參…

python tcp 框架

目錄 python tcp 框架 asyncio websockets python tcp 框架 asyncio import asyncio import json import timeclass TCPClient:def __init__(self, host, port, heartbeat_interval10):self.host hostself.port portself.heartbeat_interval heartbeat_intervalself.read…

HTML 與 CSS:從 “認識標簽” 到 “美化頁面” 的入門指南

個人主頁&#xff1a;?喜歡做夢 目錄 &#x1f3a0;HTML &#x1f3a1;一、什么是HTML&#xff1f; ??1.定義 ??2.核心特點 ??3.HTML的基本結構 ??4.標簽的層次結構關系 &#x1f3a1;二、HTML的常用標簽 &#x1f305;1.文本列表標簽 標題標簽&#xff1a;h…

【MATLAB 2025a】安裝離線幫助文檔

文章目錄一、在 MATLAB 設置中安裝二、從math works 網站下載ISO&#xff1a;適用于給無法聯網的電腦安裝或自定義路徑三、startup文件說明四、重要說明&#x1f9e9;&#x1f9e9;【Matlab】最新版2025a發布&#xff0c;深色模式、Copilot編程助手上線&#xff01; 版本&#…

Linux系統編程Day8 -- Git 教程(初階)

往期內容回顧 基于Linux系統知識的第一個程序 自動化構建工具-make/Makefile gcc/g編譯及鏈接 Vim工具的使用 Linux常用工具&#xff08;yum與vim&#xff09; ?????? Linux系統編程Day4-- Shell與權限 回顧進度條程序的編寫&#xff1a; //.h文件內容 #include<stdio…

React18 Transition特性詳解

Transition 核心概念&#xff1a;Transition是一種標記非緊急任務更新的機制&#xff0c;它允許React在用戶交互&#xff08;如輸入&#xff09;期間保持界面的響應&#xff0c;同時準備后臺更新 主要特點&#xff1a; 區分優先級&#xff1a;可以將更新分為緊急非緊急任務可中…

OpenHarmony概述與使用

1. OpenHarmony Hi3861 學習目標與任務 硬件基礎知識&#xff1a;涵蓋嵌入式硬件體系架構&#xff08;如 MCU 基礎、硬件接口原理 &#xff09;、硬件設計流程&#xff08;原理圖繪制、PCB Layout 規范 &#xff09;&#xff0c;了解常見硬件外設&#xff08;傳感器、通信模…

大模型提示詞工程實踐:大語言模型文本轉換實踐

大模型文本轉換 學習目標 在本課程中&#xff0c;我們將探究如何使用大語言模型來完成文本轉換任務&#xff0c;例如語言翻譯、拼寫和語法檢查、語氣調整以及格式轉換。 相關知識點 大模型文本轉換 學習內容 1. 大模型文本轉換 文本轉換的核心定義與范疇 文本轉換 是指通過技術…