运维工程师(游戏运维/云原生运维)174道面试题

1、什么是运维?什么是游戏运维?

运维:保障业务软硬件稳定上线、持续可靠运行,覆盖网络、系统、数据库、安全、监控、自动化、故障处置,细分DBA、Web、虚拟化、游戏运维等。
游戏运维一般分三类:

  1. 开发运维:自研运维平台、自动化工具,支撑业务交付;
  2. 应用运维(业务运维):游戏开服、版本发布、线上故障排查、监控告警、玩家侧业务问题;
  3. 系统运维:提供底层基础设施,服务器、网络、存储、监控、硬件支撑。

总结:开发运维、系统运维提供工具+基础设施,支撑应用运维做业务交付,三者闭环协作。

2、运营人员做什么(游戏行业)

游戏运营核心:排期开服、导量、活动、付费运营;对接渠道、投放、策划;跟踪留存、ARPU等数据;协调运维、策划、客服处理线上活动与玩家问题。

3、300台服务器如何管理

  1. 跳板机+权限管控,统一入口、审计登录;
  2. 自动化批量管理:Ansible/Saltstack/Puppet,统一配置分发、批量执行;
  3. CMDB资源台账:记录服务器IP、业务、配置、硬件、负责人;
  4. 配套监控、告警、日志集中收集。

4、简述 RAID0 / RAID1 / RAID5 原理与特点

  • RAID0(条带):数据分散并行写入多块盘,读写性能最高;无冗余,任意一块盘损坏全部数据丢失,适合临时/非核心缓存。
  • RAID1(镜像):两块盘互为完整副本,读性能提升、写不变;容量=单盘大小,100%冗余,成本高,适合系统盘、核心数据库。
  • RAID5(分布式奇偶校验):≥3块盘,校验信息分散在所有盘;最多坏1块盘可恢复;读性能较好、写性能偏弱;容量=(n-1)*单盘容量,业务常用。

选型参考:系统盘RAID1;数据库主库优先RAID10;Web/非核心业务RAID5。

5、LVS、Nginx、HAProxy区别&选型

  • LVS四层(传输层)内核负载均衡,基于IP+端口转发;性能极强,但不能基于URL/目录路由
  • Nginx七层为主(HTTP/HTTPS),Web服务、反向代理、缓存;可按域名、URL、目录分流;健康检查偏被动。
  • HAProxy四层+七层双支持,专业代理;支持TCP(MySQL读负载)+HTTP;原生主动URL健康检查、会话保持策略丰富

✅ 选型:

  • 超大并发、TCP通用流量 → LVS+Keepalived
  • 中小型Web、需要灵活HTTP路由 → HAProxy
  • Web静态服务、动静分离、简单反向代理 → Nginx

6、Squid、Varnish、Nginx缓存区别&选型

  • Nginx:Web服务器,缓存靠第三方模块,适合静态资源,不算专业Cache。
  • Varnish:专业高性能内存缓存,适合图片/页面缓存;支持批量精准清缓存,性能优于Squid;受内存容量限制。
  • Squid:成熟老牌专业缓存,生态丰富,适合代理+缓存混合场景。

✅ 选型:专业CDN/页面静态缓存优先 Varnish / Squid;简单静态资源加速可用Nginx。

7、Tomcat 和 Resin 区别&选型

两者都是Java Servlet容器。

  • Tomcat:社区大、文档多、兼容性好,稳定性优秀;性能中等;中小企业、通用Java项目首选。
  • Resin:性能更强,适合高并发Java服务;社区和文档偏少;大厂高吞吐业务会选用。

8、什么是中间件?什么是JDK?

中间件:独立服务软件,位于操作系统之上,屏蔽底层差异,用于分布式系统之间通信、资源共享;如消息队列、Web容器、分布式配置中心。
JDK:Java开发工具包,提供编译、调试、运行Java程序的整套环境,包含JRE、编译器、工具。

9、Tomcat 8005、8009、8080端口

  • 8005:Shutdown端口,接收关闭指令
  • 8009:AJP端口,Apache等Web服务器通过AJP协议和Tomcat通信
  • 8080:默认HTTP业务访问端口

10、CDN是什么

内容分发网络,在互联网边缘部署节点,静态资源(图片、包、JS/CSS)缓存到就近边缘节点;用户就近访问,降低源站压力、减少延迟、抗DDoS。

11、灰度发布

灰度(金丝雀):平滑上线方案,小流量新版本、大部分旧版本并行(A/B测试属于灰度);观察指标、告警、错误率,确认稳定后逐步全量切流;控制故障爆炸半径,保障整体稳定。

