技术分享|开发、运维操作实用技巧(不定期更新:置顶)
不定期更新,持续置顶!
- 将本地镜像复制到远程机器,直接导入 docker,无中间文件
- 将当前目录下所有的视频文件合并为一个 mp4
- Localtunnel under Apache Httpd
- 从 docker container 中获取配置,并打印需要的内容
- FRP server config in nginx
- Docker 私有 Registry 实操
- 远程连接 ssh 通过 socks5,实现 三级跳 代理连接内网
- Linux 下断点续传文件
- 通过网络修改系统时间
- Ubuntu 自动连接 4G LTE 网卡
- docker 一次性导出所有需要的 image
- [K3S] containerd images 导出/导入 功能
- 离线 rpm 包下载及打包
- 离线apt 包下载及打包
- 加载虚拟 DRM(Direct Rendering Manager)模块
- 在 k8s/k3s 集群上一键安装 Kubeflow
- 运维必备工具集,图形化展示系统利用率
将本地镜像复制到远程机器,直接导入 docker,无中间文件
主要是采用了 Linux |
管道概念:
- docker save: 保存 docker image 到 stdout
- gzip: 压缩 stdout
- ssh -C: ssh 远程
- docker load: 在远程机器上执行,数据来自 stdout
docker save edgexfoundry/device-s7:0.0.0-dev | gzip | ssh -C 192.168.123.35 docker load
将当前目录下所有的视频文件合并为一个 mp4
ffmpeg 实用技巧
ffmpeg -f concat -safe 0 -i <(for f in ./*.mp4; do echo "file '$PWD/$f'"; done) -c copy output.mp4
Localtunnel under Apache Httpd
临时解决 内网穿透
问题,非常方便快捷。
<VirtualHost *:80>
ServerName t.abc.cn
ServerAlias *.t.abc.cn
RewriteEngine On
ProxyPassMatch ^/(.*)$ http://localhost:3081/$1
ProxyPassReverse / http://localhost:3081/
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* ws://localhost:3081%{REQUEST_URI} [P]
ProxyPreserveHost On
ProxyRequests On
</VirtualHost>
从 docker container 中获取配置,并打印需要的内容
比如:从 zlmediakit 容器中获取配置文杰,并答应 第二个 字段的内容。
docker exec -it zlmediakit cat /opt/media/conf/config.ini | grep secret| awk -F'=' '{print $2}'
FRP server config in nginx
frp server 提供了强大的 内网穿透
功能,其中配置通配符网站技巧。
server {
listen 80;
listen [::]:80;
root /var/www/html/t.abc.cn;
server_name .t.abc.cn;
location / {
proxy_pass http://localhost:8888;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Docker 私有 Registry 实操
0、增加新的 IP 地址解析
more /etc/hosts
121.1.1.251 hub.abc.cn
1、修改 docker 配置文件
more /etc/docker/daemon.json
{
"insecure-registries" : [ "0.0.0.0/0" ]
}
{
"insecure-registries": [
"hub.yiqisoft.cn"
],
"registry-mirrors": [
"https://hub.yiqisoft.cn"
]
}
2、重启 docker
systemctl restart docker
3、拉取镜像 image
docker pull ...
远程连接 ssh 通过 socks5,实现 三级跳
代理连接内网
-
启动 socks 服务,监听 9898
ssh -D 0.0.0.0:9898 1.1.1.1
-
连接 ssh 通过 socks
ssh -o "ProxyCommand=nc -X 5 -x 192.168.123.33:9898 %h %p" 192.1.1.68
-
三级跳,需要从操作机器访问摄像头web
操作机器 中间机器 目标机器 摄像头 192.1.1.68 192.1.1.251 50.5.0.18:192.168.3.122 192.168.3.79 -
在中间机器上,代理本地 9898 动态 socket 转换
ssh -D 9898 50.5.0.18
-
在操作机器上,指定 本地 9898 转发到 中间机器 9898
ssh -L 9898:127.0.0.1:9898 192.1.1.251
-
操作机器上,设置浏览器 socket 代理: socket5://127.0.0.1:9898
Linux 下断点续传文件
- 如果发现网速很慢,且可能会断开的情况下,可以使用
rsync
进行同步,支持断点续传。rsync -av --partial --progress model_server.tar.gz gust@50.5.0.9:/tmp/
通过网络修改系统时间
- 在没有 NTP 服务器,或感觉配置麻烦,就使用 HTTP 协议来修改本地时间,非常实用。 google.com 改成你的服务器域名或地址即可。
sudo date -s "$(curl -H'Cache-Control:no-cache' -sI google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
Ubuntu 自动连接 4G LTE 网卡
本功能需 NetworkManager 工具支持!
-
必须确认已经具备: nmcli
nmcli device connect cdc-wdm0
-
会产生一个
/etc/NetworkManager/system-connections/cdc-wdm0.nmconnection
文件,重启 NetworkManager 即可systemctl restart NetworkManager
docker 一次性导出所有需要的 image
- 根据需求,找到你需要的 Respository 和 Tag
docker images --format "{{.Repository}}:{{.Tag}}" |grep hub > images.txt
- 从 images.txt 文件中列表来一次性导出所需的 docker image
output=$(awk '{printf "%s ", $0}' images.txt) docker save $output | gzip > all-images.tar.gz
[K3S] containerd images 导出/导入 功能
- 导出
k3s ctr images export all-images.tar $(k3s ctr images ls -q)
- 导入
k3s ctr images import all-images.tar
离线 rpm 包下载及打包
- 运维人员最讨厌没有互联网下的依赖包管理
# 外网环境下,安装 repotrack yum -y install yum-utils # 例:下载 nginx 及其依赖包至 /home/nginx-rpms 目录下 repotrack -p /home/nginx-rpms nginx # 打包所有依赖 tar -zcvf nginx-rpms.tar.gz /home/nginx-rpms/ # scp 到目的机器上进行安装 ...
离线apt 包下载及打包
- 不管是 rpm 还是 apt,依赖包管理都很麻烦
# 安装一个依赖工具 apt install apt-rdepends # 下载安装包 deb apt-rdepends lm-sensors # 压缩 debs tar -czvf all.tar.gz *.deb # scp 到目的机器进行安装 ...
加载虚拟 DRM(Direct Rendering Manager)模块
默认情况下,部署 OpenVINO Model Server 的时候,肯定是需要加载 GPU 相关配置,比如 /dev/dri
目录,有些机器安装后没有这个目录,需要模拟出来。
配置自动加载
-
确认内核支持
vgem
modinfo vgem
-
配置自动加载
cat "vgem" >> /etc/modules
或创建模块加载配置(可选)
-
创建配置文件
vi /etc/modprobe.d/vgem.conf install vgem /sbin/modprobe --ignore-install vgem
-
更新模块配置
update-initramfs -u
重启验证
-
查看内核加载情况
lsmod |grep vgem
-
以及确认虚拟目录
ls /dev/dri
在 k8s/k3s 集群上一键安装 Kubeflow
-
Clone manifests 仓库
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash git clone https://github.com/kubeflow/manifests.git cd manifests while ! kustomize build example | kubectl apply -f -; do echo "Retrying to apply resources"; sleep 10; done
-
或修改最后一句
while ! kustomize build example | kubectl apply --server-side --force-conflicts -f -; do echo "Retrying to apply resources"; sleep 20; done
当然,还有其他组建,在具体的组建目录下,安装方法一样的,使用 kustomize 进行安装。
运维必备工具集,图形化展示系统利用率
- 一键安装
apt install -y btop htop nload cockpit net-tools