运维岗位完整学习指南:从 Linux 基础到 DevOps / SRE 实战

运维岗位完整学习指南:从 Linux 基础到 DevOps / SRE 实战

运维岗位完整学习指南:岗位职责、技能体系、工具详解、学习路线、项目实战与面试题 🛠️

适合人群:零基础想转运维、应届生准备系统运维/云运维/DevOps、已经会一点 Linux 但不知道下一步学什么的人。

文档目标:讲清楚 运维岗位到底做什么、需要掌握什么、学什么、用什么工具、怎么做项目、怎么准备面试 。

不绑定前端、不围绕开发岗位展开,重点讲真实企业运维、云运维、DevOps、SRE 常用能力。

目录

[1. 运维岗位是什么](#1. 运维岗位是什么)

[2. 运维岗位的发展方向](#2. 运维岗位的发展方向)

[3. 运维核心能力模型](#3. 运维核心能力模型)

[4. Linux 系统管理](#4. Linux 系统管理)

[5. 计算机网络与排障](#5. 计算机网络与排障)

[6. Web 服务与负载均衡](#6. Web 服务与负载均衡)

[7. 数据库与中间件运维](#7. 数据库与中间件运维)

[8. Shell 与 Python 自动化](#8. Shell 与 Python 自动化)

[9. Docker 容器运维](#9. Docker 容器运维)

[10. Kubernetes 云原生运维](#10. Kubernetes 云原生运维)

[11. 监控告警与可观测性](#11. 监控告警与可观测性)

[12. 日志系统与链路追踪](#12. 日志系统与链路追踪)

[13. CI/CD 与发布系统](#13. CI/CD 与发布系统)

[14. 自动化运维与 IaC](#14. 自动化运维与 IaC)

[15. 云平台运维](#15. 云平台运维)

[16. 安全运维](#16. 安全运维)

[17. 备份、容灾与高可用](#17. 备份、容灾与高可用)

[18. SRE 与稳定性工程](#18. SRE 与稳定性工程)

[19. 运维学习路线](#19. 运维学习路线)

[20. 运维实战项目](#20. 运维实战项目)

[21. 运维面试题与答案](#21. 运维面试题与答案)

[22. 官方文档与学习资源](#22. 官方文档与学习资源)

[23. 总结](#23. 总结)

1. 运维岗位是什么

运维,全称通常叫 IT Operations / System Operations / Infrastructure Operations,在公司里主要负责服务器、网络、系统、中间件、数据库、容器平台、发布流程、监控告警、安全加固、故障恢复等工作。

一句话理解:

运维的核心职责是 让系统稳定、安全、高效、可持续地运行。

运维不是简单地"重启服务器""装软件""看日志",而是要围绕以下目标工作:

核心目标

说明

稳定性

服务不能频繁宕机,系统要能长时间稳定运行

可用性

用户能够正常访问系统,核心服务不能随便不可用

可观测性

系统出问题时能通过监控、日志、链路追踪快速定位

自动化

减少手动操作,降低人为失误,提高效率

安全性

防止入侵、越权、数据泄露、恶意请求、漏洞攻击

可恢复性

出现故障后能够快速回滚、恢复、切换、备份还原

成本控制

云服务器、带宽、存储、数据库、监控资源不能浪费

2. 运维岗位的发展方向

运维岗位不是单一岗位,而是一组相关方向。不同公司叫法不一样,但能力有很多重叠。

2.1 系统运维

主要负责 Linux/Windows 服务器、系统服务、用户权限、磁盘、网络、进程、系统安全等。

需要重点掌握:

Linux 系统管理

用户、权限、进程、服务

磁盘、LVM、文件系统

Shell 脚本

系统日志

SSH 与安全加固

防火墙、安全组

常见服务部署

适合入门岗位:初级运维工程师、Linux 运维工程师、系统管理员。

2.2 网络运维

主要负责交换机、路由器、防火墙、VPN、DNS、负载均衡、机房网络、云网络等。

需要重点掌握:

TCP/IP

VLAN、子网、路由

DNS、HTTP、HTTPS

防火墙策略

VPN

CDN

SLB/CLB

网络抓包

网络故障定位

适合方向:网络工程师、网络运维、IDC 运维、云网络运维。

2.3 应用运维

主要负责业务应用的部署、发布、配置、日志、性能、监控、回滚、故障处理。

需要重点掌握:

Nginx / Apache

Tomcat / Java 应用部署

Node/PHP/Python/Go 服务部署基础

MySQL / Redis / MQ 基础

日志排查

监控告警

发布回滚

性能分析

适合方向:应用运维工程师、业务运维工程师、平台运维工程师。

2.4 数据库运维 DBA

主要负责数据库安装、备份、恢复、主从复制、高可用、性能优化、慢查询分析、容量规划。

需要重点掌握:

MySQL / PostgreSQL

Redis

MongoDB

Elasticsearch

数据备份与恢复

主从复制

高可用架构

SQL 优化

慢查询分析

数据安全

适合方向:数据库管理员 DBA、数据库运维工程师。

2.5 云运维

主要负责云服务器、云数据库、云网络、对象存储、负载均衡、CDN、云监控、安全组、权限等。

需要重点掌握:

ECS/CVM 云服务器

VPC 私有网络

安全组

SLB/CLB 负载均衡

RDS 云数据库

OSS/COS/S3 对象存储

CDN

云监控

IAM/RAM 权限

云安全

云成本优化

适合方向:云运维工程师、云平台运维、云计算工程师。

2.6 DevOps 工程师

DevOps 更偏向自动化、效率平台、CI/CD、容器化、基础设施即代码。

需要重点掌握:

Git

Jenkins / GitLab CI / GitHub Actions

Docker

Kubernetes

Helm

Harbor

Ansible

Terraform

Prometheus / Grafana

发布平台

自动化脚本

适合方向:DevOps 工程师、平台工程师、自动化运维工程师。

2.7 SRE 稳定性工程师

SRE 是 Site Reliability Engineering,站点可靠性工程。相比传统运维,SRE 更强调工程化、指标化、自动化、可靠性治理。

需要重点掌握:

SLI / SLO / SLA

错误预算

故障复盘

容量规划

限流、熔断、降级

灾备演练

混沌工程

可观测性

自动化恢复

高可用架构

适合方向:SRE 工程师、稳定性工程师、高级运维、基础架构工程师。

3. 运维核心能力模型

一个合格运维应该具备以下 8 类能力。

能力

初级要求

进阶要求

系统能力

会用 Linux 命令、管理服务

会内核参数、性能调优、系统安全

网络能力

会 ping、curl、DNS、端口排查

会抓包、负载均衡、网络架构设计

部署能力

会手动部署服务

会自动化发布、灰度、回滚

排障能力

能看日志定位常见问题

能定位复杂链路、性能瓶颈

监控能力

会看 CPU/内存/磁盘

会设计指标、告警、Dashboard

自动化能力

会写 Shell 脚本

会 Ansible、Python、Terraform

容器能力

会 Docker 基础命令

会 K8s、Helm、GitOps

安全能力

会改 SSH、防火墙

会漏洞修复、权限治理、审计

运维能力可以用一句话概括:

能部署、能监控、能排障、能自动化、能恢复、能优化。

4. Linux 系统管理

Linux 是运维的核心基础。无论是传统服务器、云服务器、Docker 宿主机还是 Kubernetes 节点,本质上都离不开 Linux。

4.1 Linux 发行版

常见发行版:

发行版

特点

企业常见度

CentOS

曾经非常流行,传统企业常见

老项目常见

Rocky Linux

CentOS 替代方案之一

新项目可选

AlmaLinux

CentOS 替代方案之一

新项目可选

Ubuntu Server

社区活跃,云平台常见

非常常见

Debian

稳定、轻量

常见

RHEL

Red Hat 企业版

大型企业常见

openEuler

国产服务器场景常见

国内政企常见

建议学习顺序:

text

复制代码

Ubuntu Server / Rocky Linux 二选一入门

→ 熟悉包管理、服务管理、日志管理

→ 再了解 RHEL/CentOS 系生态差异

4.2 Linux 文件目录结构

目录

作用

/bin

基础命令

/sbin

系统管理命令

/etc

配置文件目录

/var

日志、缓存、运行数据

/var/log

系统和服务日志

/usr

用户程序、库文件

/home

普通用户家目录

/root

root 用户家目录

/opt

第三方软件安装目录

/tmp

临时文件目录

/proc

内核和进程虚拟文件系统

/dev

设备文件

/mnt

临时挂载目录

排障时常看的目录:

bash

复制代码

/etc/nginx/ # Nginx 配置

/var/log/nginx/ # Nginx 日志

/etc/systemd/system/ # systemd 自定义服务

/var/log/messages # 系统日志,RHEL 系

/var/log/syslog # 系统日志,Debian/Ubuntu 系

/var/log/secure # 登录和认证日志,RHEL 系

/var/log/auth.log # 登录和认证日志,Ubuntu 系

4.3 Linux 必会命令

文件操作

bash

复制代码

ls -lh

cd /opt

pwd

cp a.txt b.txt

mv old.txt new.txt

rm -rf /tmp/test

mkdir -p /data/app

find /var/log -type f -name "*.log"

文本查看

bash

复制代码

cat file.log

less file.log

head -n 50 file.log

tail -n 100 file.log

tail -f app.log

grep "ERROR" app.log

grep -rn "timeout" /var/log/

文本处理

bash

复制代码

awk '{print $1}' access.log

sed -n '1,20p' app.log

sort access.log

uniq -c

cut -d ':' -f1 /etc/passwd

压缩解压

bash

复制代码

tar -czvf backup.tar.gz /data/www

tar -xzvf backup.tar.gz

zip -r backup.zip /data/www

unzip backup.zip

权限管理

bash

复制代码

chmod 755 script.sh

chmod 644 config.conf

chown nginx:nginx /data/www

usermod -aG wheel zhangsan

权限理解:

权限

数字

说明

r

4

w

2

x

1

执行

755

rwxr-xr-x

所有者可读写执行,其他人读执行

644

rw-r--r--

所有者可读写,其他人只读

600

rw-------

只有所有者可读写,常用于私钥

4.4 用户与权限

bash

复制代码

# 创建用户

useradd deploy

passwd deploy

# 创建用户组

groupadd devops

# 加入用户组

usermod -aG devops deploy

# 查看用户

id deploy

# 删除用户

userdel -r deploy

sudo 权限配置:

bash

复制代码

visudo

示例:

bash

复制代码

deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

意思是:deploy 用户可以免密执行重启 Nginx 的命令,但不能随意执行所有 root 命令。

4.5 进程管理

bash

复制代码

ps aux | grep nginx

top

htop

pidof nginx

kill -9 PID

pgrep java

常见排查思路:

text

复制代码

服务访问异常

→ 查看进程是否存在

→ 查看端口是否监听

→ 查看日志是否报错

→ 查看资源是否耗尽

→ 查看配置是否变更

4.6 systemd 服务管理

bash

复制代码

systemctl status nginx

systemctl start nginx

systemctl stop nginx

systemctl restart nginx

systemctl reload nginx

systemctl enable nginx

systemctl disable nginx

journalctl -u nginx -f

journalctl -xe

自定义 systemd 服务示例:

ini

复制代码

[Unit]

Description=My App Service

After=network.target

[Service]

User=deploy

WorkingDirectory=/opt/myapp

ExecStart=/usr/bin/java -jar /opt/myapp/app.jar

Restart=always

RestartSec=5

[Install]

WantedBy=multi-user.target

保存路径:

bash

复制代码

/etc/systemd/system/myapp.service

启用:

bash

复制代码

systemctl daemon-reload

systemctl enable myapp

systemctl start myapp

4.7 磁盘与文件系统

常用命令:

bash

复制代码

df -h # 查看磁盘空间

du -sh /var/log # 查看目录大小

lsblk # 查看磁盘结构

fdisk -l # 查看磁盘分区

mount # 查看挂载

mount /dev/sdb1 /data # 挂载磁盘

umount /data # 卸载磁盘

排查磁盘满:

bash

复制代码

# 查看哪个分区满了

df -h

# 找大目录

du -h --max-depth=1 / | sort -h

# 找大文件

find / -type f -size +500M 2>/dev/null

# 查看已删除但仍被进程占用的文件

lsof | grep deleted

常见磁盘满原因:

原因

处理方式

日志过大

日志切割、压缩、清理

Docker 日志过大

配置 log-driver 和 max-size

数据库 binlog 过多

设置过期时间,谨慎清理

临时文件过多

清理 /tmp、缓存目录

删除文件后空间未释放

查找 deleted 文件,重启对应进程

5. 计算机网络与排障

网络是运维排障的核心。很多线上问题表面是"网站打不开",实际可能是 DNS、证书、端口、防火墙、负载均衡、服务挂掉、后端超时、网络链路问题。

5.1 必学网络知识

知识点

必须掌握

IP 地址

公网 IP、内网 IP、IPv4、IPv6

子网掩码

/24、/16、CIDR

网关

出网入口

DNS

域名解析流程

TCP

三次握手、四次挥手、可靠传输

UDP

无连接、速度快、常用于 DNS/音视频

HTTP

请求方法、状态码、Header

HTTPS

TLS/SSL、证书、加密

CDN

缓存、回源、刷新、预热

NAT

内外网地址转换

负载均衡

四层、七层、轮询、权重、IP hash

5.2 常用网络命令

bash

复制代码

ping example.com

curl -I https://example.com

curl -v https://example.com

nslookup example.com

dig example.com

traceroute example.com

mtr example.com

ss -tunlp

netstat -tunlp

ip addr

ip route

telnet 1.1.1.1 443

nc -zv 1.1.1.1 443

tcpdump -i eth0 port 80

5.3 HTTP 状态码排障

状态码

含义

运维排查方向

200

正常

无需处理

301/302

重定向

检查 Nginx rewrite、HTTPS 跳转

400

请求错误

检查请求参数、Header、网关限制

401

未认证

检查认证配置

403

禁止访问

检查权限、目录权限、Nginx allow/deny

404

找不到资源

检查路径、路由、文件是否存在

413

请求体太大

调整 Nginx client_max_body_size

499

客户端断开

检查接口慢、用户取消请求、网络差

500

服务内部错误

查应用日志

502

网关错误

后端服务挂了、端口不通、代理配置错

503

服务不可用

后端过载、维护、限流

504

网关超时

后端处理慢、超时时间过短

5.4 网站打不开的标准排查流程

text

复制代码

1. 用户是否能解析域名?

nslookup domain.com

dig domain.com

2. 域名是否解析到正确 IP?

对比 DNS 记录和服务器公网 IP

3. 服务器是否能 ping 通?

ping server_ip

4. 端口是否开放?

nc -zv server_ip 80

nc -zv server_ip 443

5. 云安全组是否放行?

检查云平台安全组入方向规则

6. 服务器防火墙是否放行?

firewall-cmd --list-all

iptables -L -n

7. Nginx 是否启动?

systemctl status nginx

8. Nginx 配置是否正确?

nginx -t

9. 后端服务是否启动?

ps aux | grep app

ss -tunlp | grep 8080

10. 日志是否报错?

tail -f /var/log/nginx/error.log

tail -f app.log

6. Web 服务与负载均衡

6.1 Nginx 需要掌握什么

Nginx 是运维最常用的 Web 服务、反向代理和负载均衡组件之一。

必须掌握:

模块

内容

安装

yum/apt 安装、源码编译了解即可

配置结构

main、events、http、server、location

静态网站

root、index、try_files

反向代理

proxy_pass、proxy_set_header

负载均衡

upstream、weight、ip_hash

HTTPS

SSL 证书配置、强制跳转

日志

access.log、error.log、自定义 log_format

限流

limit_req、limit_conn

缓存

proxy_cache

压缩

gzip

重写

rewrite、return

安全

禁止访问隐藏文件、限制方法、隐藏版本号

6.2 Nginx 静态站点配置

nginx

复制代码

server {

listen 80;

server_name example.com;

root /data/www/example;

index index.html index.htm;

location / {

try_files $uri $uri/ /index.html;

}

access_log /var/log/nginx/example_access.log;

error_log /var/log/nginx/example_error.log;

}

6.3 Nginx 反向代理配置

nginx

复制代码

server {

listen 80;

server_name api.example.com;

location / {

proxy_pass http://127.0.0.1:8080;

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;

}

}

6.4 Nginx 负载均衡配置

nginx

复制代码

upstream app_backend {

server 10.0.0.11:8080 weight=3;

server 10.0.0.12:8080 weight=2;

server 10.0.0.13:8080 backup;

}

server {

listen 80;

server_name app.example.com;

location / {

proxy_pass http://app_backend;

}

}

常见负载均衡策略:

策略

说明

轮询

默认方式,请求依次转发

weight

权重越高,请求越多

ip_hash

同一 IP 尽量转发到同一后端

least_conn

优先转发到连接数少的节点

backup

主节点不可用时启用备用节点

6.5 HTTPS 配置

nginx

复制代码

server {

listen 443 ssl http2;

server_name example.com;

ssl_certificate /etc/nginx/ssl/example.com.pem;

ssl_certificate_key /etc/nginx/ssl/example.com.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;

location / {

proxy_pass http://127.0.0.1:8080;

}

}

server {

listen 80;

server_name example.com;

return 301 https://$host$request_uri;

}

7. 数据库与中间件运维

运维不一定要成为 DBA,但必须会部署、备份、恢复、监控和基础排障。

7.1 MySQL 运维

必须掌握:

模块

内容

安装部署

yum/apt/docker 安装

用户权限

创建用户、授权、回收权限

数据备份

mysqldump、物理备份了解

数据恢复

导入 SQL、指定库恢复

主从复制

binlog、relay log、GTID

慢查询

slow query log、explain

性能指标

QPS、TPS、连接数、锁等待

安全

禁止 root 远程、强密码、最小权限

常用命令:

sql

复制代码

-- 查看数据库

SHOW DATABASES;

-- 查看用户

SELECT user, host FROM mysql.user;

-- 创建用户

CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPassword';

-- 授权

GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'%';

-- 刷新权限

FLUSH PRIVILEGES;

-- 查看连接数

SHOW STATUS LIKE 'Threads_connected';

-- 查看慢查询是否开启

SHOW VARIABLES LIKE 'slow_query_log';

备份恢复:

bash

复制代码

# 备份单库

mysqldump -uroot -p appdb > appdb_$(date +%F).sql

# 备份所有库

mysqldump -uroot -p --all-databases > all_$(date +%F).sql

# 恢复

mysql -uroot -p appdb < appdb_2026-06-08.sql

7.2 Redis 运维

必须掌握:

模块

内容

数据结构

string、hash、list、set、zset

持久化

RDB、AOF

主从复制

master/replica

高可用

Sentinel

集群

Redis Cluster

内存管理

maxmemory、淘汰策略

安全

requirepass、bind、防火墙

监控

connected_clients、used_memory、ops

常用命令:

bash

复制代码

redis-cli ping

redis-cli info

redis-cli info memory

redis-cli info replication

redis-cli config get maxmemory

redis-cli slowlog get 10

重点指标:

指标

说明

used_memory

Redis 使用内存

connected_clients

当前客户端连接数

instantaneous_ops_per_sec

每秒操作数

keyspace_hits / misses

缓存命中与未命中

rejected_connections

被拒绝连接数

expired_keys

过期 key 数量

evicted_keys

被淘汰 key 数量

7.3 消息队列

常见消息队列:

工具

场景

RabbitMQ

传统业务异步、可靠投递

Kafka

日志、流式数据、高吞吐

RocketMQ

电商、金融、事务消息

运维需要关注:

队列堆积

消费者是否存活

消息重试

死信队列

磁盘占用

Broker 状态

集群副本

消息丢失风险

7.4 Elasticsearch 运维

需要掌握:

集群健康:green/yellow/red

index、shard、replica

mapping

查询性能

JVM 内存

磁盘水位

快照备份

ILM 生命周期管理

常用命令:

bash

复制代码

curl http://localhost:9200/_cluster/health?pretty

curl http://localhost:9200/_cat/indices?v

curl http://localhost:9200/_cat/nodes?v

curl http://localhost:9200/_cat/shards?v

8. Shell 与 Python 自动化

运维如果只会手动操作,很难成长。自动化是运维进阶的关键。

8.1 Shell 必学内容

内容

说明

变量

保存路径、服务名、日期等

参数

$1、$2、$@

条件判断

if、case

循环

for、while

函数

封装重复逻辑

文本处理

grep、awk、sed

定时任务

crontab

日志输出

标准输出、错误输出

退出码

$?

8.2 Shell 巡检脚本示例

bash

复制代码

#!/bin/bash

DATE=$(date +%F_%H-%M-%S)

REPORT="/tmp/server_check_$DATE.txt"

{

echo "===== 服务器巡检报告 ====="

echo "时间: $(date)"

echo

echo "===== 主机名 ====="

hostname

echo

echo "===== 系统版本 ====="

cat /etc/os-release | head -n 5

echo

echo "===== CPU 负载 ====="

uptime

echo

echo "===== 内存使用 ====="

free -h

echo

echo "===== 磁盘使用 ====="

df -h

echo

echo "===== 端口监听 ====="

ss -tunlp

echo

echo "===== 最近登录 ====="

last -n 5

} > "$REPORT"

echo "巡检完成:$REPORT"

8.3 磁盘告警脚本

bash

复制代码

#!/bin/bash

THRESHOLD=80

USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

if [ "$USAGE" -ge "$THRESHOLD" ]; then

echo "警告:根分区磁盘使用率 ${USAGE}%,超过 ${THRESHOLD}%"

else

echo "正常:根分区磁盘使用率 ${USAGE}%"

fi

8.4 Python 运维自动化

Python 适合做:

批量 SSH 管理

调用云平台 API

巡检报表

日志分析

自动化平台后端

监控数据处理

告警消息发送

常用库:

用途

os / sys

系统操作

subprocess

执行系统命令

requests

调用 HTTP API

paramiko

SSH 自动化

fabric

批量远程执行

pandas

处理巡检表格

schedule

简单定时任务

fastapi

写运维平台接口

9. Docker 容器运维

Docker 是现代运维必须掌握的基础技能。它解决了"环境不一致、部署复杂、依赖冲突"的问题。

9.1 Docker 核心概念

概念

说明

Image 镜像

应用运行环境模板

Container 容器

镜像运行后的实例

Dockerfile

构建镜像的说明文件

Registry

镜像仓库

Volume

数据持久化

Network

容器网络

Compose

多容器编排工具

9.2 Docker 常用命令

bash

复制代码

# 查看版本

docker version

# 查看镜像

docker images

# 查看运行中容器

docker ps

# 查看所有容器

docker ps -a

# 启动 Nginx 容器

docker run -d --name nginx-demo -p 80:80 nginx

# 查看日志

docker logs -f nginx-demo

# 进入容器

docker exec -it nginx-demo bash

# 停止容器

docker stop nginx-demo

# 删除容器

docker rm nginx-demo

# 删除镜像

docker rmi nginx

9.3 Dockerfile 示例

dockerfile

复制代码

FROM openjdk:17-jdk-slim

WORKDIR /app

COPY app.jar /app/app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "app.jar"]

构建和运行:

bash

复制代码

docker build -t myapp:1.0 .

docker run -d --name myapp -p 8080:8080 myapp:1.0

9.4 docker-compose 示例

yaml

复制代码

version: "3.8"

services:

nginx:

image: nginx:latest

ports:

- "80:80"

volumes:

- ./nginx.conf:/etc/nginx/nginx.conf

depends_on:

- app

app:

image: myapp:1.0

ports:

- "8080:8080"

environment:

- SPRING_PROFILES_ACTIVE=prod

redis:

image: redis:7

ports:

- "6379:6379"

启动:

bash

复制代码

docker compose up -d

docker compose ps

docker compose logs -f

docker compose down

9.5 Docker 常见故障

问题

排查方式

容器启动失败

docker logs 容器名

端口冲突

ss -tunlp 查看端口占用

容器访问不了外网

检查 Docker 网络、DNS、防火墙

数据丢失

是否使用 volume 持久化

镜像过大

多阶段构建、减少依赖、清理缓存

日志过大

配置 Docker 日志大小限制

Docker 日志限制示例:

json

复制代码

{

"log-driver": "json-file",

"log-opts": {

"max-size": "100m",

"max-file": "3"

}

}

路径:

bash

复制代码

/etc/docker/daemon.json

10. Kubernetes 云原生运维

Kubernetes,简称 K8s,是容器编排系统,用于管理大规模容器应用。

10.1 为什么要学 Kubernetes

Docker 能运行单个容器,但企业线上环境通常需要:

多个服务

多台机器

自动重启

自动扩容

服务发现

配置管理

灰度发布

负载均衡

存储挂载

权限控制

集群调度

这些就是 Kubernetes 解决的问题。

10.2 K8s 核心组件

组件

作用

kube-apiserver

集群 API 入口

etcd

保存集群状态数据

scheduler

调度 Pod 到节点

controller-manager

维护集群期望状态

kubelet

节点代理,管理 Pod

kube-proxy

服务转发

container runtime

容器运行时,如 containerd

10.3 K8s 核心资源

资源

作用

Pod

最小运行单元

Deployment

无状态应用部署

StatefulSet

有状态应用部署

DaemonSet

每个节点运行一个 Pod

Job

一次性任务

CronJob

定时任务

Service

服务访问入口

Ingress

HTTP/HTTPS 路由入口

ConfigMap

普通配置

Secret

敏感配置

PV/PVC

持久化存储

Namespace

资源隔离

RBAC

权限控制

HPA

自动扩缩容

10.4 kubectl 常用命令

bash

复制代码

kubectl get nodes

kubectl get pods -A

kubectl get svc -A

kubectl get deploy -A

kubectl describe pod pod-name

kubectl logs -f pod-name

kubectl exec -it pod-name -- bash

kubectl apply -f deployment.yaml

kubectl delete -f deployment.yaml

kubectl rollout status deployment myapp

kubectl rollout history deployment myapp

kubectl rollout undo deployment myapp

10.5 Deployment 示例

yaml

复制代码

apiVersion: apps/v1

kind: Deployment

metadata:

name: myapp

labels:

app: myapp

spec:

replicas: 3

selector:

matchLabels:

app: myapp

template:

metadata:

labels:

app: myapp

spec:

containers:

- name: myapp

image: myapp:1.0

ports:

- containerPort: 8080

resources:

requests:

cpu: "100m"

memory: "128Mi"

limits:

cpu: "500m"

memory: "512Mi"

10.6 Service 示例

yaml

复制代码

apiVersion: v1

kind: Service

metadata:

name: myapp-service

spec:

selector:

app: myapp

ports:

- protocol: TCP

port: 80

targetPort: 8080

type: ClusterIP

10.7 Ingress 示例

yaml

复制代码

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: myapp-ingress

spec:

rules:

- host: myapp.example.com

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: myapp-service

port:

number: 80

10.8 K8s 常见故障排查

Pod 一直 Pending

可能原因:

节点资源不足

节点不可调度

PVC 没绑定

镜像拉取配置问题

nodeSelector / taint 不匹配

排查命令:

bash

复制代码

kubectl describe pod pod-name

kubectl get nodes

kubectl describe node node-name

Pod CrashLoopBackOff

可能原因:

应用启动报错

配置文件错误

依赖服务不可用

健康检查配置错误

资源限制过小导致 OOM

排查命令:

bash

复制代码

kubectl logs pod-name

kubectl logs pod-name --previous

kubectl describe pod pod-name

ImagePullBackOff

可能原因:

镜像名错误

tag 不存在

私有仓库认证失败

节点无法访问镜像仓库

排查:

bash

复制代码

kubectl describe pod pod-name

Node NotReady

可能原因:

kubelet 异常

容器运行时异常

节点资源耗尽

网络插件异常

节点与 apiserver 通信异常

排查:

bash

复制代码

systemctl status kubelet

journalctl -u kubelet -f

kubectl describe node node-name

11. 监控告警与可观测性

监控不是"装个面板"那么简单,真正的监控要解决三个问题:

text

复制代码

1. 出问题能及时发现

2. 出问题能快速定位

3. 出问题能量化影响范围

11.1 监控体系分层

层级

监控内容

基础设施层

CPU、内存、磁盘、网络、负载

系统服务层

Nginx、MySQL、Redis、Kafka

容器层

Docker、containerd、Pod、Node

应用层

QPS、错误率、响应时间、线程、JVM

业务层

登录数、订单数、支付成功率、转化率

用户体验层

页面打开速度、接口耗时、错误提示

11.2 Prometheus 技术栈

组件

作用

Prometheus Server

采集和存储指标

Exporter

暴露指标

Node Exporter

Linux 主机指标

Blackbox Exporter

HTTP/TCP/ICMP 探测

cAdvisor

容器指标

Alertmanager

告警分组、静默、发送

Grafana

可视化 Dashboard

11.3 常见监控指标

Linux 主机

指标

告警建议

CPU 使用率

连续 5 分钟超过 80%

内存使用率

连续 5 分钟超过 85%

磁盘使用率

超过 80% 提醒,超过 90% 严重

磁盘 IO

await、util 过高

网络流量

异常突增或丢包

Load Average

超过 CPU 核心数较多

Web 服务

指标

说明

QPS

每秒请求数

4xx 比例

客户端错误比例

5xx 比例

服务端错误比例

P95 响应时间

95% 请求的耗时

活跃连接数

并发连接情况

MySQL

指标

说明

Threads_connected

当前连接数

Slow_queries

慢查询数量

Queries

查询总数

Innodb_buffer_pool_hit_rate

缓存命中率

Seconds_Behind_Master

主从延迟

Redis

指标

说明

used_memory

内存占用

connected_clients

客户端连接

evicted_keys

淘汰 key

keyspace_hits/misses

缓存命中率

ops_per_sec

每秒操作数

11.4 Prometheus 告警规则示例

yaml

复制代码

groups:

- name: node-alerts

rules:

- alert: HostHighCpuUsage

expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80

for: 5m

labels:

severity: warning

annotations:

summary: "主机 CPU 使用率过高"

description: "{{ $labels.instance }} CPU 使用率超过 80%"

- alert: HostDiskWillFull

expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) * 100 < 15

for: 5m

labels:

severity: critical

annotations:

summary: "磁盘空间不足"

description: "{{ $labels.instance }} 磁盘可用空间低于 15%"

12. 日志系统与链路追踪

日志是排障的第一现场。监控告诉你"出问题了",日志告诉你"为什么出问题"。

12.1 日志分类

日志类型

示例

系统日志

syslog、messages、secure、auth.log

Web 日志

Nginx access.log、error.log

应用日志

app.log、error.log

数据库日志

MySQL error log、slow log、binlog

容器日志

Docker json log、K8s pod log

安全日志

登录失败、sudo 操作、异常 IP

12.2 ELK / EFK

组件

作用

Elasticsearch

存储和搜索日志

Logstash

日志清洗和转换

Kibana

日志查询和可视化

Filebeat

轻量级日志采集

Fluent Bit

云原生日志采集

ELK 常见流程:

text

复制代码

应用日志

→ Filebeat / Fluent Bit

→ Logstash / Kafka

→ Elasticsearch

→ Kibana 查询分析

12.3 Loki 日志体系

Loki 是 Grafana 生态常见日志系统,适合和 Prometheus/Grafana 搭配。

常见流程:

text

复制代码

应用日志

→ Promtail / Fluent Bit

→ Loki

→ Grafana 查询

适合场景:

中小规模日志系统

K8s 日志采集

希望和 Grafana 统一展示

不需要复杂全文检索

12.4 链路追踪

链路追踪用于排查微服务调用链问题。

常见工具:

工具

说明

Jaeger

开源分布式追踪系统

Zipkin

经典链路追踪工具

SkyWalking

国产常见 APM 工具

OpenTelemetry

统一可观测性标准

链路追踪能解决:

请求经过了哪些服务

哪个服务耗时最高

哪个接口报错

调用链是否断裂

微服务之间依赖关系

13. CI/CD 与发布系统

CI/CD 是 DevOps 的核心能力。

13.1 CI/CD 是什么

名称

含义

CI

Continuous Integration,持续集成

CD

Continuous Delivery / Deployment,持续交付/持续部署

标准流程:

text

复制代码

提交代码

→ 触发流水线

→ 拉取代码

→ 安装依赖

→ 编译构建

→ 单元测试

→ 构建镜像

→ 推送镜像仓库

→ 部署测试环境

→ 人工审批

→ 部署生产环境

→ 健康检查

→ 失败回滚

13.2 Jenkins

Jenkins 是传统企业常用 CI/CD 工具。

需要掌握:

Jenkins 安装

插件管理

凭据管理

Pipeline

Jenkinsfile

参数化构建

Webhook 触发

构建日志查看

权限控制

节点管理

Jenkinsfile 示例:

groovy

复制代码

pipeline {

agent any

stages {

stage('Checkout') {

steps {

git 'https://example.com/repo.git'

}

}

stage('Build') {

steps {

sh 'mvn clean package -DskipTests'

}

}

stage('Docker Build') {

steps {

sh 'docker build -t myapp:${BUILD_NUMBER} .'

}

}

stage('Deploy') {

steps {

sh 'docker stop myapp || true'

sh 'docker rm myapp || true'

sh 'docker run -d --name myapp -p 8080:8080 myapp:${BUILD_NUMBER}'

}

}

}

}

13.3 GitLab CI

.gitlab-ci.yml 示例:

yaml

复制代码

stages:

- build

- docker

- deploy

build-job:

stage: build

script:

- echo "build app"

- mvn clean package -DskipTests

docker-job:

stage: docker

script:

- docker build -t registry.example.com/myapp:$CI_COMMIT_SHORT_SHA .

- docker push registry.example.com/myapp:$CI_COMMIT_SHORT_SHA

deploy-job:

stage: deploy

script:

- kubectl set image deployment/myapp myapp=registry.example.com/myapp:$CI_COMMIT_SHORT_SHA

only:

- main

13.4 发布策略

策略

说明

优点

缺点

停机发布

停服务后更新

简单

有停机时间

滚动发布

分批替换实例

平滑

版本并存

蓝绿发布

两套环境切换

回滚快

成本高

灰度发布

小流量验证

风险低

实现复杂

金丝雀发布

少量实例新版本

可控

需要监控支持

14. 自动化运维与 IaC

14.1 Ansible

Ansible 用于批量管理服务器、批量安装软件、批量修改配置、批量部署服务。

核心概念:

概念

说明

Control Node

控制节点

Managed Node

被管理节点

Inventory

主机清单

Module

模块

Playbook

自动化剧本

Role

角色化组织

Inventory 示例:

ini

复制代码

[webservers]

10.0.0.11

10.0.0.12

[dbservers]

10.0.0.21

Playbook 示例:

yaml

复制代码

- hosts: webservers

become: yes

tasks:

- name: Install nginx

yum:

name: nginx

state: present

- name: Start nginx

service:

name: nginx

state: started

enabled: yes

14.2 Terraform

Terraform 是基础设施即代码工具,用代码创建和管理云资源。

适合管理:

云服务器

VPC

子网

安全组

负载均衡

RDS

OSS/S3

DNS

Kubernetes 集群

Terraform 示例:

hcl

复制代码

provider "aws" {

region = "ap-east-1"

}

resource "aws_instance" "web" {

ami = "ami-xxxxxxxx"

instance_type = "t3.micro"

tags = {

Name = "web-server"

}

}

常用命令:

bash

复制代码

terraform init

terraform plan

terraform apply

terraform destroy

15. 云平台运维

现代运维必须熟悉至少一个云平台。

15.1 云平台核心产品

产品

说明

ECS/CVM

云服务器

VPC

私有网络

Subnet

子网

Security Group

安全组

SLB/CLB

负载均衡

RDS

云数据库

Redis 云版

托管缓存

OSS/COS/S3

对象存储

CDN

内容分发

WAF

Web 防火墙

NAT Gateway

NAT 网关

Cloud Monitor

云监控

IAM/RAM

权限管理

15.2 云运维必须会的操作

购买云服务器

配置安全组

配置 SSH 登录

挂载数据盘

创建快照

创建负载均衡

绑定域名

配置 HTTPS 证书

使用对象存储

配置 CDN

配置云监控告警

配置 RAM/IAM 子账号权限

做云资源成本分析

15.3 云服务器安全组规则建议

端口

是否开放

说明

22

限制 IP 开放

SSH,不建议 0.0.0.0/0 长期开

80

对公网开放

HTTP

443

对公网开放

HTTPS

3306

不建议公网开放

MySQL

6379

不建议公网开放

Redis

9200

不建议公网开放

Elasticsearch

8080

按需开放

应用服务端口,建议走 Nginx 代理

16. 安全运维

安全是运维必须重视的底线。很多事故不是技术难,而是权限没管好、端口乱开、密码太弱、备份没有加密。

16.1 Linux 安全加固

禁止 root 直接 SSH 登录

修改默认 SSH 端口,或限制来源 IP

使用密钥登录

配置 sudo 最小权限

定期更新系统补丁

关闭不用的服务

配置防火墙

设置密码复杂度

定期审计登录日志

重要目录限制权限

SSH 配置示例:

bash

复制代码

vim /etc/ssh/sshd_config

text

复制代码

PermitRootLogin no

PasswordAuthentication no

Port 2222

重启 SSH:

bash

复制代码

systemctl restart sshd

16.2 防火墙

firewalld:

bash

复制代码

firewall-cmd --state

firewall-cmd --list-all

firewall-cmd --add-service=http --permanent

firewall-cmd --add-service=https --permanent

firewall-cmd --reload

iptables:

bash

复制代码

iptables -L -n

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

16.3 常见安全风险

风险

说明

解决方式

弱密码

容易被爆破

强密码、密钥登录、MFA

端口暴露

数据库暴露公网

安全组限制、内网访问

权限过大

普通用户拥有 root 权限

最小权限原则

证书过期

HTTPS 访问异常

自动续期监控

依赖漏洞

组件版本过旧

定期升级、漏洞扫描

日志泄露

日志包含密码/token

敏感信息脱敏

备份泄露

备份文件公网可下载

权限控制、加密存储

17. 备份、容灾与高可用

17.1 备份策略

备份不是"复制一份文件"这么简单,需要考虑:

维度

说明

备份对象

数据库、文件、配置、镜像、证书

备份频率

每小时、每天、每周

备份类型

全量、增量、差异

备份位置

本机、异地、对象存储

保留周期

保留 7 天、30 天、180 天

恢复演练

定期测试能否恢复

加密

防止备份泄露

17.2 重要指标:RTO 和 RPO

指标

含义

举例

RTO

恢复时间目标

故障后 30 分钟内恢复

RPO

恢复点目标

最多丢失 5 分钟数据

简单理解:

text

复制代码

RTO:最多能停多久

RPO:最多能丢多少数据

17.3 高可用方案

层级

方案

Web 层

Nginx 多节点 + 负载均衡

应用层

多实例部署、滚动发布

数据库

主从、MGR、PXC、云 RDS 高可用

Redis

Sentinel、Cluster

存储

对象存储、多副本

机房

多可用区、多地域容灾

18. SRE 与稳定性工程

SRE 是运维的高阶方向,强调用软件工程方法解决运维稳定性问题。

18.1 SRE 核心概念

概念

说明

SLA

对客户承诺的服务可用性

SLO

内部设定的服务目标

SLI

衡量服务质量的指标

错误预算

允许失败的空间

MTTR

平均恢复时间

MTBF

平均故障间隔时间

Postmortem

故障复盘

18.2 常见 SLI

服务类型

SLI 示例

Web 服务

请求成功率、P95 延迟、5xx 比例

数据库

查询延迟、连接成功率、复制延迟

消息队列

消费延迟、积压量、投递成功率

存储服务

读写成功率、读写延迟

18.3 故障处理流程

text

复制代码

1. 发现告警

2. 确认影响范围

3. 判断故障等级

4. 快速止血

5. 通知相关人员

6. 定位根因

7. 修复问题

8. 验证恢复

9. 补充监控

10. 故障复盘

18.4 故障复盘模板

markdown

复制代码

# 故障复盘报告

## 1. 故障概述

- 故障时间:

- 影响业务:

- 影响用户:

- 故障等级:

## 2. 时间线

- 10:00 监控告警

- 10:03 运维确认

- 10:10 定位到数据库连接数耗尽

- 10:20 临时扩容连接池

- 10:30 服务恢复

## 3. 根因分析

## 4. 处理过程

## 5. 暴露问题

## 6. 改进措施

## 7. 责任人与截止时间

19. 运维学习路线

19.1 第一阶段:Linux 与网络基础,1~2 个月

目标:能独立管理一台 Linux 服务器。

学习内容:

Linux 基础命令

文件权限

用户和用户组

systemd 服务管理

crontab 定时任务

SSH

防火墙

磁盘管理

日志查看

TCP/IP、HTTP、DNS、HTTPS

实战:

安装 Linux 虚拟机

创建用户并配置 sudo

部署 Nginx 静态网站

配置 SSH 密钥登录

配置防火墙

写磁盘巡检脚本

19.2 第二阶段:服务部署与中间件,2~4 个月

目标:能部署常见 Web 服务、数据库和缓存。

学习内容:

Nginx 反向代理

HTTPS 配置

MySQL 安装、授权、备份恢复

Redis 安装和持久化

日志切割

supervisor/systemd 管理应用

rsync 文件同步

实战:

Nginx 反代后端应用

MySQL 自动备份脚本

Redis 持久化配置

日志自动切割

服务异常自动重启

19.3 第三阶段:Docker 与自动化,4~6 个月

目标:能用容器部署服务,能写自动化脚本。

学习内容:

Docker 镜像和容器

Dockerfile

Docker Compose

Harbor 镜像仓库

Shell 自动化

Python 自动化

Ansible 入门

实战:

Docker 部署 Nginx/MySQL/Redis

编写 Dockerfile

docker-compose 部署多服务

Ansible 批量安装 Nginx

Python 批量巡检服务器

19.4 第四阶段:监控、日志、CI/CD,6~8 个月

目标:能搭建企业基础运维体系。

学习内容:

Prometheus

Grafana

Alertmanager

ELK / Loki

Jenkins / GitLab CI

发布回滚

灰度发布

告警通知

实战:

Prometheus 监控 Linux

Grafana 制作大盘

Alertmanager 配置告警

ELK 收集 Nginx 日志

Jenkins 自动发布应用

19.5 第五阶段:Kubernetes 与云原生,8~12 个月

目标:具备中高级运维/DevOps 能力。

学习内容:

Kubernetes 架构

Pod、Deployment、Service、Ingress

ConfigMap、Secret、PVC

Helm

HPA

K8s 监控和日志

Argo CD

Terraform

云平台资源管理

实战:

搭建 K8s 测试集群

部署应用到 K8s

配置 Ingress 域名访问

Helm 部署 Prometheus

Argo CD 实现 GitOps 发布

Terraform 创建云服务器

20. 运维实战项目

项目 1:Linux 服务器初始化脚本

目标:一键完成服务器基础配置。

功能:

创建 deploy 用户

配置 SSH 安全

安装常用工具

配置时区

配置防火墙

配置系统参数

创建目录结构

技能点:Linux、Shell、安全加固。

项目 2:Nginx + HTTPS + 负载均衡

目标:搭建可用于生产的 Web 入口。

功能:

多域名配置

HTTPS 证书

HTTP 强制跳转 HTTPS

反向代理

多后端负载均衡

访问日志

错误日志

限流配置

技能点:Nginx、HTTPS、负载均衡、日志。

项目 3:MySQL 自动备份与恢复

目标:建立数据库备份机制。

功能:

每天凌晨自动备份

备份文件压缩

保留最近 7 天

上传对象存储

恢复演练

备份失败告警

技能点:MySQL、Shell、crontab、对象存储。

项目 4:Docker Compose 部署中间件环境

目标:快速搭建测试环境。

服务:

Nginx

MySQL

Redis

RabbitMQ

Elasticsearch

Kibana

技能点:Docker、Compose、Volume、Network。

项目 5:Prometheus + Grafana 监控系统

目标:搭建基础监控体系。

功能:

监控 Linux 主机

监控 Nginx

监控 MySQL

监控 Redis

配置 Grafana 面板

配置告警规则

告警发送到企业微信/飞书/钉钉

技能点:Prometheus、Grafana、Alertmanager、Exporter。

项目 6:Jenkins 自动化发布系统

目标:实现代码提交后自动构建和部署。

流程:

text

复制代码

Git 提交

→ Webhook 触发 Jenkins

→ 拉取代码

→ 构建应用

→ 构建 Docker 镜像

→ 推送 Harbor

→ 远程部署

→ 健康检查

→ 失败回滚

技能点:Git、Jenkins、Docker、Harbor、Shell。

项目 7:Kubernetes 应用部署平台

目标:掌握云原生部署。

内容:

Deployment

Service

Ingress

ConfigMap

Secret

PVC

HPA

Helm

Prometheus 监控

技能点:Kubernetes、Helm、云原生运维。

项目 8:Ansible 批量运维平台

目标:实现批量配置和批量部署。

内容:

批量安装 Nginx

批量修改配置

批量重启服务

批量创建用户

批量巡检服务器

技能点:Ansible、Inventory、Playbook、Role。

项目 9:Terraform 管理云资源

目标:通过代码管理云服务器和网络。

内容:

创建 VPC

创建子网

创建安全组

创建云服务器

创建负载均衡

输出公网 IP

技能点:Terraform、IaC、云平台。

项目 10:故障演练与复盘体系

目标:提升真实排障能力。

演练场景:

CPU 打满

磁盘写满

Nginx 配置错误

MySQL 连接数耗尽

Redis 内存耗尽

Docker 容器异常退出

K8s Pod CrashLoopBackOff

证书过期

DNS 解析错误

技能点:监控、日志、应急响应、复盘。

21. 运维面试题与答案

21.1 Linux 面试题

1. 如何查看服务器 CPU、内存、磁盘?

答:

bash

复制代码

top

free -h

df -h

du -sh /var/log

vmstat 1

iostat -x 1

top 查看 CPU 和进程,free -h 查看内存,df -h 查看磁盘分区,du -sh 查看目录大小。

2. Linux 负载 load average 是什么?

答:

Load average 表示系统运行队列和不可中断状态任务的平均数量。一般可以和 CPU 核心数对比:

4 核机器 load 长期小于 4,通常较正常

4 核机器 load 长期大于 8,可能存在压力

需要结合 CPU、IO、进程状态一起看

3. 如何排查磁盘满?

答:

bash

复制代码

df -h

du -h --max-depth=1 / | sort -h

find / -type f -size +500M 2>/dev/null

lsof | grep deleted

先看哪个分区满,再定位大目录、大文件。如果文件已删除但空间未释放,检查是否被进程占用。

4. chmod 755 是什么意思?

答:

755 表示:

所有者:7 = 读 + 写 + 执行

所属组:5 = 读 + 执行

其他人:5 = 读 + 执行

适合目录和可执行脚本。

5. 软链接和硬链接区别?

答:

类型

说明

软链接

类似快捷方式,指向路径,源文件删除后可能失效

硬链接

指向同一个 inode,源文件删除后数据仍可访问

命令:

bash

复制代码

ln source hard_link

ln -s source soft_link

21.2 网络面试题

1. TCP 三次握手是什么?

答:

text

复制代码

1. 客户端发送 SYN

2. 服务端返回 SYN + ACK

3. 客户端返回 ACK

目的是确认双方收发能力正常,建立可靠连接。

2. HTTP 和 HTTPS 区别?

答:

对比

HTTP

HTTPS

默认端口

80

443

加密

不加密

TLS/SSL 加密

安全性

明文传输

防窃听、防篡改

证书

不需要

需要证书

3. 502 和 504 有什么区别?

答:

502:网关从上游服务收到无效响应,常见于后端服务挂了、端口不通、Nginx 代理配置错误。

504:网关等待上游服务超时,常见于后端处理太慢、数据库慢、超时时间过短。

4. 如何判断端口是否通?

答:

bash

复制代码

nc -zv ip 端口

telnet ip 端口

curl -v http://ip:port

ss -tunlp | grep 端口

从客户端测连通性,从服务端看端口是否监听。

21.3 Nginx 面试题

1. Nginx 有哪些作用?

答:

静态 Web 服务

反向代理

负载均衡

HTTPS 终止

限流

缓存

URL 重写

TCP/UDP 代理

2. Nginx 修改配置后怎么检查和重载?

答:

bash

复制代码

nginx -t

systemctl reload nginx

先检查配置语法,确认无误后 reload,避免直接 restart 造成服务中断。

3. Nginx 如何配置上传文件大小?

答:

nginx

复制代码

client_max_body_size 100m;

可以放在 http、server 或 location 中。

21.4 MySQL 面试题

1. MySQL 如何备份和恢复?

答:

bash

复制代码

mysqldump -uroot -p appdb > appdb.sql

mysql -uroot -p appdb < appdb.sql

生产环境还需要考虑锁表、数据量、binlog、备份一致性和恢复演练。

2. 什么是慢查询?

答:

慢查询是执行时间超过阈值的 SQL。通过 slow query log 记录,用于分析 SQL 性能问题。

sql

复制代码

SHOW VARIABLES LIKE 'slow_query_log';

SHOW VARIABLES LIKE 'long_query_time';

21.5 Docker 面试题

1. 镜像和容器区别?

答:

镜像是静态模板

容器是镜像运行后的实例

类似:镜像是"安装包",容器是"运行中的程序"。

2. Docker 数据如何持久化?

答:

使用 volume 或 bind mount。

bash

复制代码

docker run -d -v /data/mysql:/var/lib/mysql mysql:8

3. 容器启动失败怎么排查?

答:

bash

复制代码

docker ps -a

docker logs 容器名

docker inspect 容器名

重点看启动命令、环境变量、端口、挂载目录、应用日志。

21.6 Kubernetes 面试题

1. Pod 是什么?

答:

Pod 是 Kubernetes 中最小调度单元,一个 Pod 可以包含一个或多个容器,共享网络和存储。

2. Deployment 和 StatefulSet 区别?

答:

资源

适用场景

Deployment

无状态应用,如 Web 服务

StatefulSet

有状态应用,如数据库、Zookeeper

StatefulSet 有稳定的网络标识和存储。

3. Pod CrashLoopBackOff 怎么排查?

答:

bash

复制代码

kubectl describe pod pod-name

kubectl logs pod-name

kubectl logs pod-name --previous

常见原因:应用启动报错、配置错误、依赖不可用、健康检查失败、资源不足。

21.7 监控面试题

1. Prometheus 的工作原理是什么?

答:

Prometheus 通过 pull 模式定期从目标服务抓取 metrics,存储为时间序列数据,通过 PromQL 查询,并可结合 Alertmanager 发送告警。

2. 告警太多怎么办?

答:

告警分级

告警收敛

设置合理 for 时间

去掉无意义告警

增加告警抑制

按业务影响设计告警

避免单纯瞬时抖动触发

21.8 DevOps 面试题

1. 什么是 CI/CD?

答:

CI 是持续集成,CD 是持续交付/持续部署。核心是通过自动化流水线完成构建、测试、部署、回滚,提高发布效率和稳定性。

2. 蓝绿发布和灰度发布区别?

答:

发布方式

说明

蓝绿发布

两套完整环境,切换流量

灰度发布

部分用户或少量流量先用新版本

蓝绿回滚快但成本高;灰度风险低但实现复杂。

22. 官方文档与学习资源

22.1 Linux / 系统管理

Linux Foundation LFCS 官方认证

Red Hat RHCSA 官方认证

Ubuntu Server 官方文档

Debian 管理员手册

Arch Wiki

22.2 网络 / Web 服务

Nginx 官方文档

Nginx Admin Guide

Cloudflare DNS 文档

Mozilla HTTP 文档

Let's Encrypt 文档

22.3 数据库与中间件

MySQL 官方文档

MySQL Backup and Recovery

Redis 官方文档

Redis Persistence

RabbitMQ 官方文档

Apache Kafka 官方文档

Elasticsearch 官方文档

22.4 Docker / Kubernetes

Docker 官方文档

Docker Get Started

Dockerfile Reference

Kubernetes 官方文档

Kubernetes Concepts

Helm 官方文档

CNCF CKA 认证

22.5 监控 / 日志 / 可观测性

Prometheus 官方文档

Grafana 官方文档

Grafana Alerting

Alertmanager 文档

Elastic Observability

Grafana Loki 文档

OpenTelemetry 官方文档

Jaeger 官方文档

22.6 CI/CD / DevOps / 自动化

Jenkins 官方文档

Jenkins Pipeline 文档

GitLab CI/CD 官方文档

GitHub Actions 文档

Argo CD 官方文档

Ansible 官方文档

Terraform 官方文档

22.7 云平台文档

阿里云文档

腾讯云文档

华为云文档

AWS 文档

Microsoft Azure 文档

Google Cloud 文档

22.8 安全运维

OWASP 官方网站

OWASP Top 10

OpenSSH 文档

Fail2ban 官方文档

23. 总结

运维岗位的学习不能只背命令,而要围绕真实工作能力构建:

text

复制代码

Linux 基础

→ 网络排障

→ Web 服务

→ 数据库与中间件

→ Shell/Python 自动化

→ Docker 容器

→ 监控告警

→ 日志系统

→ CI/CD

→ Ansible/Terraform

→ Kubernetes

→ 云平台

→ 安全运维

→ SRE 稳定性工程

入门阶段重点不要贪多,建议优先学:

Linux 命令和系统管理

网络基础和 HTTP/HTTPS

Nginx

MySQL / Redis 基础

Shell 脚本

Docker

Prometheus + Grafana

Jenkins / GitLab CI

Ansible

Kubernetes

最终目标不是"会用工具",而是:

出问题能发现,发现后能定位,定位后能恢复,恢复后能复盘,复盘后能自动化防止再次发生。

这才是真正企业需要的运维能力。 🚀

相关推荐

完美世界边荒的真相是什么
365bet.com官网

完美世界边荒的真相是什么

📅 08-08 👁️ 8533
我的世界1.17蝾螈生物详解 生物位置及驯服方法一览[多图]
碱烧伤怎么处理
365bet.com官网

碱烧伤怎么处理

📅 06-21 👁️ 8955
暗黑破坏神3魔女位置攻略暗黑三魔女随从装备在哪弄
bt365手机官方网址

暗黑破坏神3魔女位置攻略暗黑三魔女随从装备在哪弄

📅 07-04 👁️ 1185
微信没声音了怎么设置回来?微信无声?几步解决恢复声音提醒
剑侠情缘3职业介绍?哪个职业最适合我?
365bet.com官网

剑侠情缘3职业介绍?哪个职业最适合我?

📅 07-09 👁️ 2404