12、DNS解析流程(www.baidu.com)

  1. 查本机hosts → 本地DNS缓存;
  2. 没有则请求resolv.conf里的本地DNS;
  3. 本地DNS无缓存,递归查询根DNS → 根返回.com顶级域地址;
  4. 访问.com顶级域 → 返回baidu.com权威DNS;
  5. 访问baidu权威DNS,拿到www.baidu.com A记录;
  6. 逐级回传缓存,返回客户端IP。

13、RabbitMQ

消息队列中间件,异步解耦、削峰;生产者投递消息入队列,消费者消费;消息可持久化、确认机制,保障异步场景可靠投递。

14、Keepalived工作原理

基于VRRP虚拟路由冗余协议,主备节点组成VRRP组,对外共享VIP虚拟IP

  • Master持续发送VRRP通告;Backup只监听;
  • Backup收不到通告,按优先级重新选举新Master,VIP漂移,实现秒级故障转移;
  • 内置健康检查,可主动剔除故障节点。

15、LVS三种模式 VS/NAT、VS/TUN、VS/DR

  1. VS-NAT:请求、回包全部经过LVS;DNAT改写目的IP,RS网关指向LVS;优点:RS任意OS、支持端口映射;缺点:流量瓶颈,适合小规模集群。
  2. VS-TUN(IP隧道):LVS封装新IP头转发;RS解包处理,响应包直接回客户端,不经过LB;可跨网段、跨机房;要求RS支持IP隧道协议。
  3. VS-DR(直接路由,最常用):只修改二层MAC地址,IP不变;RS配置同VIP在lo网卡、抑制ARP;回包直出客户端,性能最高;限制:LB和RS同广播域(同交换机)。

16、MySQL Innodb锁排查 & 主从复制延迟优化

Innodb锁问题定位

show engine innodb status;

information_schema三张锁表:
innodb_trx(事务)、innodb_locks(当前锁)、innodb_lock_waits(锁等待),定位死锁、行锁等待。

主从延迟优化

  1. 硬件:从库CPU/IO不弱于主库;
  2. 复制:开启并行复制
  3. SQL:优化慢SQL、大事务、大批量DDL;
  4. 架构:读写分离,从库分摊读压力;
  5. 参数调优:从库放宽刷盘策略(sync_binlog=0innodb_flush_log_at_trx_commit=2);
  6. 网络:降低跨机房网络抖动,合理设置slave-net-timeout

17、重置MySQL root密码

✅ 已知旧密码:

mysqladmin -uroot -p password "新密码"
# 或sql内
update mysql.user set authentication_string=password('xxx') where user='root';
flush privileges;

✅ 忘记密码(安全模式):

systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -uroot
update mysql.user set authentication_string=password('xxx') where user='root';
flush privileges;

8.0+不再支持password()函数,改用alter user root@localhost identified by 'xxx';

18、LVS/Nginx/HAProxy优缺点(精简版,同第5题扩展)

Nginx
✅优点:七层灵活、域名/URL路由、配置简单、自带Web、静态性能好、日志完善
❌缺点:仅HTTP/HTTPS、健康检查被动、会话保持依赖ip_hash

LVS
✅优点:四层内核转发、性能极高、低消耗、支持TCP全协议、无流量瓶颈(DR/TUN)
❌缺点:不能七层URL路由、配置复杂、无原生应用层健康检查

HAProxy
✅优点:4+7层、丰富负载算法、主动URL健康检查、session/cookie会话保持、支持MySQL TCP负载、内置统计页面
❌缺点:七层性能弱于LVS

19、MySQL备份工具

  1. mysqldump:逻辑备份,适合中小库;支持InnoDB热备,结合binlog做时间点恢复;大数据量慢。
  2. xtrabackup(Percona):InnoDB物理热备,全量+增量,适合大库,生产主流。
  3. LVM快照:物理快照,快速,但需要停机/锁表配合。

20、Keepalived模块+健康检查

三大模块:

  1. core:主进程、配置解析、全局管理
  2. vrrp:实现VRRP协议、主备VIP漂移
  3. check:后端健康检测(TCP端口、HTTP_GET脚本等)

健康检查:ICMP ping、TCP端口探测、HTTP状态码校验,失败则降权/剔除节点。

21、Nginx日志统计TOP10访问IP

awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -10

22、tcpdump抓192.168.1.1:80并保存

tcpdump 'host 192.168.1.1 and port 80' -w tcpdump.log

23、本机192.168.2.1:80转发到8080(iptables DNAT)

iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:8080

24、RAID0/1/5(同第4题,略)

25、对运维工程师的理解

