news 2026/2/15 20:16:10

k8s巡检脚本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
k8s巡检脚本

k8s_inspect.py

#!/usr/bin/env python3# -*- coding: utf-8 -*-""" Kubernetes 集群健康巡检脚本 检查内容: - 节点是否处于 Ready 状态 - Pod 是否正常运行(跳过已完成的 Job) - Deployment 是否达到期望副本数 - Service 是否有可用的后端 Endpoints 使用方法: python3 k8s_inspect.py 依赖安装(建议在虚拟环境中): pipinstallkubernetes"""importsys from kubernetesimportclient, config from kubernetes.client.restimportApiException def load_kube_config():"""加载 Kubernetes 配置:优先尝试 in-cluster 模式,否则使用 kubeconfig 文件""" try: config.load_incluster_config()print("[成功] 使用集群内配置(in-cluster config)")except config.ConfigException: try: config.load_kube_config()print("[成功] 使用本地 kubeconfig 文件")except config.ConfigException as e: print(f"[失败] 无法加载 Kubernetes 配置: {e}")sys.exit(1)def check_nodes():"""检查所有节点是否就绪(Ready)""" print("\n[信息] 正在检查节点状态...")v1=client.CoreV1Api()try: nodes=v1.list_node().itemsifnot nodes: print("[警告] 未发现任何节点")returnFalse all_ready=Truefornodeinnodes: name=node.metadata.name ready=any(cond.type=="Ready"and cond.status=="True"forcondinnode.status.conditions or[])ifnot ready: print(f"[错误] 节点 {name} 未就绪(NotReady)")all_ready=False else: print(f"[正常] 节点 {name} 已就绪")returnall_ready except ApiException as e: print(f"[错误] 获取节点列表失败: {e}")returnFalse def check_pods():"""检查所有命名空间中的 Pod 状态,跳过已完成的 Job Pod""" print("\n[信息] 正在检查 Pod 状态...")v1=client.CoreV1Api()try: pods=v1.list_pod_for_all_namespaces().itemsifnot pods: print("[信息] 未发现任何 Pod")returnTrue all_ok=Trueforpodinpods: namespace=pod.metadata.namespace name=pod.metadata.name phase=pod.status.phase is_job_pod=(pod.metadata.owner_references and any(owner.kind=="Job"forownerinpod.metadata.owner_references))ifis_job_pod and phasein("Succeeded","Completed"):continueifphase=="Running":continueelifphase=="Pending":continueelifany(c.state.waiting and c.state.waiting.reason=="CrashLoopBackOff"forcin(pod.status.container_statuses or[])): print(f"[错误] Pod {namespace}/{name} 处于 CrashLoopBackOff 状态")all_ok=False else: print(f"[警告] Pod {namespace}/{name} 状态异常: {phase}")all_ok=Falsereturnall_ok except ApiException as e: print(f"[错误] 获取 Pod 列表失败: {e}")returnFalse def check_deployments():"""检查所有 Deployment 是否达到期望的可用副本数""" print("\n[信息] 正在检查 Deployment 状态...")apps_v1=client.AppsV1Api()try: deployments=apps_v1.list_deployment_for_all_namespaces().itemsifnot deployments: print("[信息] 未发现任何 Deployment")returnTrue all_ok=Truefordepindeployments: namespace=dep.metadata.namespace name=dep.metadata.name desired=dep.spec.replicas or0available=dep.status.available_replicas or0ifavailable<desired: print(f"[错误] Deployment {namespace}/{name} 可用副本不足: {available}/{desired}")all_ok=Falsereturnall_ok except ApiException as e: print(f"[错误] 获取 Deployment 列表失败: {e}")returnFalse def check_services():"""检查每个带 selector 的 Service 是否有可用的 Endpoints""" print("\n[信息] 正在检查 Service 的 Endpoints...")v1=client.CoreV1Api()try: services=v1.list_service_for_all_namespaces().items services=[sforsinservicesifs.spec.selector]ifnot services: print("[信息] 未发现带 selector 的 Service")returnTrue all_ok=Trueforsvcinservices: namespace=svc.metadata.namespace name=svc.metadata.name try: endpoints=v1.read_namespaced_endpoints(name, namespace)ifnot endpoints.subsets: print(f"[错误] Service {namespace}/{name} 没有可用的后端 Endpoints")all_ok=False except ApiException as e: print(f"[警告] 读取 Service {namespace}/{name} 的 Endpoints 失败: {e}")all_ok=Falsereturnall_ok except ApiException as e: print(f"[错误] 获取 Service 列表失败: {e}")returnFalse def main():"""主函数:执行检查并汇总结果""" print("开始 Kubernetes 集群健康巡检...")load_kube_config()node_ok=check_nodes()pod_ok=check_pods()deploy_ok=check_deployments()svc_ok=check_services()print("\n========== 巡检结果汇总 ==========")print(f"节点状态: {'正常' if node_ok else '异常'}")print(f"Pod 状态: {'正常' if pod_ok else '异常'}")print(f"Deployment: {'正常' if deploy_ok else '异常'}")print(f"Service 后端: {'正常' if svc_ok else '异常'}")ifall([node_ok, pod_ok, deploy_ok, svc_ok]): print("\n集群整体健康,无异常!")sys.exit(0)else: print("\n集群存在异常,请根据上述信息排查!")sys.exit(1)if__name__=="__main__":main()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/15 17:22:38

