news 2026/5/1 4:04:54

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/5/1 2:35:54

企业级AI智能体实践:如何降低大模型幻觉风险

很多企业第一次接触智能体&#xff0c;都是从铺天盖地的新闻、网络资讯和一场成功的演示开始的。一众公司高层对大模型、智能体兴趣很浓&#xff0c;开会时经常会说一句话&#xff1a;“这个问题&#xff0c;能不能直接交给大模型来做&#xff1f;”刚开始大家都很兴奋。智能体…

作者头像 李华
网站建设 2026/4/27 21:18:40

AI 智能体技术全解析:原理、能力与企业实践

在生成式人工智能&#xff08;AIGC&#xff09;快速发展的背景下&#xff0c;“智能体”&#xff08;AI Agent&#xff09;逐渐成为企业和研发领域的核心关注点。它不仅能够理解语言&#xff0c;还能自主规划、决策和执行任务&#xff0c;在数字化和自动化业务场景中发挥重要作…

作者头像 李华
网站建设 2026/3/24 21:44:19

Springboot企业办公信息化管理系统6z1v1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;员工,人事部,采购员,主管,部门,规章制度,问卷调查,答卷登记,票务信息,物资资产,物资申请,会议室,会议室预约,产品信息,产品申请,供应商,产品材料,打卡签到,请假申请开题报告内容一、选题背景与意义&#xff08;一&#xff09;选题背景在数…

作者头像 李华
网站建设 2026/4/22 8:43:46

【TOMCAT】IDEAL社区版中使用maven搭建的项目配置本地tomcat方法

ideal社区版中很多功能是没有的&#xff0c;属于正版的精简版本。在用maven工具做web项目时&#xff0c;我们需要tomcat服务器跑页面的时候&#xff0c;就难办了&#xff01; 配置流程打开设置找到plugins搜索smart tomcat回到ideal开发页面 项目的打包方式必须是war包进入edit…

作者头像 李华
网站建设 2026/4/29 19:08:19

Python全栈项目--智能客服机器人的设计与实现

项目概述 随着人工智能技术的快速发展&#xff0c;智能客服机器人已经成为企业提升服务效率、降低运营成本的重要工具。本文将详细介绍如何使用Python技术栈从零开始构建一个功能完善的智能客服机器人系统&#xff0c;涵盖前端界面、后端服务、自然语言处理以及数据存储等各个…

作者头像 李华