运维核心目标:保障业务稳定、高可用、低成本交付;风险前置、自动化、监控告警、故障快速止血;一个小失误可能造成线上资损,要求严谨、复盘意识、故障处置能力。

26、实时抓TCP 80端口流量

tcpdump -nn tcp port 80

27、服务器开不了机排查步骤(标准流水线)

  1. 硬件:电源、指示灯、风扇、硬盘RAID告警;
  2. BIOS:能否进BIOS,识别内存、硬盘;
  3. 引导:MBR/GRUB、系统盘是否为第一启动项;
  4. 内核:能否加载内核、是否内核panic;
  5. 系统:单用户模式、文件系统fsck、磁盘满、挂载异常;
  6. 日志:/var/log/messages、dmesg查看报错。

28、Linux中毒怎么处理

  1. 先隔离:断外网,保留现场;
  2. 定位:top/ps/iftop/netstat/lsof,找异常进程、异常外联;
  3. 溯源:查找恶意文件、计划任务、开机自启项;
  4. 清除:删除恶意程序、清理定时任务;
  5. 核验:检查后门、ssh密钥;

高危/无法彻底清理,备份业务数据后重装系统

29、病毒删了自动重建

说明存在父守护进程持续生成恶意文件;
流程:隔离外网 → lsof/pstree定位父PID → 先kill父进程 → 删除恶意二进制、定时任务、自启项;必要时chattr锁定关键目录。

30、OSI七层模型

  1. 物理层:信号、介质、网线
  2. 数据链路层:MAC、帧、ARP
  3. 网络层:IP、路由、ICMP
  4. 传输层:TCP/UDP、端口
  5. 会话层:会话建立管理(TCP已融合)
  6. 表示层:编码、加密、压缩
  7. 应用层:HTTP/DNS/FTP/SMTP,面向用户/业务

31、常用Nginx模块

  • rewrite:URL重写、跳转
  • access:IP访问控制
  • ssl:HTTPS加密
  • gzip:压缩传输
  • proxy:反向代理
  • upstream:负载均衡后端集群
  • ngx_cache_purge:手动清理缓存

32、Web负载架构组件

LVS、Nginx、HAProxy、Keepalived

33、查看HTTP并发与TCP连接状态

netstat -an | awk '/^tcp/{++S[$NF]} END{for(a in S) print a,S[a]}'
# 或新版ss
ss -ant | awk '{++S[$2]} END{for(a in S) print a,S[a]}'

调大文件句柄:/etc/security/limits.conf nofile

34、tcpdump抓80,统计访问源IPTOP

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | head -20

35、脚本扫描192.168.1.0/24存活IP

#!/bin/bash
for ip in {1..254}
do
{
ping -c1 -W1 192.168.1.$ip >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "192.168.1.$ip UP"
fi
}&
done
wait

36、Apache日志只保留最近7天

find /app/logs -name "*.log" -type f -mtime +7 -delete
# 或 -exec rm -f {} \;
# 最佳方案:logrotate 日志轮转,自动切割+过期删除

37、Linux系统优化(精简)

  1. 禁止root直接SSH登录、修改SSH端口、sudo最小权限;
  2. 时间同步chrony/ntp;国内yum源;
  3. 按需关闭SELinux、防火墙策略收紧;
  4. 调高nofile文件句柄;
  5. 精简开机自启服务;
  6. /etc/sysctl.conf内核参数优化(tcp、内存、连接);
  7. 锁定关键系统文件,隐藏版本信息。

38、取出eth0 IP(cut/awk/sed)

# cut
ifconfig eth0 | sed -n '2p' | cut -d: -f2 | cut -d' ' -f1
# awk
ifconfig eth0 | awk 'NR==2' | awk -F'[: ]+' '{print $4}'
# sed
ifconfig eth0 | sed -n '/inet addr/p' | sed -r 's#^.*addr:(.*) Bc.*#\1#'

注:CentOS7+推荐ip a替代ifconfig

39、Shell快捷键

  • Ctrl+a 行首|Ctrl+e 行尾
  • Ctrl+c 终止|Ctrl+d 退出
  • Ctrl+l 清屏
  • Ctrl+u 剪切光标前|Ctrl+k剪切光标后|Ctrl+y粘贴
  • Ctrl+r 搜索历史命令
  • Tab补全|Ctrl+Shift+C/V 复制粘贴

40、每晚0点打包/var/www/html到/data,带时间戳

# 脚本backup.sh
#!/bin/bash
tar zcf /data/html-$(date +%Y%m%d).tar.gz /var/www/html
# crontab -e
0 0 * * * /bin/bash /root/backup.sh

