简介这份《云计算运维学习路线及具体细节》文档面向希望系统入门或进阶云计算运维的学习者尤其适合备战技能竞赛、PaaS 方向及计划向 DevOps 转型的同学。内容从 Linux 目录结构与常用命令、Iptables、NTP、Nginx、MySQL 等基础服务讲起逐步延伸到 Shell 脚本自动化、数据库主从复制、LVS 与 Keepalive 高可用集群、RabbitMQ 集群、OpenStack 虚拟化、Ansible 自动化部署、Python 编程、Docker 容器化以及 Kubernetes 与 CICD 流程并配有阶段目标与考核任务便于按周推进学习。资源包共 1 个 docx 文件约 18KB以文字路线与要点整理为主结构清晰、便于打印或二次笔记。目前已有 1704 人学习下载适合需要明确学习顺序、对照实验目标查漏补缺的运维初学者与竞赛选手参考。1. 云计算运维学习路线到底怎么走从零基础到能扛生产环境的 6 个阶段很多人搜「云计算运维学习路线」收藏了几十份 PDF 和视频课结果半年过去还在虚拟机里敲ls。问题不在资料少而在路线是散的——今天学 Linux 命令明天看 Ansible后天又去折腾 K8s每块都摸了一下但串不成一条能干活的能力链。这篇把我自己从桌面运维转到云平台运维、再带过几个新人的路径完整拆开先立住 Linux 和网络这两条腿再上脚本和自动化然后进云平台和容器最后补监控与故障排查。适合两类人一是刚入行、只会重装系统和拉网线的桌面运维想往上走二是开发转运维、命令会用但不懂生产环境边界的。全程给命令、给参数、给踩坑点你照着敲就能复现不用先买课。2. 打地基Linux 与网络这两条腿必须先站稳云平台再花哨底层还是 Linux 主机加网络转发。这一层不牢后面学 Ansible、K8s 全是背命令出问题只能重启。我一般要求新人先做到能不看笔记完成用户权限、磁盘、进程、网络四类操作能说清一个 HTTP 请求从网卡进来到进程收到经过了什么。2.1 云计算运维必练的 Linux 命令分组别去背「Linux 常用命令大全」那种几百条清单按场景分组记才有效。下面这张表是我带人时直接发的每组挑 3 到 5 个练到肌肉记忆即可。场景核心命令关键参数与用途文件与权限ls, find, chmod, chownfind / -mtime -1找一天内改动chmod 750目录给属主全权、组读执行进程与资源ps, top, lsof, killlsof -i:8080查端口被谁占kill -15优雅退出别上来就 -9磁盘与文件系统df, du, mount, fdiskdu -sh *逐目录看占用df -h看挂载点是否满网络排查ss, ip, ping, curlss -tlnp看监听端口和进程curl -v看完整握手过程日志与文本tail, grep, awk, journalctljournalctl -u nginx --since 10 min ago看服务近期日志练的时候给自己造场景比如故意把某个目录权限改成 000再用 find 和 chmod 恢复故意起一个占 8080 的进程用 lsof 找出来杀掉。命令是死的排查思路是活的。2.2 用三条命令验证你的网络基础网络这块运维和网工的侧重点不同网工关心路由协议运维关心「服务通不通、慢在哪」。下面三条命令覆盖 80% 的日常判断。# 1. 看本机监听端口和对应进程确认服务真的起来了 ss -tlnp | grep -E :(80|443|3306) # 2. 从本机发起请求看 DNS 解析、TCP 连接、TLS 握手各阶段耗时 curl -o /dev/null -s -w dns:%{time_namelookup} conn:%{time_connect} tls:%{time_appconnect} total:%{time_total}\n https://example.com # 3. 追踪到目标的路由跳数判断是本地网络还是对端问题 traceroute -n -w 1 -q 1 10.0.0.1第一条ss -tlnp里-t是 TCP、-l是监听、-n不做域名解析、-p显示进程四个参数缺一个信息就不全。第二条 curl 的-w是自定义输出格式time_namelookup是 DNS 耗时如果它占了 total 的大头说明是 DNS 问题不是网络带宽问题。第三条-n不解析主机名、-w 1每跳等 1 秒、-q 1每跳只发一个包内网排查够用。这三条练熟你就能在别人还在「重启试试」的时候给出方向。2.3 从桌面运维转过来的第一个月怎么排桌面运维的日常是装系统、修打印机、配 IP这些经验有价值但不等于服务器运维。第一个月我建议这样排第 1 周只碰 Linux每天在虚拟机里做 5 个场景练习第 2 周补网络把上面三条命令在不同网络环境下各跑 20 次记录输出差异第 3 周学 shell 脚本把重复操作写成脚本第 4 周装一台最小化 CentOS 或 Ubuntu Server从零配好 SSH、防火墙、时间同步。这一个月不碰云平台地基没打完就上云等于在沙子上盖楼。3. 脚本与自动化把重复劳动交给 Ansible 和 Shell地基打完接下来要解决「一台台登上去敲命令」的问题。这一步是运维效率的分水岭会脚本的人管 10 台和管 100 台工作量差不多不会的人管 20 台就开始出错。Ansible 是当前最稳的入门选择无 agent、SSH 直连、YAML 描述学完能直接用在生产。3.1 Shell 脚本先解决三类重复活不用一上来写复杂脚本先把三类活自动化批量检查、批量清理、批量部署。下面这个巡检脚本是我常用的模板。#!/bin/bash # 批量巡检磁盘、内存、关键进程输出到统一日志 HOSTS(10.0.0.11 10.0.0.12 10.0.0.13) LOG/var/log/check_$(date %F).log for h in ${HOSTS[]}; do echo $h $LOG # 磁盘使用率超过 80% 的行 ssh $h df -h | awk NR1 \$5080 {print \$0} $LOG 21 # 内存剩余 ssh $h free -m | awk /Mem/{print \free_mb:\ \$4} $LOG 21 # 关键进程是否存在 ssh $h pgrep -x nginx /dev/null echo nginx:ok || echo nginx:down $LOG 21 done逻辑说明HOSTS数组存目标机for循环逐台 SSH 执行df那段用 awk 过滤使用率大于 80 的行\$50是把带百分号的字段转成数字比较pgrep -x精确匹配进程名避免匹配到同名子串。参数上date %F生成日期做日志名方便按天归档。这个脚本的边界是SSH 需要免密且目标机防火墙要放行如果机器上百台循环会慢那就该上 Ansible 了。3.2 Ansible 最小可用配置与第一个 playbookAnsible 的核心就三样inventory管哪些机器、module干什么、playbook怎么编排。先装再配。# 控制机安装以 CentOS 为例 yum install -y ansible # 配置免密把公钥推到所有被管机 ssh-keygen -t ed25519 -N -f ~/.ssh/id_ed25519 for ip in 10.0.0.11 10.0.0.12 10.0.0.13; do ssh-copy-id -i ~/.ssh/id_ed25519.pub root$ip done # 写 inventory cat /etc/ansible/hosts EOF [web] 10.0.0.11 10.0.0.12 [db] 10.0.0.13 EOF # 连通性测试 ansible all -m pingssh-keygen -t ed25519用更短更安全的密钥类型-N 表示空密码方便自动化生产环境建议加密码并用 ssh-agent。ansible all -m ping返回pong说明 SSH 和 Python 环境都通了这一步不通后面全白搭。# deploy_nginx.yml - hosts: web become: yes tasks: - name: 安装 nginx yum: name: nginx state: present - name: 启动并开机自启 service: name: nginx state: started enabled: yes - name: 放行 80 端口 firewalld: service: http permanent: yes state: enabled immediate: yesbecome: yes表示提权执行yum模块的state: present是确保安装不会重复装service模块同时管启动和自启firewalld模块的immediate: yes让规则立即生效而不用 reload。执行ansible-playbook deploy_nginx.yml即可。注意如果被管机是 Ubuntuyum要换成apt这是新手最常翻的车。3.3 自动化脚本的边界与幂等性自动化的价值在幂等——跑一次和跑十次结果一样。上面 playbook 里state: present和enabled: yes都是幂等的重复执行不会报错也不会重复装。但 shell 模块里的命令默认不幂等比如shell: useradd deploy跑第二次就报用户已存在。解决办法是用creates参数或改用专门的user模块。我见过有人用 shell 模块写了几百行部署脚本跑第二遍就炸这就是没理解幂等。记住能用模块就别用 shell非用不可就加条件判断。4. 进云平台从一台虚拟机到一套可交付环境脚本和 Ansible 解决的是「已有机器怎么管」云平台解决的是「机器从哪来、网络怎么划、资源怎么算钱」。这一步开始接触真正的云计算运维也是招聘里最看重的部分。4.1 云主机、VPC 与安全组的最小认知不管哪家云核心概念就几个云主机实例、VPC私有网络、子网、安全组、弹性 IP。我一般让新人先在控制台手动创建一套一个 VPC、两个子网一公一私、一台公网跳板机、一台私网应用机。手动走一遍再学 API 和 Terraform 才有体感。安全组是最容易出事的地方。默认拒绝所有入站你要显式放行。常见做法是跳板机只放行你的办公 IP 到 22 端口应用机只放行跳板机到 22 和应用端口。千万别图省事开0.0.0.0/0全放行我见过因为安全组全开被扫到挖矿的血泪经验。4.2 用 Terraform 描述一套可复现环境手动点控制台不可复现换个人就搭不出一样的。Terraform 用代码描述基础设施是云运维的必备技能。下面是最小示例以某主流云为例变量名按各家文档调整。# main.tf provider cloud { region cn-north-1 } resource cloud_vpc main { name ops-vpc cidr_block 10.0.0.0/16 } resource cloud_subnet public { name public-subnet vpc_id cloud_vpc.main.id cidr_block 10.0.1.0/24 } resource cloud_instance jump { name jump-host image_id img-xxxx instance_type s6.small subnet_id cloud_subnet.public.id security_groups [cloud_security_group.jump.id] }逻辑说明provider声明云厂商和区域resource块每块描述一个资源cloud_vpc.main.id是引用上面 VPC 的 IDTerraform 会自动处理依赖顺序。参数上cidr_block规划网段时留足余量/16的 VPC 能划 256 个/24子网。执行terraform init初始化、terraform plan预览、terraform apply创建。注意plan一定要看它会告诉你将要创建、修改、销毁哪些资源destroy是不可逆的生产环境务必加prevent_destroy。4.3 云上成本与权限的两个硬约束云运维和传统运维最大的区别是「资源即成本」。一台忘记关的测试机一个月可能烧掉几百块。我一般要求团队所有非生产资源打标签tag用标签做成本归集设置预算告警超过阈值发通知定期清理无主资源。权限上别用主账号 AK给每个服务建子账号按最小权限授权。这两条不是技术难点但出事往往就出在这。5. 容器与监控让服务跑得稳、看得见云主机管明白了下一步是容器化和可观测性。容器解决「环境不一致」监控解决「出事不知道」。这两块是云运维从「能跑」到「跑得稳」的关键。5.1 Docker 与 K8s 的学习顺序别一上来啃 K8s先把 Docker 用熟。Docker 的核心就三件事镜像、容器、网络。练到能写 Dockerfile、能映射端口、能挂载数据卷、能看日志再上 K8s。K8s 先学 Pod、Deployment、Service、ConfigMap 四个对象够跑一个无状态服务。下面是一个最小 Dockerfile。FROM openjdk:17-slim WORKDIR /app COPY target/app.jar app.jar EXPOSE 8080 ENTRYPOINT [java, -jar, app.jar]FROM选基础镜像slim版本体积小WORKDIR设工作目录COPY把构建产物拷进去EXPOSE声明端口只是文档作用实际映射靠-pENTRYPOINT用 exec 格式保证 Java 进程是 1 号进程能收到信号。构建docker build -t app:v1 .运行docker run -d -p 8080:8080 app:v1。注意镜像里别放密钥用环境变量或挂载注入。5.2 Prometheus Grafana 最小监控栈监控先解决「主机活着吗、资源够吗、服务通吗」三个问题。Prometheus 拉取指标Grafana 展示node_exporter 采集主机数据。# docker-compose.yml version: 3 services: prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - 9090:9090 grafana: image: grafana/grafana ports: - 3000:3000 node-exporter: image: prom/node-exporter ports: - 9100:9100配套的prometheus.yml里配scrape_configstargets 填各主机的IP:9100。启动后访问 9090 看 targets 是否 UP访问 3000 用 admin/admin 登录加数据源。参数上scrape_interval默认 15 秒机器多可调大到 30 秒减轻压力。这套栈跑起来你就能看到 CPU、内存、磁盘、网络的实时曲线比登上去敲 top 直观得多。5.3 告警规则别设太密新手常犯的错是把告警阈值设得很低结果一天几百条通知最后没人看。我一般只设三类告警磁盘超 85%、内存超 90% 持续 5 分钟、关键进程消失。告警要能对应动作收到就知道该干什么否则就是噪音。这条经验是用无数次半夜被误报吵醒换来的。6. 避坑与排查云计算运维新手最容易翻车的 5 个点这一章全是踩过的坑每条按「现象 → 原因 → 解决」写你对照自己的环境排查。坑一SSH 突然连不上重启也没用。现象是昨天还好好的今天ssh超时。原因多半是安全组规则被改、或者磁盘满了导致 sshd 无法写日志而拒绝连接。解决先从控制台 VNC 登录df -h看磁盘systemctl status sshd看服务再检查安全组。别急着重装系统。坑二Ansible 执行报「Missing sudo password」。现象是 playbook 里用了become: yes就报错。原因是被管机的 sudo 需要密码而 Ansible 没提供。解决要么在被管机配NOPASSWD要么执行时加-K交互输入密码。生产环境建议用专门的运维账号配好 sudo 免密。坑三容器里服务起不来日志却看不到。现象是docker ps显示容器秒退。原因是主进程前台运行失败容器没进程就退出。解决docker logs 容器ID看输出或者docker run -it --entrypoint sh 镜像进去手动跑命令定位。别用-d起一个注定失败的容器。坑四Terraform apply 把生产资源删了。现象是改了个配置apply 后线上机器没了。原因是改了资源名或 IDTerraform 认为旧的要销毁、新的要创建。解决生产资源加lifecycle { prevent_destroy true }apply 前必看 plan改配置尽量用terraform state mv而不是删了重建。坑五监控显示内存一直涨以为泄漏。现象是内存曲线只升不降。原因是 Linux 把空闲内存拿去做缓存buff/cache这是正常行为。解决看free -m的 available 列而不是 free 列available 才是真正可用的。别看到 cache 高就去重启服务。7. 进阶用一套可验证的练习项目把路线串起来学完上面六块怎么验证自己真的会了我的做法是给自己出一个综合题用 Terraform 创建一套 VPC 加三台机器用 Ansible 装好 Nginx 和 node_exporter用 Docker 跑一个应用用 Prometheus 监控全部节点最后写一个巡检脚本每天输出报告。这套做完云运维的主干能力就闭环了。具体验收标准我列成表你可以照着自测能力项验收标准常见失分点Linux不看笔记完成权限、磁盘、进程、网络排查只会 ls/cd不会 lsof/ss网络用 curl 分段耗时定位慢在哪只会 ping不会看握手脚本写出幂等的巡检和部署脚本脚本跑第二遍就报错Ansible用 playbook 完成装包、配置、启动全用 shell 模块云平台Terraform 可复现一套环境手动点控制台容器写 Dockerfile 并排错容器秒退不会看日志监控搭起 Prometheus 并配合理告警告警太密没人看这套练习的价值在于每一步都会逼你面对真实报错而报错才是最好的老师。我带过的新人里凡是把这套做完的面试时能讲清楚自己踩过什么坑、怎么解决的比背八股文管用得多。最后说个我自己的习惯每学一个新工具先问三个问题——它解决什么问题、它的边界在哪、它挂了怎么排查。这三个问题答不上来就说明还没真会。云计算运维这条路没有捷径但路线对了每一步都算数。希望帮到你。本文还有配套的精品资源点击获取