常用的脚本
介绍 | 链接 |
---|---|
从源码编译安装/升级 golang | install-golang.sh |
用 go install 安装的工具 | install-golang-tools.sh |
linux 安装 docker | get-docker.sh |
ubuntu 初始化安装的工具 | ubuntu-init.sh |
tailscale 安装 | install-tailscale.sh |
ubuntu 桌面 安装 chrome | ubuntu-desktop-install-chrome.sh |
docker
安装 docker
sudo curl -fsSL https://getdocker.jimyag.workers.dev/ | sh
sudo usermod -a -G docker $USER
卸载 docker
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc
sudo ip route del 172.17.0.0/16 dev docker0
sudo ip route del 169.254.0.0/16 dev docker0
sudo ip link delete docker0
计算某个文件的增长速度
n=5; file="./test"; size1=$(stat -c%s "$file"); sleep $n; size2=$(stat -c%s "$file"); growth=$(echo "scale=2; ($size2 - $size1) / $n" | bc); if (( $(echo "$growth >= 1073741824" | bc) )); then echo "$(echo "scale=2; $growth / 1073741824" | bc) GB/s"; elif (( $(echo "$growth >= 1048576" | bc) )); then echo "$(echo "scale=2; $growth / 1048576" | bc) MB/s"; else echo "$growth B/s"; fi
删除几点前的所有文件
find ./ -type f -not -newermt "$(date '+%Y-%m-%d 22:00:00')" -delete
按照 ip 进行排序
tailscale status | awk '{print $1 ,$2}' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4
设置系统时区
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
提取主机名并去重
cat host.yml | grep yzh | sed 's/://g' | tr -d ' ' | sort|uniq | tr '\n' ',' | sed 's/,$//g'
- sed ’s/://g’: 移除行中的冒号。
- tr -d ’ ‘: 删除行中的空格。
- sort: 对结果进行排序,以便 uniq 可以有效工作。
- uniq: 去重相邻的重复行。
- tr ‘\n’ ‘,’: 将换行符替换为逗号。
- sed ’s/,$//g’: 去掉末尾的逗号。
cpu/内存 使用最高的 10 个进程
ps -eo pid,ppid,user,command,%cpu,%mem --sort=-%cpu | head -n 10
ps -eo pid,ppid,user,command,%cpu,%mem --sort=-%mem | head -n 10
k8s 常用命令
通过机器过滤 pod
kubectl get po --field-selector=spec.nodeName=node1 -A
查看 pod 的描述
kubectl describe po -n spark xxxx
删除执行成功的 pod
kubectl delete pod -n spark --field-selector=status.phase=Succeeded
kubectl delete po -n spark --field-selector status.phase=Succeeded
运行一个测试 pod
kubectl run test-pod --namespace=test --image=busybox --command -- sleep 3600
查看包含某个 label 的 pod 的日志
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --since=1m -f
进入某个 container
kubectl exec -it -n defy yzh-flume-qdcdn-ngxerr-67df54b9c5-ppwl5 --container=flume-metrics -- bash
helm 渲染 chart 结果
helm template --debug -f test_values.yaml <chart name or chart path>
给某个 node 打上标签
kubectl label node node1 node-role.kubernetes.io/ingress=
给某个 node 删掉标签
kubectl label node node1 node-role.kubernetes.io/prometheus-
覆盖某个 node 的标签
kubectl label nodes node1 test=false --overwrite
查询某个 node 的标签
kubectl get nodes node1 node2 --show-labels
重启 pod
kubectl rollout restart deployment -n spark test
kubectl delete pod -n spark test-67df54b9c5-ppwl5
从 pod 中拷贝文件
kubectl cp spark/test-67df54b9c5-ppwl5:/app/logs/flume-metrics.log ./
kubectl cp ./test.sh spark/test-67df54b9c5-ppwl5:/app/logs/
回滚服务
# 查看服务版本
helm history -n spark test
# 回滚到 4 版本
helm rollback -n spark test 4
下线某个 node
# 标记 node 为不可调度
kubectl cordon node1
# 驱逐 node 上的 pod
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data
# 删除 node
kubectl delete node node1
或者使用 kubespary 中的下线功能