首页 > 其他分享 >k8s Pod管理脚本

k8s Pod管理脚本

时间:2023-09-13 16:06:00浏览次数:51  
标签:脚本 run log day echo Pod k8s pod 日志

1.背景

场景:1

   测试环境k8s 集群中例如业务启动的pod 长时间没有进行维护导致僵死

场景:2

pod 输出的日志文件太多量太大导致日志收集容器出现收集不到或者日志内容延迟的相关问题. 

场景:3

应用多容器采用pod代理管控流量方式代码层面导致容器连接长时间失败.

 故

   1.降低人工操作成本.需要编写一个脚本按照命名空间的维度进行清理指定日期的运行pod .


2.操作shell脚本

#!/bin/bash
set -e
namespace=$1
run_day=$2

# 过滤不需要处理的pod和pod异常状态
exclude="NAME|Terminating|Evicted|CrashLoopBackOff|ImagePullBackOff|zookeeper|kafka|etcd|nginx-ingress-controller|multienv-dns|es-cluster|elasticsearch"

# 获取当前时间做为删除时间记录日志
current_time=$(date +%Y%m%d_%H_%M_%S)
log_path="/data/log/ops/pod_delete.log"
# 脚本参数控制 必须输出位置参数
if [ $# -ne 2 ]; then
   echo "错误:请提供2个位置参数"
   exit 1
fi

# 使用正则表达式来检查输入是否为整数 非int脚本终止运行
if [[ $run_day =~ ^[0-9]+$ ]]; then
  echo "Input run_day 天数ok"
else
  echo "Input run_day 类型错误必须是数字: $run_day"
  exit 1
fi

# 检查kubectl命令是否可用
echo "start time $current_time" >> $log_path
if ! which kubectl > /dev/null 2>&1; then
   printf "${RED}kubectl命令不存在,请确认是否已经正确安装${NC}\n"
   exit 1
fi

# 关键参数控制 必须输出集群存在的ns
nsList=$(kubectl get ns |grep -E "test-01|test-03|test-09|test-10|test-13")
if [[ $nsList == *"$namespace"* ]]; then
    echo "命名空间已存在集群中"
else
  echo "输出的命名空间不存在集群中."
  exit 1
fi


# 定义颜色变量
RED='\033[0;31m'
NC='\033[0m'

# 检查日志文件是否存在
if [ ! -f $log_path ]
then
  printf "${RED}日志文件不存在,请确认是否已经正确创建$log_path ${NC}\n"
  exit 1
fi

# 统计输出ns空间下运行pod 大于run_day天进行删除;
podList=$(kubectl get pod -n $namespace |grep -v -E "$exclude" |awk -v run_day="$run_day" '($5 ~ /d/ && int($5) > run_day) {print $1}')
for pod_name in  $podList
do
    if test -z "$pod_name"
    then
        continue
    else
        echo "重启时间: $current_time 命名空间: $namespace 重启Pod名称: $pod_name" >> $log_path
        kubectl delete pod -n $namespace $pod_name
   fi
done


3.使用方式

#日志文件
mkdir /data/log/ops/ -p 
touch /data/log/ops/pod_delete.log 
#脚本执行
bash pods_restart.sh test 7
Input run_day 天数ok
命名空间已存在集群中

#删除pod日志查看
tail -10 /data/log/ops/pod_delete.log



标签:脚本,run,log,day,echo,Pod,k8s,pod,日志
From: https://blog.51cto.com/breaklinux/7455602

相关文章

  • shell脚本生成随机密码
    1.创建generate_password.sh脚本2.编写内容#!/bin/bash#默认密码长度length=12#默认包含大小写字母、数字和特殊字符characters="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_\-+=<>?"#生成随机密码generate_password(){loca......
  • 《两周自制脚本语言》 PDF 源码
    《两周自制脚本语言》是一本优秀的编译原理入门读物。全书穿插了大量轻松风趣的对话,读者可以随书中的人物一起从最简单的语言解释器开始,逐步添加新功能,最终完成一个支持函数、数组、对象等高级功能的语言编译器。本书与众不同的实现方式不仅大幅简化了语言处理器的复杂度,还有助于拓......
  • Windows使用任务计划程序创建定时运行Python脚本
    最近有需求需要每天定时运行python程序,了解了一些方法。目前觉得Windows系统最简单的方法就是设置任务计划程序定时运行。在Windows中,任务计划程序(TaskScheduler)是一个持久的服务,通常不会因为计算机的关机或重启而停止。一旦你成功创建并配置了定时任务,它将按照你设置的触发条......
  • docker快速安装-docker一键安装脚本
    1.下载/配置安装脚本touchinstall-docker.sh#!/bin/bash#mail:[email protected]#system:centos7#integration:docker-latestclearecho"######################################################"echo"#AutoInstallDocker......
  • nacos redis mysql 服务启动脚本
    nacos#cat/etc/systemd/system/nacos.service[Unit]Description=nacosAfter=network.target[Service]Type=forkingExecStart=/usr/local/src/nacos/bin/startup.shExecStop=/usr/local/src/nacos/bin/shutdown.shPrivateTmp=true[Install]WantedBy=multi-user.......
  • 注册到K8S上的Nacos报错com.alibaba.nacos.api.exception.NacosException: Client not
    契机近期升级SpringCloudAlibaba版本,从2021.0.1.0升级到2021.0.5问题现象注册到K8S平台上2.1.2版本的Nacos报错,错误信息如下:2023-09-1309:29:53.712INFO19988—[main]c.a.n.p.a.s.c.ClientAuthPluginManager:ClientAuthPluginManagerLoadClientAuthServiceco......
  • Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法
    目录命令行脚本参考-bat命令行脚本参考-bash值得学习的知识点1.识别终端使用的语言2.函数的编写3.获取用户的输入4.bat文件老是乱码怎么办有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写.batcmd批处理脚本,给macOS、Linux用户编写.shbas......
  • 如何像 Sealos 一样在浏览器中打造一款 K8s 终端?
    在Kubernetes的世界中,命令行工具(如kubectl和helm)是我们与集群交互的主要方式。然而,有时候,我们可能希望能够在Web页面中直接打开一个终端,执行这些命令,而不需要在本地环境中安装和配置这些工具。本文将深入探讨如何通过Kubernetes自定义资源定义(CRD)实现这个功能,并通过一个真......
  • vscode 终端报错:无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
    问题:vscode终端执行npm指令时报错如下解决:1.在终端通过输入指令get-ExecutionPolicy得到以下结果:表示当前执行策略为受限的2.执行指令Set-ExecutionPolicy-ScopeCurrentUser,并输入RemoteSigned。Set-ExecutionPolicy语法如下:Set-ExecutionPolicy[-Execu......
  • MySQL异常断电恢复脚本
    #!/bin/bashuser="root"host="127.0.0.1"passwd="password"conf_file="/etc/mysql/mysql.conf.d/mysqld.cnf"backup_file="/home/ehigh/DB.sql"data_dir="/var/lib/mysql"if[$(id-u)-ne0];then......