41、Linux挂载Windows共享CIFS

mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=123456

42、同33题(TCP连接统计,略)

43、同34题(tcpdump统计80访问IP,略)

44、统计/var/log下普通文件总数

ls -lR /var/log | grep "^-" | wc -l
# 推荐find(更稳定)
find /var/log -type f | wc -l

45、统计每个客户端IP连接数

netstat -an | awk '/tcp/{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr

46、生成32位随机密码写入/pass

head -c32 /dev/urandom | base64 | head -c32 > /pass
# 原md5版本
cat /dev/urandom | head -1 | md5sum | head -c32 >> /pass

47、Apache access.log访问TOP5 IP

awk '{print $1}' access_log | sort | uniq -c | sort -rn | head -5

48、查看二进制文件

hexdump -C file,十六进制+ASCII对照查看

49、ps aux VSZ、RSS

  • VSZ:虚拟内存大小(包含共享库、swap、未提交内存)
  • RSS:常驻内存,进程实际占用物理内存

50、检测修复分区/dev/hda5

⚠️ 必须卸载分区再fsck,不能挂载修复!

umount /dev/hda5
fsck /dev/hda5

51、Linux开机顺序

BIOS → MBR → BootLoader(GRUB) → 加载内核 → systemd(旧init)→ 挂载文件系统、启动服务 → rc.local → 登录

52、软链接vs硬链接

  • 硬链接 ln f1 f2:inode相同;不可跨分区;删除源文件不影响;不能链接目录
  • 软链接 ln -s f1 f2:类似快捷方式,inode不同;可跨分区、支持目录;源文件删除则失效

53、备份磁盘MBR分区表

dd if=/dev/sda of=./mbr.bak bs=512 count=1

54、vim基础操作(命令模式)

  • yy复制行,p粘贴
  • dd删除单行,dG删除全文
  • :90 跳至90行
  • /关键词 向下搜索,n下一处

55、手动安装grub

grub-install /dev/sda

56、取出aaa.txt 4~7行

sed -n '4,7p' aaa.txt
# 或者awk
awk 'NR>=4&&NR<=7' aaa.txt

57、当前目录所有txt

find ./ -name "*.txt"

58、/usr下大于1M文件

find /usr -type f -size +1M
# 旧写法 +1024k
find /usr -type f -size +1024k

59、定时5点~8点执行任务

# 分钟 小时 日 月 周
0 5-8 * * * /usr/bin/backup

60、MySQL主从复制原理

  1. Master写操作写入binlog
  2. Master binlog dump线程推送binlog给从库
  3. Slave IO线程接收binlog,写入relay log
  4. Slave SQL线程重放relay log,同步数据

61、vim三种模式

命令模式、输入(编辑)模式、末行模式

62、DNS解析流程(同12题,略)

63、DNS递归查询 & 迭代查询

  • 递归:本地DNS替客户端查到底,直接返回最终结果
  • 迭代:DNS服务器返回下一级服务器地址,由客户端继续查询

64、正向代理 & 反向代理

正向代理:代理客户端,比如翻墙代理;服务端不知道真实访客
反向代理:代理后端服务,用户访问代理,代理转发后端集群;用户无感知后端多台服务器(Nginx/LVS都属于反向代理)

65、etcd简介&特点

分布式强一致KV存储,Go开发,基于Raft;
特点:REST API、HTTPS安全、高性能、Raft保证一致性;用于配置中心、服务发现、分布式锁。

66、etcd适用场景

服务发现、配置中心、消息订阅、负载均衡、分布式锁、集群Leader选举、分布式协调通知。

67、HAProxy简介&特性

TCP/HTTP专业负载均衡,稳定性强;支持4/7层、虚拟主机、ACL、cookie会话保持、主动健康检查、web统计页面,适合高并发Web和MySQL读负载。

68、HAProxy负载均衡策略

roundrobin轮询、static-rr权重、leastconn最少连接、source源IP哈希、uri、url_param、hdr、rdp-cookie

69、四层负载均衡 vs 七层负载均衡

  • 四层(L4):传输层,基于IP+端口转发(LVS),只看包头,性能高,无法识别HTTP内容
  • 七层(L7):应用层,解析HTTP协议,可按域名、URL、Cookie路由(Nginx/HAProxy)

70、LVS/Nginx/HAProxy异同(精简)

相同:软件反向负载均衡
差异:
LVS:纯四层内核转发,不能URL路由;
Nginx:七层HTTP为主,Web服务一体;
HAProxy:4+7双支持,健康检查、会话保持更强。

71、Heartbeat

