k8s Pod管理脚本
  Uz9KIXKpP3pL 2023年11月13日 29 0

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 
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



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  Yoru5qB4TSKM   2023年12月10日   39   0   0 服务器重启IP