将ova或qcow2导入到PVE虚拟机
比如我们从VMware Workstation导出的虚拟机镜像(ova或者ovf), 如果我想要导入到proxmox中, proxmox默认是不支持导入OVA虚拟机的, 可以通过转换虚拟机虚拟磁盘的方法将虚拟磁盘附加到现有的pve虚拟机中.
提取vmdk虚拟磁盘文件这一步如果是ova, 则需要用解压缩软件解压一下, 如果是ovf, 直接就能看到vmdk文件
转换虚拟磁盘文件使用工具 qemu-img 进行转换, 如果是导入到pve, 可以不转换, 使用qm命令会自动转换的.
12345# 从另一台PVE导出qcow2可以这样qemu-img convert -p -O qcow2 -c /dev/mapper/pve-vm--110--disk--0 VM110.qcow2# 从vmdk文件转换可以这样 -c 是压缩qemu-img convert -c -f vmdk myvm-disk1.vmdk -O qcow2 myvm-disk1.qcow2
在PVE上创建新的虚拟机此步骤需要记录一下虚拟机的ID
上传虚拟磁盘文件到PVEpve本质上就是debian linux, 你可以 ...
使用tailscale打通内网
家里有一台群晖nas, 通过quickconnect连接太慢了, 并且有些操作不能通过quickconnect, 比如直接smb挂载目录
群晖nas安装群晖国内应用商店已经下架了这个APP, 你可以尝试着在应用中心搜索tailscale, 如果可以搜索到, 就直接安装即可. 搜索不到的话, 可以使用离线安装的方式:
到官网下载离线SPK包:https://pkgs.tailscale.com/stable/#spks根据你的系统架构来下载包, intel cpu 下载x86_64架构的包. 然后进入群晖软件中心, 点击手动安装, 上传spk包安装
第一次打开tailscale 需要登录, 登录页面不支持quickconnect远程连接, 所以建议在家配置好tailscale
windows安装安装成功后, 右键任务栏图标,点击login登录tailscale账号
登录成功后,可以在官网https://login.tailscale.com/admin/machines 查看到所有的设备和IP地址等信息。
访问方式tailscale可以使用ip地址来访问,或者使用tailscale的d ...
查看kubernetes节点的硬件配置
kubectl describe node 可以查看到信息, 这里使用jq进行一下数据处理格式化.
1kubectl get node -o json | jq '.items[] | "===========================================", "机器名: \(.metadata.labels."kubernetes.io/hostname") ", "CPU: \(.status.capacity.cpu) 核", "内存大小: \(.status.capacity.memory)"'
输出结果类似于:
爷的青春结束了
前言回忆是抓不到的月光握紧就变黑暗,回忆是美好的,但不要沉迷于回忆,不要尝试安装模拟器去回忆之前的老游戏啦,会浪费现在的时间,童年是找不回来了,过好当下吧。
为啥写这篇文章时间过的太快, 看着身边的东西都变了样,有时候突然想起很久以前玩过的游戏,但是怎么也想不起名字,就算想起来了,搜索引擎都搜不到相关的文章,只能勉强搜到一些包浆了的图,所以还是记录下来,对自己的过去做个记录。
俄罗斯方块机磁带机和CD机小学时候听的磁带机,听的最多的就是刀郎的歌,什么《2002年的第一场雪》啦。
CD机,听的第一首歌是 林俊杰 - 就是我
FC游戏机FC游戏机指的是任天堂的红白机, 但是在中国普及开来的时候已经是盗版遍地了, 不仅仅是机器盗版, 还有很多盗版游戏, 还记得外星科技等等开发的那些塞尔达?
模拟器网上到处都是, 很多都是在线玩的.
一个背景音乐下载网站: https://www.zophar.net/music/
开源nfs编辑器: https://famistudio.org/
小霸王当时村里已经有小伙伴用上了盗版小霸王(没错,是盗版的小霸王,真的小霸王还是比较贵的),和小霸王一样拥有键盘 ...
找出占用Kubernetes节点磁盘的Pod
有部分开发不规范导致日志写入容器, 在k8s环境下导致节点磁盘空间占用过高, 解决方案有:
通过监控告警来提前预防
挂载磁盘, 容器日志写入磁盘
使用自动清理脚本
kubectl查询每个pod占用磁盘空间1kubectl get --raw /api/v1/nodes/10.20.20.12/proxy/stats/summary | jq '.pods[] | "PodName: \(.podRef.name)", "usedBytes: \(.containers[].rootfs.usedBytes)", "======================================================"'
输出结果如图:
Docker相关操作查看容器磁盘占用12345# 节点上查看磁盘使用情况,并安装从大到小排序,可以看到各个容器的占用磁盘空间。docker ps -a --format "table {{.Size}}\t ...
Linux里安装crontab并运行
常见的linux发行版都自带了crontab服务, 但是我们常用的容器镜像是没有的, 不要问我为什么要在容器里运行crontab…Linux定时执行任务crontabLinux的crontab无法执行的一些问题
CentOS/RedHat系列安装1yum install -y cronie
配置文件位置后面的root是用户名
1/var/spool/cron/root
启动命令12345# 后台运行crond# 前台运行crond -f
Ubuntu/Debian系列安装1sudo apt-get install -y cron
配置文件位置后面的root是用户名
1/var/spool/cron/crontabs/root
启动命令12345# 后台运行cron# 前台运行cron -f
Alpine安装官方镜像自带了
配置文件位置后面的root是用户名
1/etc/crontabs/root
启动命令12345# 前台运行crond -f# 后台运行crond
自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用crontab定时删除文件, 比如每天1点删除创建日期超过30天的日志文件, 大部分情况下工作是OK的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下:
日志清理分以下几种:
历史日志, 并且未在写入的日志, 这种可以直接删除掉.
当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间
set -euo pipefail 的作用:set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败
脚本内容:
123456789101112131415161718192021222324252627282930313233#!/bin/bashset -uo pipefail# 磁盘的文件系统(df -h里面显示的)FILESYSTEM="/dev ...
快速安装 node exporter
复制粘贴就能用,适用于虚拟机安装, k8s环境看这个, 更方便Kubernetes中使用Prometheus对集群节点做监控
12345678910111213141516171819202122[ -d /data/src ] || mkdir -p /data/srccd /data/src/[ -f /data/src/node_exporter ] || wget https://file.babudiu.com/f/2Bf8/node_exporter-1.6.1.linux-amd64.tar.gztar xf node_exporter-1.6.1.linux-amd64.tar.gz/bin/cp node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/ && rm -rf /data/src/node_exporter-1.6.1.linux-amd64cat >/etc/systemd/system/node_exporter.service <<EOF[Unit]D ...
Dockerfile中ADD文件的路径问题
首先看一个案例
当前目录的文件如下:
12345678[root@devops_build watcher_svr]# tree.├── 1├── 2│ └── 3└── Dockerfile1 directory, 3 files
Dockerfile文件内容如下:
123FROM harbor.ingeek.com/base/node:14.20.1-busterADD * /code/WORKDIR /code
本意是想把当前目录下的所有文件放到容器内的/code目录, 这个时候使用 docker build 后无法启动, 进入容器, 打开/code一看:
123456789[root@devops_build watcher_svr]# docker run -it test bashroot@cb7543054ef2:/code# ls -altotal 12drwxr-xr-x 2 root root 4096 Sep 22 08:47 .drwxr-xr-x 1 root root 4096 Sep 22 08:47 ..-rw-r--r-- 1 root roo ...
Windows下使用bat脚本来新增环境变量
自己创建了一个bin目录用于存放一些exe或者bat用于快速调用, 把它加到PATH环境变量中就可以在任意路径来调用了.
查看环境变量1set PATH
设置环境变量1setx PATH "%PATH%;%USERPROFILE%\bin"
这里需要注意把原有的%PATH%带上, 不然就会覆盖掉PATH变量, %USERPROFILE% 指的是个人文件夹, 我的就是C:\Users\iuxt
完整脚本首先判断一下有没有环境变量, 没有的话就增加, 有的话什么都不做.
123456set path | findstr "%USERPROFILE%\bin" >nul && ( echo 环境变量已存在) || ( echo 环境变量不存在 setx PATH "%PATH%;%USERPROFILE%\bin")