K8S日志备份脚本

需求说明:

       如果你现在运维一个K8S平台,此平台由于各种原因最初架构设计根本没有ELK之类的日志工具,然而研发部又天天向你要日志,实时日志也就算了,关键是要几个月以前哪天哪个点的,而生产环境大于天,没有领导批准绝对不乱动。

问题分析:

       鉴于以上原因,需要写一个脚本把应用日志导出进行长久备份。

       1、Pod日志最大保存70M左右,时限大概是2个小时

       2、根据应用个数,日志大小,每天产生量,保留时限计算需要硬盘大小

       3、具体逻辑是:

             根据应用名称获取所有Pod具体名字,挨个导出Pod日志,保留在当天的日志目录内,

             并且一直不断的循环导出。

应用场景:

        生产环境未设计日志长久保存机制的临时解决方案,谁成想竞临时三年之久并仍在继续。

#!/bin/bash
#AUTHOR       : Created by YaoButing
#PLATFORM     : CentOS Linux release 7.8.2003(2003)
#VERSION      : 3.0
#DATE         : 2021-09-08
#DESCRIPTION  : This script is used to Auto download the k8s logs .
###############################################################################
#变量设置初始值
NUMBER=100

#/data/k8s-logs日志备份目录,根据需要提前规划计算好磁盘大小
cd /data/k8s-logs
while (($NUMBER>0))
do   
#检查当日的日志目录是否存在,不存在则创建  
    if [ -e /data/k8s-logs/`date "+%Y-%m-%d"` ] 
    then
	    echo "...........................目录已存在..........................."
    else
        mkdir /data/k8s-logs/`date "+%Y-%m-%d"`
	fi	
	cd /data/k8s-logs/`date "+%Y-%m-%d"`/
    #下面两个01是一个编号,一个完整应用日志导出模块,根据应用个数复制添加即可
	####---  01  ---#################  导出    ABC    日志  ##################
	# CSDN为命名空间,其替换自己的namespace,ABC为应用名称
	for pod in ` kubectl get pod -n CSDN | grep ABC | awk '{print $1}' `
    do
        #每个Pod日志输出15s后停止,这个需要实际测试自己的Pod日志完全输出需要的时间
        timeout 15 kubectl logs -f $pod  -n CSDN > /data/k8s-logs/`date "+%Y-%m-%d"`/ABC-`date "+%Y-%m-%d-%H-%M-%S"`.log
   		echo "                                      $pod                                           日志已导出......"
	done
    #将导出的应用所有Pod日志压缩打包
	tar -zcPvf /data/k8s-logs/`date "+%Y-%m-%d"`/ABC-`date "+%Y-%m-%d-%H"`.tar.gz /data/k8s-logs/`date "+%Y-%m-%d"`/ABC-`date "+%Y-%m-%d-%H"`*.log
    #删除导出的.log文件,只保留压缩包,节省空间
	rm -rf /data/k8s-logs/`date "+%Y-%m-%d"`/*.log
    ####---  01  ---#################  导出    ABC    日志  ##################
	# sleep具体时间同样需要计算,要查看一个‘Pod保存日志的最长时限’,然后减去‘导出所有Pod日志消耗时间’,就是下面的时间,如果应用太多则可能不需要sleep
	sleep 3600
done

### 关于李沐及其相关资源 关于李沐的工作和贡献,在多个方面都有所体现。李沐参与了多项开源项目的开发工作,其中包括对多种编程语言的支持,如 Java、C++、Python、Go、JS、TS、C#、Swift 和 Zig 等[^1]。 #### 李沐代码示例 虽然具体的个人代码示例未直接提及,但考虑到李沐在机器学习领域尤其是深度学习方面的深厚造诣以及其对于Transformer架构的研究,可以从他精读并推广的技术成果中窥见一二。例如,在研究Swin Transformer的过程中,该模型采用了一种新颖的方法来减少计算复杂度,仅需在线性时间内处理不同尺寸的输入图像,这得益于局部窗口内的多头自注意力机制(W-MSA)[^5]。 ```python import torch.nn as nn class SwinTransformerBlock(nn.Module): def __init__(self, dim, num_heads, window_size=7, shift_size=0, mlp_ratio=4., qkv_bias=True, drop=0., attn_drop=0., drop_path=0., act_layer=nn.GELU, norm_layer=nn.LayerNorm): super().__init__() self.window_size = window_size self.shift_size = shift_size # Window-based multi-head self attention (W-MSA) or Shifted W-MSA if min(self.input_resolution) <= self.window_size: # 若输入分辨率小于等于窗口大小,则不进行移位操作,并设置窗口大小为输入分辨率 self.shift_size = 0 self.window_size = min(self.input_resolution) assert 0 <= self.shift_size < self.window_size, "shift_size must in 0-window_size" self.attn = WindowAttention( dim, window_size=(self.window_size, self.window_size), num_heads=num_heads, qkv_bias=qkv_bias, attn_drop=attn_drop, proj_drop=drop) ``` 此段代码展示了如何定义一个基本的Swin Transformer模块,其中包含了关键组件——基于窗口的多头自注意机制(W-MSA),这是由李沐等人深入探讨的一种有效降低计算成本的方法之一。 #### 李沐编程教程与开源项目 除了理论上的探索外,李沐还积极参与到实际应用当中。创办了专注于游戏娱乐领域的大规模模型应用初创企业Boson AI,表明了其不仅限于学术界的努力方向[^4]。此外,作为一位活跃的技术分享者,李沐可能也提供了不少公开可访问的教学材料或文档,帮助更多开发者理解和掌握最新的技术趋势和发展动态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

藥瓿亭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值