找出占用Kubernetes节点磁盘的Pod
有部分开发不规范导致日志写入容器, 在 k8s 环境下导致节点磁盘空间占用过高, 解决方案有: 通过监控告警来提前预防 挂载磁盘, 容器日志写入磁盘 使用自动清理脚本 kubectl 查询每个 pod 占用磁盘空间使用 python 处理所有节点 执行命令方式 输出结果如图: Docker 相关操作查看容器磁盘占用
Linux里安装crontab并运行
常见的 linux 发行版都自带了 crontab 服务, 但是我们常用的容器镜像是没有的, 不要问我为什么要在容器里运行 crontab…Linux定时执行任务crontabLinux的crontab无法执行的一些问题 CentOS/RedHat 系列安装 配置文件位置后面的 root 是用户名 启动命令 Ubuntu/Debian 系列安装 配置文件位置后面的 root 是用户名 启动命令 Alpine安装官方镜像自带了 配置文件位置后面的 root 是用户名 启动命令
自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用 crontab 定时删除文件, 比如每天 1 点删除创建日期超过 30 天的日志文件, 大部分情况下工作是 OK 的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下: 日志清理分以下几种: 历史日志, 并且未在写入的日志, 这种可以直接删除掉. 当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间 set -euo pipefail 的作用:set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败 脚本内容: 磁盘使用率低于 80% 不会执行操作, 所以可以缩短 crontab 执行的间隔, 我一般设置成 5 分钟检测一次, crontab 内容: 注意: crontab 最后需要保留一个空行
快速安装Prometheus监控组件
复制粘贴就能用,适用于非容器化安装, k8s 环境看这个, 更方便 Kubernetes中使用Prometheus对集群节点做监控 安装方式为二进制安装,使用 systemd 来管理(也可以使用 supervisor 等进程管理工具) 安装 node_exporter 安装 Prometheus
Dockerfile中ADD文件的路径问题
首先看一个案例 当前目录的文件如下: Dockerfile 文件内容如下: 本意是想把当前目录下的所有文件放到容器内的 /code 目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开 /code 一看: 会发现, 本来 3 这个文件应该是在 2 这个文件夹内的, 现在统一都跑到了上级目录了, 文件路径完全变了. 自然无法启动. 可以做如下修改:
k8s解除NodePort端口限制
我自己写了一个 svc 的 yaml 文件,部署的时候报错,不在默认的范围内,默认范围是: 30000-32767 kubectl apply -f nginx-src.yaml 报错: 如果是 kubeadm 部署修改配置文件 vim /etc/kubernetes/manifests/kube-apiserver.yaml 在启动参数里面添加如下一行 重启 kube-apiserver
MySQL查询出所有没有主键的表
作者:May22Night链接:https://www.jianshu.com/p/f484c63e5c96 压缩版: 美化版: sql 解释:查询结果中 TABLE_SCHEMA 是库名,TABLE_NAME 就是表名。其查询原理就是 information_schema 库中存储了各个库与表的结构,在 information_schema.TABLES 表中存储了所有表,information_schema.TABLE_CONSTRAINTS 表中存储了表相关的约束,主键就是一种约束,所以 CONSTRAINT_TYPE 字段为 PRIMARY KEY 值的就是拥有主键的表。有了所有表的表名,还有了所有拥有主键的表,那么就简单了,以查询出的全部表为主表,左联一下,右表为空的就是没有主键的表。SQL 中排除了 mysql 自带的五个库,同时解决了不同名的库拥有相同名的表的情况,还有优化空间,不过我觉得不是业务 SQL,没必要优化了。
在Windows下实现一个快速转换音乐格式的小工具
搞点歌在车里听,但是早年 10w 的合资车只能听 mp3 格式,所以把需要我珍藏的音乐转换成 mp3 拷进 U 盘, 转换格式工具当然是选择 ffmpeg 了。搜了下命令是: 接下来需要做一个稍微自动化一点的工具,比如把 flac 文件拖放到 bat 脚本上,就能实现自动转换格式。 完整脚本如下: 其中 chcp 65001 是为了防止 bat 脚本中包含中文导致的乱码。申明脚本编码为 UTF-8, 脚本保存的时候也要以 UTF-8 编码保存, 如果不加 chcp 65001, 那么需要使用 windows 记事本打开重新保存编码选择 ANSI, 因为 cmd 默认的编码就是 GBK 以下是一些常用的代码页。 代码页 说明 65001 UTF-8 代码页 950 繁体中文 936 简体中文默认 GBK 437 MS-DOS 美国英语 另外脚本里用到的变量说明: 上面的脚本用到了短路径, 短路径的好处是可以解决路径中带有空格的问题。
WSL2 - Ubuntu配置记录
WSL 防火墙规则 基础环境配置更换源使用中科大的源: https://mirrors.ustc.edu.cn/help/ubuntu.html 安装常用的包 当前用户免 sudo 密码 WSL 开启 systemd 支持 (仅支持 WSL2) git 配置 zsh 配置安装 zsh 安装 oh my zshhttps://ohmyz.sh/#install 安装主题https://github.com/romkatv/powerlevel10k 安装一些插件https://github.com/zsh-users/zsh-autosuggestions vim修改默认编辑器 安装 vim plug 插件管理工具 配置文件 进入 vim 命令界面, 输入 :PlugInstall 安装插件 常用环境安装安装 golang python nodejs 查看 快速搭建环境记录 安装 zssh, 查看 改造windows-terminal支持lrzsz 常用 alias 常用软链接 tsshtrzsz 使用记录 其他问题如果 wsl 中的...
Linux终端复用器Screen和tmux
参考阮一峰的博客https://www.ruanyifeng.com/blog/2019/10/tmux.html 作用想象一下, 我在自己电脑远程 SSH 连接服务器, 正在命令行执行 mysqldump, 突然 (断网\电脑蓝屏) 了, 那么终端就断了, mysqldump 也就断了, 就需要重新来过. 终端复用器就是创建一个虚拟的终端, 可以挂在后台, 随时想进就进, 还有其他好用的功能, 比如将终端日志保存到文件内. 常用的工具有 tmux 和 screen, tmux 类似于 screen, 但是功能更强大, screen 的记录日志功能很好用, 两者各有千秋. 另外终端复用器对 rz/sz 这种工具的兼容性都不好, 建议不要用来进行 rz/sz 传文件 tmux安装 快速使用输入 tmux 即可启动, 在终端下面有一条状态栏, 显示当前的终端编号. 退出输入: exit 或者按下 Ctrl + d 或者直接关闭窗口查看后台运行的会话: tmux ls进入会话: tmux a -t 0 常用操作 操作 命令或快捷键 打开 tmux tmux 新建 tmu...