老牌Linux HA组件,心跳检测、资源接管;节点间心跳报文,失联后资源漂移,实现双机高可用。

72、Keepalived原理(同14题,略)

73、Keepalived三大模块(同20题,略)

74、Keepalived健康检查三层检测

网络层ICMP ping;传输层TCP端口探测;应用层HTTP/自定义脚本校验,异常则剔除后端节点。

75、LVS概念&作用

Linux Virtual Server,Linux内核IPVS实现负载均衡集群;将流量分发到RS节点,水平扩容、分担压力、故障自动摘除,7×24高可用。三层架构:调度器DS、RealServer服务池、共享存储。

76、LVS三种模式(同15题,略)

77、LVS调度算法

固定:rr轮询、wrr加权轮询、sh源哈希、dh目的哈希
动态:lc最小连接、wlc加权最小连接、lblc、lblcr

78、LVS/Nginx/HAProxy优缺点(同18题,略)

79、代理服务器概念&作用

位于客户端与源站中间;转发请求、缓存静态资源、加速访问、隐藏后端真实IP、访问控制。

80、RTO、RPO

  • RTO:恢复时间目标,故障后多久恢复服务
  • RPO:恢复点目标,灾难场景最多允许丢失多少数据
    目标理想RTO=0,RPO=0,现实很难做到

81、CAP理论

分布式三特性:C一致性、A可用性、P分区容错
核心:无法同时完美满足三者,分布式系统必须容忍分区P,只能选CP或AP。

82、ACID(数据库事务)

  • A原子性:要么全成功,要么全回滚
  • C一致性:事务前后数据合法一致
  • I隔离性:并发事务互相隔离
  • D持久性:提交后永久落地

83、Kubernetes(K8s)

Google基于Borg开源的容器编排平台;自动部署、调度、扩缩容、自愈、服务发现、负载均衡,管理大规模容器集群。

84、Docker vs K8s

Docker:单容器生命周期管理,打包镜像、启停容器;
K8s:多主机容器编排,调度、自愈、扩缩、管理集群内大量Docker容器。

85、Minikube / kubectl / kubelet

  • minikube:本地单节点K8s,学习测试
  • kubectl:集群命令行客户端,操作资源
  • kubelet:每个Node上代理,和APIServer通信,管理本机Pod

86、K8s部署方式

kubeadm(推荐)、二进制、minikube(本地测试)

87、K8s集群架构 Master + Node

Master管控平面:kube-apiserver(唯一入口+etcd存储)、controller-manager控制器、scheduler调度器;
Node工作节点:kubelet、kube-proxy、容器运行时;
apiserver所有操作存入etcd,控制器持续调谐期望状态。

88、K8s优势&场景

优势:容器编排、弹性伸缩、自愈、服务发现、跨云可移植、模块化插件;
场景:微服务快速发布、动态扩缩、资源优化、持续交付。

89、K8s缺点

学习曲线陡、组件多运维复杂;简单单体小应用过重;资源开销更大。

90、K8s基础核心资源

master/node、pod(最小调度单元)、label标签、Deployment、ReplicaSet、HPA、Service、Volume、Namespace

91、Master核心组件详解

kube-apiserver(REST入口、etcd读写)、kube-scheduler(Pod调度预选优选)、kube-controller-manager(Node/Deployment/Service等控制器闭环调谐)

92、RC(ReplicationController)

保证集群内固定副本数;Pod少了新建、多了销毁;Deployment是RC升级版,支持滚动更新。

93、RS vs RC

ReplicaSet(RS)和RC作用一致,维持副本数;RS支持集合式标签选择器,RC仅等值选择器;现在优先使用Deployment管理RS,不再直接用RC

94、kube-proxy作用

Node上代理,监听Service/Endpoint变化,生成转发规则,实现Service负载均衡,流量转发到后端Pod。

95、kube-proxy iptables模式

监听apiserver,动态更新iptables NAT规则;流量直接内核转发,不经过用户态代理进程;适合中小集群。

96、kube-proxy ipvs模式

内核IPVS模块,哈希表结构;规则多时性能远优于线性iptables;支持更多负载均衡算法,适合大规模集群。

97、ipvs vs iptables

都基于netfilter;iptables适合防火墙,线性规则,大集群性能衰减;IPVS专为四层负载均衡设计,哈希索引、支持更多调度算法、扩展性更好。

98、静态Pod

kubelet直接管理,不走apiserver调度;不能通过Deployment/RC管理;kubelet本地yaml创建,仅存在当前Node。

99、Pod状态

