k8s巡检脚本

该bash脚本用于检查Kubernetes环境的健康状况,包括kubectl是否已安装,集群和节点的状态(正常/异常),组件状态,命名空间,Pod,ReplicaSet,Deployment,Service,Ingress的状态,存储卷的状态以及资源使用情况(CPU和内存)。
摘要由CSDN通过智能技术生成
#!/bin/bash



#检查kubectl是否已经安装

if ! command -v kubectl &> /dev/null

then

    echo -n "kubectl 未安装,请先安装kubectl"

    exit

fi



echo -e "====开始集群状态信息收集====/"

#检查集群状态:

echo -n "检查集群正常状态:"

kubectl cluster-info |grep -w running |wc -l



echo -n "检查集群异常状态:"

kubectl cluster-info |grep -w Pending |wc -l



#检查节点状态:

echo -n "检查节点正常状态:"

kubectl get nodes |grep -w Ready |wc -l



echo -n "检查节点异常状态:"

kubectl get nodes |grep -w NotReady |wc -l





echo -e "====开始组件状态信息收集====/"

#检查Kubernetes组件状态:

echo -n "检查Kubernetes组件正常状态:"

kubectl get componentstatuses 2>/dev/null|grep -w Healthy |wc -l



echo -n "检查Kubernetes组件异常状态:"

kubectl get componentstatuses 2>/dev/null|grep -w Unhealthy |wc -l



#检查命名空间

echo -n "检查命名正常空间:"

kubectl get namespaces |grep -w Active|wc -l





#检查Pod状态:

echo -n "检查Pod正常状态:"

kubectl get pods --all-namespaces |grep -w Running |wc -l

echo -n "检查Pod异常状态:"

 kubectl get pods --all-namespaces |grep -e 'Pending' -e 'Terminating' |wc -l





#检查副本ReplicaSet状态:

echo -n "检查副本ReplicaSet状态:"

kubectl get replicasets --all-namespaces |awk 'NR!=1 {print}'|wc -l



#检查Deployment状态:

echo -n "检查部署Deployment状态:"

kubectl get deployments --all-namespaces |awk 'NR!=1 {print}'|wc -l



#检查Service状态:

echo -n "检查服务Service状态:"

kubectl get services --all-namespaces |awk 'NR!=1 {print}'|wc -l



#检查入口Ingress状态:

echo -n "检查入口Ingress状态:"

kubectl get ingress --all-namespaces |awk 'NR!=1 {print}'|wc -l



echo -e "=====开始存储卷信息收集=====/"

#检查存储卷状态:

echo -n "检查存储卷正常使用状态:"

kubectl get pv |grep -w Available |wc -l



echo -n "检查存储卷绑定状态:"

kubectl get pv |grep -w Bound |wc -l



echo -n "检查存储卷解绑状态:"

kubectl get pv |grep -w Released |wc -l



echo -n "检查存储卷故障状态:"

kubectl get pv |grep -w Failed |wc -l



#检查存储卷声明状态:

echo -n "检查存储卷声明绑定状态:"

kubectl get pvc --all-namespaces  |grep -w Bound |wc -l



echo -n "检查存储卷声明pv解绑状态:"

kubectl get pvc --all-namespaces  |grep -w Pending |wc -l



echo -n "检查存储卷声明pv断开状态:"

kubectl get pvc --all-namespaces  |grep -w Lost |wc -l



echo -n "检查存储卷声明pv无法绑定状态:"

kubectl get pvc --all-namespaces  |grep -w Failed |wc -l



echo -e "=====开始事务信息收集=====/"

#检查配置映射状态:

echo -n "检查配置映射状态:"

kubectl get configmaps --all-namespaces|awk 'NR!=1 {print}'|wc -l

#检查事件状态:

echo -n "检查1h事件状态:"

kubectl get events --all-namespaces |awk 'NR!=1 {print}'|wc -l



echo -e "====开始资源使用信息收集====/"

#检查资源使用情况

echo "检查资源CPU超过90%的node:"

kubectl top node 2>/dev/null | awk '{print $1,$3,$5}'|sed 's@%@@g' |awk '{if ($3 > '90') print$1}'|awk 'NR!=1 {print}'|grep -v '^$'  && echo "$result" ||echo "0"



echo  "检查资源内存超过90%的node:"

kubectl top node 2>/dev/null | awk '{print $1,$3,$5}'|sed 's@%@@g' |awk '{if ($5 > '90') print$1}'|awk 'NR!=1 {print}'|grep -v '^$'  && echo "$result" ||echo "0"



echo -n "检查资源CPU(cores)大于100的pod:"

kubectl top pods 2>/dev/null --all-namespaces |awk '{print $1,$2,$3}'|sed 's@m@@g' |awk '{if ($3 > '100') print$1,$2}'|awk 'NR!=1 {print}' |wc -l



echo -n "检查资源内存(bytes)大于1000的pod:"

kubectl top pods 2>/dev/null --all-namespaces |awk '{print $1,$2,$4}'|sed 's@Mi@@g' |awk '{if ($3 > '1000') print$1,$2}'|awk 'NR!=1 {print}'|wc -l

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三朝看客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值