
| 介绍                       | 链接                                                                   |
| -------------------------- | ---------------------------------------------------------------------- |
| 从源码编译安装/升级 golang | [install-golang.sh](./install-golang.sh)                               |
| 用 go install 安装的工具   | [install-golang-tools.sh](./install-golang-tools.sh)                   |
| linux 安装 docker          | [get-docker.sh](https://getdocker.jimyag.workers.dev/)                 |
| ubuntu 初始化安装的工具    | [ubuntu-init.sh](./ubuntu-init.sh)                                     |
| tailscale 安装             | [install-tailscale.sh](./install-tailscale.sh)                         |
| ubuntu 桌面 安装 chrome    | [ubuntu-desktop-install-chrome.sh](./ubuntu-desktop-install-chrome.sh) |
| 获取文件的增长速度         | [file_growth_rate.sh](./file_growth_rate.sh)                           |
| 卸载 docker                | [uninstall-docker.sh](./uninstall-docker.sh)                           |
| k8s 资源使用情况           | [k8s-resource-usage.sh](./k8s-resource-usage.sh)                       |
| 安装 containerd            | [install-containerd.sh](./install-containerd.sh)                       |
| 安装 nginx                 | [install-nginx.sh](./install-nginx.sh)                                 |

## docker

### 安装 docker

```bash
sudo curl -fsSL https://getdocker.jimyag.workers.dev/ | sh
sudo usermod -a -G docker $USER
```

## 删除几点前的所有文件

```bash
find ./ -type f -not -newermt "$(date '+%Y-%m-%d 22:00:00')" -delete
```

## 按照 ip 进行排序

```shell
tailscale status | awk '{print $1 ,$2}' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4
```

## 设置系统时区

```shell
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
```

## 提取主机名并去重

```bash
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 个进程

```bash
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

```bash
kubectl get po --field-selector=spec.nodeName=node1 -A
```

### 查看 pod 的描述

```bash
kubectl describe po -n spark xxxx

```

### 删除执行成功的 pod

```bash
kubectl delete pod -n spark --field-selector=status.phase=Succeeded
kubectl delete po -n spark --field-selector status.phase=Succeeded
```

### 运行一个测试 pod

```bash
kubectl run test-pod --namespace=test --image=busybox --command -- sleep 3600
```

### 查看 pod 指定 container 之前的日志

```bash
kubectl logs --previous ${POD_NAME} ${CONTAINER_NAME}
```

### 查看包含某个 label 的 pod 的日志

```bash
kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx --since=1m  -f 
```

### 进入某个 container

```bash
kubectl exec -it -n defy yzh-flume-qdcdn-ngxerr-67df54b9c5-ppwl5 --container=flume-metrics -- bash
```

### helm 渲染 chart 结果

```bash
helm template --debug -f test_values.yaml <chart name or chart path>
```

### 给某个 node 打上标签

```bash
kubectl label node node1 node-role.kubernetes.io/ingress=
```

### 给某个 node 删掉标签

```bash
kubectl label node node1 node-role.kubernetes.io/prometheus-
```

### 覆盖某个 node 的标签

```bash
kubectl label nodes node1 test=false --overwrite
```

### 查询某个 node 的标签

```bash
kubectl get nodes node1 node2 --show-labels
```

### 重启 pod

```bash
kubectl rollout restart deployment -n spark test 
kubectl delete pod -n spark test-67df54b9c5-ppwl5
```

### 从 pod 中拷贝文件

```bash
kubectl cp spark/test-67df54b9c5-ppwl5:/app/logs/flume-metrics.log ./

kubectl cp  ./test.sh spark/test-67df54b9c5-ppwl5:/app/logs/
```

### 回滚服务

```bash
# 查看服务版本
helm history -n spark test

# 回滚到 4 版本
helm rollback -n spark test 4
```

### 下线某个 node

```bash
# 标记 node 为不可调度
kubectl cordon node1

# 驱逐 node 上的 pod
kubectl drain node1 --ignore-daemonsets --delete-emptydir-data

# 删除 node 
kubectl delete node node1
```

或者使用 kubespary 中的下线功能