Pending(镜像拉取/调度中)、Running、Succeeded(一次性任务正常退出)、Failed(异常退出)、Unknown(节点失联,无法上报状态)

100、创建Pod完整流程

  1. kubectl提交yaml → apiserver校验存入etcd
  2. scheduler监听到未绑定Pod,预选过滤节点、优选打分,绑定Node
  3. 目标节点kubelet收到指令,拉镜像、创建容器
  4. kubelet上报Pod状态回apiserver,写入etcd

101、Pod重启策略 RestartPolicy

  • Always(默认,服务类Pod,容器退出自动重启)
  • OnFailure(异常退出才重启,Job批处理)
  • Never(绝不重启)

Deployment/DaemonSet只能Always;Job使用OnFailure/Never

102、Pod探针 Liveness / Readiness / Startup

  • LivenessProbe:存活探针,判断容器是否卡死;失败则kill重建
  • ReadinessProbe:就绪探针,判断服务是否就绪;失败从Service endpoint摘除,不再接收流量
  • StartupProbe:慢启动应用,保护启动时间长的容器,避免前两个探针误杀

103、探针三种检测方式

Exec执行命令、TCPSocket端口连通、HTTPGet http状态码200~399为成功

104、Pod调度方式

Deployment/RS基础调度;NodeSelector简单定向;NodeAffinity节点亲和(硬/软策略);Taints&Tolerations污点容忍,排斥特定Pod。

105、InitContainer初始化容器

顺序串行执行,全部成功后才启动业务容器;用于前置准备:拉取配置、等待依赖服务、权限初始化。

106、Deployment滚动升级流程

创建新ReplicaSet → 逐步扩容新RS副本、缩容旧RS;逐步替换,不一次性全杀,保证业务不断;可控制最大不可用、最大激增副本数。

107、Deployment更新策略

  1. RollingUpdate(默认滚动更新,平滑),参数maxUnavailable、maxSurge
  2. Recreate:先全部销毁旧Pod,再新建新版本,业务会中断

108、DaemonSet

每个匹配标签Node运行且仅一个Pod;不定义replicas;典型场景:节点日志采集、节点监控代理、CNI网络插件。

109、HPA 自动扩缩容

HorizontalPodAutoscaler;周期性采集CPU/内存/自定义指标,动态调整Deployment副本数,自动扩缩。依赖Metrics Server提供核心指标。

110、Service四种类型

  • ClusterIP(默认,集群内访问)
  • NodePort:宿主机端口映射,外部通过nodeIP:port访问
  • LoadBalancer:云厂商外部负载均衡
  • ExternalName:映射外部域名

111、Service负载策略

RoundRobin轮询;SessionAffinity会话保持(同IP固定Pod)

112、Headless Service

不分配ClusterIP;直接DNS返回后端Pod列表,客户端直连Pod;适合有状态服务(etcd、mysql集群),需要感知真实Pod地址。

113、外部访问K8s服务

NodePort、LoadBalancer、Ingress、HostPort、直接映射宿主机端口

114、Ingress

七层HTTP路由资源;Ingress Controller(Nginx/Traefik)根据Ingress规则,按域名、路径转发到不同Service;对外统一入口。

115、镜像拉取策略

  • Always:每次都拉取(latest标签默认)
  • IfNotPresent:本地有就不拉(自定义标签默认)
  • Never:只使用本地镜像

116、K8s负载均衡

内部ClusterIP;外部NodePort/LoadBalancer/Ingress;Service四层,Ingress七层。

117、组件和apiserver通信

全部走REST API + Watch机制;数据持久化etcd;kubelet/scheduler/controller-manager通过Watch实时监听资源变更。

118、kube-scheduler作用

负责新Pod节点调度;预选过滤资源/标签等不满足节点;优选打分,选出最优Node,完成绑定。

119、调度两大阶段:预选Predicates + 优选Priorities

预选:过滤不合格节点;优选:对剩下节点打分,最高分调度。

120、kubelet作用

Node代理,管理本机Pod、镜像、Volume;上报节点资源、Pod状态;内置cAdvisor采集容器指标。

121、cAdvisor

内置在kubelet,采集Node、容器CPU、内存、磁盘、网络监控指标,供Metrics Server、Prometheus使用。

122、K8s集群安全体系

宿主机隔离、最小权限;APIServer HTTPS认证、RBAC授权;Secret保管敏感信息;准入控制器AdmissionControl;网络策略NetworkPolicy隔离Pod。

123、准入控制器AdmissionControl

认证授权之后、资源持久化之前执行;可拦截、修改资源请求;如LimitRanger、ServiceAccount、PodSecurityPolicy。

124、RBAC

