核心脚本功能

  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. 大模型文本转换 文本转换的核心定义与范畴 文本转换 是指通过技术…