6小时速成记:韩宁波的高效训练法则揭秘

6小时速成记&#xff1a;韩宁波的高效训练法则揭秘在宁夏吴忠的羽毛球场上&#xff0c;国家二级运动员、金牌教练韩宁波以一场持续六小时的"极限训练实验"&#xff0c;颠覆了传统体育教学的认知框架。这场融合毫米级技术解构、场景化体能训练与心理韧性锻造的速成课程…

作者头像 李华
网站建设 2026/2/10 18:05:54

企业智能体实践指南:国产Agent工具哪家强

随着 AI 技术从实验室走向企业生产端&#xff0c;智能体&#xff08;AI Agent&#xff09;软件的市场需求快速增长。不同于传统自动化工具&#xff0c;智能体不仅能响应指令&#xff0c;还可以自主理解复杂需求、拆解任务流程、调用系统工具并执行端到端操作。对于希望提升企业…

作者头像 李华
网站建设 2026/2/14 5:50:50

企业级AI Agent选型与实践:厂商能力对比与落地路径分析

随着 AI Agent 概念逐步从技术圈走向企业决策层&#xff0c;智能体平台正在成为企业新一轮数字化建设的重要基础设施。但现实情况是&#xff0c;不少企业在选型阶段就陷入困惑&#xff1a;平台数量多、厂商定位杂、能力边界不清&#xff0c;最终往往只能试点成功&#xff0c;但…

作者头像 李华
网站建设 2026/2/9 16:51:56

TikTok Shop爆款选品指南:TikTok 2026怎么选品?一文全解析!

俗话说“七分选品&#xff0c;三分运营”&#xff0c;优质的产品自带“流量Buff”&#xff0c;不仅能帮助TikTok Shop卖家突破流量瓶颈&#xff0c;更能有效缩短冷启动周期&#xff0c;推动店铺实现从0-1的高效增长。然而&#xff0c;从理论共识到实际落地往往存在巨大鸿沟。在…

作者头像 李华
网站建设 2026/2/13 8:14:15

Springboot考研信息交流网站5nt03(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;用户,高校介绍,专业信息,课程类型,课程信息,课程购买,课程发送开题报告内容一、开题背景与意义&#xff08;一&#xff09;开题背景近年来&#xff0c;考研热潮持续升温&#xff0c;报考人数逐年递增。考研过程中&#xff0c;学生需要获取…

作者头像 李华
网站建设 2026/2/7 15:11:04

OLT中SVLAN和CVLAN区别

在PON网络&#xff08;EPON/GPON&#xff09;的OLT设备中&#xff0c;SVLAN&#xff08;Service VLAN&#xff0c;服务VLAN&#xff09; 和CVLAN&#xff08;Customer VLAN&#xff0c;用户VLAN&#xff09; 是QinQ&#xff08;802.1ad&#xff0c;VLAN堆叠&#xff09;技术的核…

作者头像 李华