基于角色权限控制;用户/ServiceAccount绑定角色,授予资源操作权限;运行时动态调整,无需重启apiserver。

125、Secret

存储密码、token、密钥等敏感信息;相比明文yaml更安全,可挂载进Pod或给镜像拉取使用。

126、Secret使用方式

挂载Volume、环境变量、镜像拉取secret、serviceAccount自动关联

127、PodSecurityPolicy(PSP)

Pod安全策略,准入控制器;精细控制Pod权限、特权容器、宿主机挂载、用户ID、权限提升等安全约束;开启后默认禁止创建Pod,必须授权策略。

128、PSP安全管控项

特权容器privileged、hostPID/hostNetwork宿主机命名空间、运行用户/组、权限提升、SELinux等

129、K8s网络模型

每个Pod独立IP,Pod之间直接互通(扁平网络);同一Pod内所有容器共享网络命名空间,localhost互通。

130、CNI

容器网络接口标准;CNI插件负责创建容器网卡、分配IP;IPAM负责IP地址管理;如flannel、calico都是CNI插件。

130(重题)NetworkPolicy网络策略

Pod间网络访问隔离;基于标签定义Ingress/Egress黑白名单,控制Pod之间、Pod与外部通信,实现微服务网络隔离。

131、NetworkPolicy原理

CNI网络插件(Calico)实现规则;控制器监听NetworkPolicy资源,下发节点iptables/ipset规则,做流量放行/拒绝。

132、Flannel

Overlay网络;给所有Node上Pod分配不冲突IP;UDP/VXLAN隧道封装跨节点Pod流量,适合简单K8s集群。

133、Calico

BGP三层路由方案;每个节点内置vRouter;直接路由Pod流量,无隧道封装损耗;支持NetworkPolicy,生产主流。

134、共享存储作用

有状态应用持久化数据;Pod重建、漂移后数据不丢失;多个Pod共享同一份数据。

135、K8s数据持久化

EmptyDir(Pod生命周期,临时共享)、HostPath(宿主机目录挂载)、PV持久卷(NFS/Ceph等外部存储)

136、PV & PVC

PV:后端存储资源抽象(管理员创建);PVC:用户存储申请;PVC绑定PV,Pod挂载PVC使用存储。

137、PV生命周期状态

Available可用、Bound已绑定、Released(PVC删除,待回收)、Failed回收失败

138、存储供给模式

静态供给:管理员预先批量建PV;动态供给:StorageClass,创建PVC自动创建PV

139、CSI

容器存储接口标准;存储厂商实现CSI插件,K8s原生对接外部存储;解耦K8s内核和存储驱动。

140、Worker节点加入集群

安装容器运行时、kubelet、kube-proxy;配置apiserver地址;kubelet自动注册节点到集群。

141、Pod资源控制 Request/Limit

Request:调度预留最小资源;Limit:硬上限,超过会限流/杀容器;调度器依据Request总和判断节点资源是否足够。

142、Request/Limit对调度影响

调度器只看request总和,不看limit;节点所有Pod request之和不超过节点总资源才允许调度。

143、Metrics Server

采集Node/Pod CPU内存核心指标,供HPA、kubectl top使用;自定义指标用Prometheus。

144、EFK日志方案

Elasticsearch存储检索日志;Fluentd以DaemonSet在每个Node采集容器日志;Kibana可视化查询。

145、节点维护优雅下线

kubectl drain node-xxx,驱逐该节点所有Pod,不再调度新Pod;维护完成后kubectl uncordon恢复调度。

146、集群联邦

多K8s集群统一管理,跨地域多集群统一资源视图。

147、Helm

K8s包管理器;Chart是应用包,打包一组yaml;统一版本、配置、分发、升级、回滚应用,避免零散yaml维护。

148、OpenShift

红帽企业容器平台,基于K8s+Docker;S2I源码直接构建镜像、多租户、项目配额、安全SELinux、CI/CD内置、内置监控日志。

149、OpenShift Project

逻辑资源隔离分组;分配用户权限、资源配额,限制Pod/存储等资源消耗。

150、OpenShift高可用

控制平面Master多副本HA;应用靠K8s自愈、副本调度;有状态业务自身做数据同步。

151、OpenShift SDN

Open vSwitch实现Overlay;ovs-subnet扁平、ovs-multitenant项目隔离VNID、ovs-networkpolicy支持自定义网络策略。

152、OpenShift角色

集群级角色、项目本地角色,RBAC权限模型,绑定用户/组。

153、OpenShift认证方式

LDAP、GitHub OAuth、Header认证、Keystone、基础认证等

154、中间件(同8题,略)

