Commands —— K8s + AI Infra 训练营随手运维命令手册
写这套文档的背景:作为一名应用开发,运维命令我大部分只是"听过"或者"复制粘贴跑过一次",没真正理解过。这个手册不是 cheatsheet,而是把每个命令当成一个独立小课题来讲清楚 ——
每篇统一结构:
- 一句话定义 —— 这命令到底是干嘛的
- 典型场景 —— 在 14 天训练营哪一天、哪一步用到
- 基础用法 —— 最常用的 3-5 个调用方式
- 核心参数 —— 不是全部参数,是"会反复用到的"
- 进阶 / 真实场景 —— 把命令嵌进真实工作流
- 踩坑 / 排错 —— 这才是写这个手册的真正动机
- 关联命令 —— 它和谁配合用、谁能替代它
阅读路线
完全没用过运维命令 → 按 P0 的顺序通读,先建立"装机一台机器要走哪些步骤"的直觉。
会用但不深 → 按章节挑感兴趣的看,重点看「踩坑」段。
只想速查语法 → 不推荐看本手册,去 tldr.sh 或 man <cmd>。本手册的价值在原理和踩坑。
命令清单
状态说明:✅ 已完成 / 📝 计划中 / 🔄 待扩展
P0 · SSH 与远程执行(装机第一关)
| 命令 | 状态 | 说明 |
|---|---|---|
| ssh | ✅ | SSH 客户端:登录、单次命令、heredoc 远程执行、端口转发 |
| ssh-config | ✅ | ~/.ssh/config:把"怎么连"压缩成别名(远不只是 /etc/hosts) |
| ssh-keygen | ✅ | 公私钥对生成、ssh-copy-id 推送、known_hosts 维护 |
| sshd | ✅ | 服务端 sshd_config / sshd_config.d override / sshd -t 语法验证 |
| sshpass | ✅ | 密码登录自动化(仅限"首次推 key"场景) |
| scp / rsync | ✅ | 远程拷贝:scp 简单 / rsync 增量 / --delete / 路径末尾 / 经典坑 |
P0 · 系统状态与诊断(拿到机器先跑这些)
| 命令 | 状态 | 说明 |
|---|---|---|
| systemd-detect-virt | ✅ | 检测虚拟化类型,排除 LXC 套娃 |
| lsblk / df / du | ✅ | 磁盘真实拓扑 vs 已挂载用量 vs 目录占用 |
| ss / netstat | ✅ | 看监听端口(ss 已经替代 netstat) |
| systemctl | ✅ | 服务启停、enabled 状态、list-unit-files |
| journalctl | ✅ | 看 systemd 日志,按服务、按时间、跟随 |
| hostnamectl / timedatectl | ✅ | 改主机名 + 时区 / NTP 设置 |
P1 · 磁盘 / 存储
| 命令 | 状态 | 说明 |
|---|---|---|
| mount / umount | ✅ | 挂载文件系统 / bind mount / lazy umount / K8s 视角 |
| mkfs | ✅ | 格式化 ext4 / xfs / 不可逆警告 / tune2fs |
| fstab | ✅ | 持久挂载 / UUID / nofail 救命 / 救援模式 |
| parted / fdisk | ✅ | 分区表 GPT/MBR / 在线扩分区 / growpart |
P1 · 文本与文件批处理
| 命令 | 状态 | 说明 |
|---|---|---|
| grep | ✅ | 文本搜索:-F -x -q -r 真实含义 |
| sed | ✅ | 流编辑:-i 原地修改、s/// 替换、地址范围 |
| awk | ✅ | 字段处理 / 简单脚本 |
| jq | ✅ | JSON 处理(kubectl/curl 输出必备) |
| find | ✅ | 按名/时间/大小/权限找文件 + -exec / -delete |
| xargs | ✅ | 把 stdin 喂给下一个命令 + -P 并行 |
| tee | ✅ | 一边输出一边写文件 + sudo tee 写权限 |
P1 · 网络诊断
| 命令 | 状态 | 说明 |
|---|---|---|
| curl | ✅ | HTTP 客户端的瑞士军刀 |
| ip | ✅ | 看路由、IP、网卡(替代 ifconfig/route) + 进 pod netns |
| iptables | ✅ | kube-proxy 规则解读 / NAT 表 / DNAT 链 / 排错套路 |
| tcpdump | ✅ | 抓包:按接口、按主机、按端口 / pod netns 抓 |
| dig | ✅ | DNS 解析查询 + CoreDNS 排错 |
| mtr | ✅ | traceroute + ping 合体 / 路径丢包 |
| iperf3 | ✅ | 跨节点带宽测试 / -P 并行流 / UDP 丢包 / CNI 对比 |
P1 · 进程与资源
| 命令 | 状态 | 说明 |
|---|---|---|
| ps | ✅ | 进程快照 / 自定义列 / 进程树 / 找 K8s 容器进程 |
| top / htop | ✅ | 实时资源监控 / 解读 us/sy/wa/st / batch 模式 |
| lsof | ✅ | "谁在用这个文件/端口" / deleted 文件 / umount busy |
| strace | ✅ | 系统调用追踪 / 应用卡死排查 / 性能开销警告 |
| dmesg | ✅ | 内核环形缓冲日志 / OOM / 硬件错误 / journalctl -k 对比 |
P1 · 内核与模块
| 命令 | 状态 | 说明 |
|---|---|---|
| modprobe / lsmod | ✅ | 内核模块装载(K8s br_netfilter/overlay/ip_vs) + modules-load.d |
| sysctl | ✅ | 内核参数 / K8s 必调清单 / 大集群高并发调优 |
P2 · 包管理 / 时间
| 命令 | 状态 | 说明 |
|---|---|---|
| apt / apt-get / dpkg | ✅ | Ubuntu 包管理 / apt-mark hold / 源管理 / 升级套路 |
| chrony / chronyc | ✅ | NTP 同步 / tracking / sources / 内网部署 / K8s 时钟敏感 |
P2 · K8s / 容器工具链
| 命令 | 状态 | 说明 |
|---|---|---|
| kubectl | ✅ | 看资源、调试 Pod、apply、port-forward、exec、jsonpath |
| kubeadm | ✅ | init/join/reset/token/证书续期/upgrade/HA 控制面 |
| helm | ✅ | Chart 安装、values、template、upgrade、rollback |
| crictl | ✅ | 容器运行时命令行(kubelet 找不到镜像/容器没起时排错) |
| etcdctl | ✅ | etcd 直连:snapshot 备份恢复 / endpoint health / TLS 参数 |
| docker | ✅ | 单机容器、构建镜像、多阶段、buildx、和 containerd 区别 |
P2 · 开发 / 构建
| 命令 | 状态 | 说明 |
|---|---|---|
| git | ✅ | 运维视角 / GitOps / stash / reflog 救命 / rebase |
| make / Makefile | ✅ | 任务编排 / K8s 项目入口 Makefile 模板 |
| openssl | ✅ | 证书 / 私钥 / s_client / 自签 CA / K8s PKI 排错 |
P2 · 监控 / GitOps / 备份
| 命令 | 状态 | 说明 |
|---|---|---|
| argocd | ✅ | GitOps CLI / app sync / repo / 跨集群部署 |
| velero | ✅ | K8s 备份恢复 / 定时 / 跨集群迁移 / 和 etcdctl 区别 |
| prometheus / promtool | ✅ | PromQL / targets / check rules / curl API |
| cilium / hubble | ✅ | eBPF CNI / connectivity test / hubble observe / kubeProxyReplacement |
| grafana / grafana-cli | ✅ | plugin / 重置密码 / provisioning / HTTP API |
| alertmanager / amtool | ✅ | silence / 路由测试 / 配置验证 / HA gossip |
P2 · 终端 / 工作流
| 命令 | 状态 | 说明 |
|---|---|---|
| tmux | ✅ | 长跑任务不掉线;多窗格协同;detach + attach |
| vim | ✅ | 远端必备最小集 / 三种模式 / 救命退出 |
| cron / crontab | ✅ | 定时任务 / 5 字段 / 与 systemd timer 对比 |
关于这套文档的风格
- 不写
man翻译。man全 + 全英 + 反人类,重写一遍没意义。 - 每个 example 都是真实跑过的命令。不写造的语法。
- 重点是"为什么",不是"是什么"。
ssh -i ~/.ssh/id_rsa这种你早晚自己会查;但"为什么 IdentityFile 在 config 里写了还要IdentitiesOnly yes"这种坑必须有人提醒。 - 每篇控制在 300 行内。超过就说明分得不够细,该拆。