155、磁盘使用率Shell脚本

#!/bin/bash
# 磁盘告警
ip=$(hostname -I | awk '{print $1}')
df -Ph | awk 'NR>1{gsub(/%/,"");if($5>=90)print "'$ip' 磁盘"$1"使用率"$5"% 告警"}'

156、LVS负载均衡策略(同77题,略)

157、LVS整体理解(精简)

三层架构DS调度器、RS真实服务器、共享存储;IPVS内核实现四层负载;DR模式性能最优,适合大规模集群;搭配Keepalived实现调度器高可用。

158、负载均衡原理

接收客户端请求,按调度算法分发后端多台RS;自动剔除故障节点、恢复后重新加入;水平扩容、分担压力;会话保持解决无状态HTTP购物车等问题。

159、LVS两组件 ipvs + ipvsadm

  • ipvs:内核模块,真正实现调度转发
  • ipvsadm:用户空间工具,配置管理ipvs规则

160、LVS术语

DS调度器、RS真实服务器、VIP虚拟IP、DIP调度器内网IP、RIP后端RSIP、CIP客户端IP

161、LVS-NAT报文流转(精简)

CIP→VIP到达DS → ipvs改目的IP为RIP,转发RS;RS回包源RIP→CIP,经过DS做SNAT改成VIP返回客户端;双向流量都走DS

162、LVS-NAT特性

RS私有网段、网关指向DIP;支持端口映射;双向流量过LB,规模大容易瓶颈;RS操作系统无限制。

163、LVS-DR报文流转

CIP→VIP到DS;只修改二层MAC为RS MAC,IP不变;RS在lo绑定VIP、抑制ARP;处理完成后直接以VIP为源IP回包给客户端,回包不经过DS

164、LVS-DR特性

DS和RS同广播域;RS网关不能指向DIP;不支持端口映射;响应流量直出,性能最高;RS需配置lo:VIP、ARP抑制。

165、LVS三模式对比表(面试口述)

模式操作系统网络上限RS效率
NAT任意同网段20左右一般
TUN支持IP隧道跨网段百级
DR抑制ARP同二层>100最高

166、LVS调度算法(同77题,略)

167、LVS vs Nginx(精简口述版)

LVS四层内核转发,性能极强、适合超大流量TCP;但不能按URL/域名路由。
Nginx七层HTTP,灵活路由、动静分离、缓存;但是所有流量经过进程,大流量容易带宽瓶颈。
✅ 经典架构:LVS+Keepalived 外层四层入口 → 内层多Nginx七层集群。

168、负载均衡三大能力

流量分发调度、故障节点自动摘除、节点恢复自动重新加入集群

169、Nginx upstream负载策略

轮询(默认)、weight权重、ip_hash会话保持、least_conn最少连接

170、Keepalived概述

最初为LVS设计,基于VRRP;两大核心:后端健康检查、VIP故障漂移;主备切换,消除负载均衡单点故障。

171、VRRP协议理解

解决网关单点故障;一组路由器虚拟成一个,共用VIP;三种状态Initialize、Master、Backup;Master定期发通告,故障后Backup抢占。

172、Keepalived工作原理(同14题)

173、脑裂(Split-Brain)是什么&成因

脑裂:主备之间心跳断开,双方都认为对方宕机,同时抢占VIP,双Master;会造成IP冲突、双写损坏共享数据。
成因:

  1. 心跳链路故障(网线、交换机、网卡)
  2. 防火墙拦截VRRP(协议112)
  3. 节点CPU/IO满载,无法发送心跳
  4. VRRP配置不一致、优先级错误

174、Keepalived脑裂解决方案(生产标准答案)

  1. 冗余双心跳链路(独立网卡/直连线),避免单链路故障
  2. 防火墙放行VRRP协议(112)
  3. VRRP认证,防止非法节点干扰
  4. 第三方仲裁/网关探测脚本(vrrp_script,ping网关失败自动降权)
  5. 配置nopreempt非抢占,避免恢复后乱抢VIP
  6. 监控告警脑裂;高端方案使用STONITH/Fence隔离电源,强制关闭故障节点

📌 附赠面试加分小提示

  1. 游戏运维重点突出:开服、灰度、版本发布、服扩缩容、监控告警、故障止血、玩家侧问题
  2. 尽量结合项目,不要死背;被问架构优先说:四层LVS+七层Nginx/HAProxy + Keepalived高可用 + 日志监控 + 自动化Ansible
  3. K8s云原生岗重点吃透Pod、探针、HPA、Ingress、PV/PVC、RBAC、CSI。

上一篇
下一篇