视频加载失败

运维面试问题

7428 字
37 分钟
运维面试问题

一、 网络基础#

  1. 请简述 OSI 七层网络模型有哪些层及各自的含义?

参考答案:

  • 物理层:底层数据传输,比如网线、网卡标准。
  • 数据链路层:定义数据的基本格式、如何传输、如何标识,比如网卡 MAC 地址。
  • 网络层:定义 IP 编码和路由功能,比如不同设备间的数据转发。
  • 传输层:端到端传输数据的基本功能,比如 TCP、UDP。
  • 会话层:控制应用程序之间的会话能力,比如不同软件的数据分发。
  • 表示层:数据格式标识,基本压缩、加密功能。
  • 应用层:各种应用软件,包括 Web 应用。
  1. 简述 DNS 进行域名解析的过程?

参考答案:

DNS 解析分为迭代查询(返回最优结果)和递归查询(本地找 DNS)。用户要访问 www.baidu.com:

  1. 先查找本机 hosts 文件

  2. 再找本地设置的 DNS 服务器,如果也没有找到,就去网络中找根服务器

  3. 根服务器反馈只能提供一级域名服务器 .cn,就去找一级域名服务器;

  4. 一级域名服务器说只能提供二级域名服务器 .com.cn,就去找二级域名服务器;

  5. 二级域名服务器只能提供三级域名服务器 .baidu.com.cn,就去找三级域名服务器;

  6. 三级域名服务器正好有 www.baidu.com,返回给请求的服务器,保存一份缓存之后再发给客户端。

  7. 什么是正向代理?

参考答案:

正向代理是位于客户端和原始服务器之间的服务器。客户端向代理发送请求并指定目标(原始服务器),代理向原始服务器转交请求并将结果返回给客户端。

一句话总结:正向代理代理的是客户端。例如 OpenVPN 等场景。

  1. 什么是反向代理?

参考答案:

反向代理是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将结果返回给请求的客户端,此时代理服务器对外表现为一个反向代理服务器。

一句话总结:反向代理代理的是服务端

  1. a 与 b 服务器不在同一网段怎么设置?设置完还 ping 不通怎么排查?

参考答案:

  • 首先把不同 IP 段的服务器划分给不同的 VLAN
  • 通过三层交换机添加虚拟 IP 路由,实现不同网段 VLAN 的互通。

设置完 ping 不通时排查:检查交换机路由配置是否正确、各设备网关是否配置正确、防火墙/SELinux 是否放行、物理链路是否正常。

  1. 在 A、B 两台服务器之间通过一台服务器 C 做软路由,如何配置?

参考答案:

C 服务器配置两块网卡并开启路由转发功能:

Terminal window
# 网卡 1
IP=10.0.0.11
网关=10.0.0.254
# 网卡 2
IP=10.0.1.11
网关=10.0.1.254
# 重启网卡生效,查看路由
systemctl restart network
route -n
# 开启 IP 转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p

A 服务器设置:

Terminal window
子网掩码:255.255.255.0
IP=10.0.0.1
网关=10.0.0.254
# 重启网卡生效
route -n
# 添加对应路由
route add -net 10.0.1.0/24 gw 10.0.0.11

B 服务器设置:

Terminal window
IP=10.0.1.10
网关=10.0.1.254
# 重启网卡生效
route -n
# 添加对应路由
route add -net 10.0.0.0/24 gw 10.0.1.11
  1. 如果 ping 不通怎么排查?

参考答案:

  1. 先检查是否网络接口故障(水晶头、网卡接口接触不良);

  2. 检查交换机和路由器等网络设备是否有故障;

  3. 检查是否关闭了防火墙和 SELinux 机制;

  4. 检查网卡、路由和网关是否配置正确。

  5. 如果一台办公室内主机无法上网(打不开网站),给出你的排查步骤?

参考答案:

  1. 首先确定物理链路是否连通正常;

  2. 查看本机 IP、路由、DNS 的设置是否达标;

  3. telnet 检查服务器的 WEB 服务是否开启以及防火墙是否阻拦;

  4. ping 网关,通了表示能够到达服务器;

  5. 逐级测试到网关、路由器(先网关再路由器一级一级测);

  6. 测试 ping 公网 IP 的连通情况(记住几个外部 IP);

  7. 测试 DNS 的通畅(ping 出对应 IP,或 nslookup);

  8. 以上检查后仍未解决,再到网关的路由器上检查。

  9. 端口转发如何配置?

参考答案:

Terminal window
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j REDIRECT --to-ports 8080
  1. 如何查看 http 的并发请求数与其 TCP 连接状态?

参考答案:

Terminal window
netstat -n | awk '/^tcp/{++b[$NF]}END{for(a in b)print a,b[a]}'

二、 Linux 基础与运维命令#

  1. 在 Linux 的 LVM 分区格式下,请简述给根分区磁盘扩容的步骤?

参考答案:分三种情况:

第一种方法(growpart 扩容):

Terminal window
growpart /dev/vda 1
resize2fs /dev/vda1

第二种方法(partprobe 生效):

Terminal window
partprobe /dev/sda
resize2fs /dev/vda1

第三种方法(新磁盘加入卷组):

Terminal window
fdisk /dev/sdb # n p 1 1 回车 回车 t 8e w
pvcreate /dev/sdb1
vgextend datavg /dev/sdb1
lvextend -r -L +100%free /dev/mapper/datavg-lv01
  1. 简述 LVM,如何给使用 LVM 的 / 分区扩容?

参考答案:

功能:对磁盘进行动态管理,按需动态调整大小。

核心概念

  • PV(物理卷):最底层,可以是物理硬盘上的分区、整个物理硬盘或 RAID 设备;
  • VG(卷组):建立在物理卷之上,一个卷组至少包含一个物理卷,可动态添加;
  • LV(逻辑卷):建立在卷组之上,卷组中的未分配空间可用于建立新的逻辑卷,可动态扩展和缩小。

给 / 分区扩容步骤

  1. 添加磁盘;

  2. 使用 fdisk 对新磁盘分区;

  3. 分区完成后修改分区类型为 LVM(8e);

  4. 使用 pvcreate 创建物理卷;

  5. 使用 vgextend 将新分区加入根目录所在卷组;

  6. 使用 lvextend 进行扩容;

  7. 使用 xfs_growfs(ext4 用 resize2fs)调整文件系统大小。

  8. Linux 的文件类型有哪些?

参考答案:

  • -:常规文件(file);
  • d:目录文件(directory);
  • b:块设备文件(block device),如硬盘,支持以 block 为单位随机访问;
  • c:字符设备文件(character device),如键盘,以 character 为单位线性访问;
  • l:符号链接文件(symbolic link),又称软链接;
  • p:命名管道文件(pipe);
  • s:套接字文件(socket),用于两个进程间通信。
  1. Linux 系统启动流程是怎样的?

参考答案:

  1. 开机自检,加载 BIOS;

  2. 读取 MBR;

  3. Boot Loader(grub)引导菜单;

  4. 加载 kernel 内核;

  5. init 进程依据 inittab 文件设定运行级别;

  6. init 进程执行 rc.sysinit;

  7. 启动内核模块;

  8. 执行不同运行级别的脚本程序;

  9. 执行 /etc/rc.d/rc.local。

  10. 如何查看并杀死僵尸进程?

参考答案:

Terminal window
top
# 查看 Task 行中的 zombie 数量

处理思路:

  • 僵尸进程(defunct)无法直接 kill 掉,需要杀掉其父进程
  • 父进程死后,僵尸进程过继给 1 号进程(init),init 会负责清理,其产生的所有僵尸进程跟着消失;
  • 使用 kill -15kill -9 杀父进程后,反而可能产生更多僵尸进程(因为父进程的子进程也变成了孤儿/僵尸),需要注意处理方式。
  1. 如何搜索某个用户运行的进程?

参考答案:

Terminal window
pgrep -au neteagle
  1. 如何查看某个端口正在被哪个进程使用?

参考答案:

Terminal window
lsof -i :[port]
  1. 如何查看 /var/log 目录下的文件数?

参考答案:

Terminal window
ls /var/log/ -lR | grep "^-" | wc -l
  1. 如何在文本里进行复制、粘贴、删除行、删除全部、按行查找和按字母查找?

参考答案:以下操作全部在 vi/vim 命令状态下操作:

  • 复制粘贴:移动到想要复制的行按 yy,移动到目标位置按 p 粘贴;
  • 删除行:移动到该行按 dd
  • 删除全部dG(注意 G 一定要大写);
  • 按行查找:90 跳到第 90 行;
  • 按字母查找/path 查找 path 单词所在位置,多次查找会显示在不同位置。
  1. 符号链接与硬链接的区别?

参考答案:

  • 符号链接(软链接):相当于 Windows 里的快捷方式。ln -s 3.txt 4.txt,修改 4 会跟着改 3(反之亦然);若删除源文件 3,4 就坏掉了不可用;
  • 硬链接:相当于又复制了一份。ln 3.txt 4.txt,不可以跨分区;修改 3 和 4 会跟着变;但删除 3 时 4 不受任何影响。
  1. 如何查看二进制文件的内容?

参考答案:

一般通过 hexdump 命令查看:

Terminal window
hexdump -C 文件名

常用参数:

  • -C:规范的十六进制和 ASCII 码显示;
  • -c:单字节字符显示;
  • -b:单字节八进制显示;
  • -o:双字节八进制显示;
  • -d:双字节十进制显示;
  • -x:双字节十六进制显示。

三、 Web 服务与负载均衡#

  1. 讲述一下 Tomcat 8005、8009、8080 三个端口的含义?

参考答案:

  • 8005:关闭 Tomcat 时使用;
  • 8009:AJP 端口,供容器使用(如 Apache 可通过 AJP 协议访问 Tomcat 的 8009 端口实现功能);
  • 8080:一般应用使用。
  1. 讲一下 Keepalived 的工作原理?

参考答案:

  • 在一个虚拟路由器中,只有作为 MASTER 的 VRRP(虚拟路由冗余协议) 路由器会一直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除非它的优先级更高;
  • 当 MASTER 不可用时(BACKUP 收不到通告信息),多台 BACKUP 中优先级最高的会被抢占为 MASTER
  • 抢占非常快速(<1s),保证服务的连续性;
  • 由于安全性考虑,VRRP 包使用加密协议进行加密;
  • BACKUP 不会发送通告信息,只会接收通告信息。
  1. LVS、Nginx、HAProxy 有什么区别?工作中你怎么选择?

参考答案:

LVS:

  • 抗负载能力强,工作在第 4 层仅作分发,无流量产生,负载均衡软件里性能最强;
  • 工作稳定,自身有完整的双机热备方案(LVS+Keepalived、LVS+Heartbeat);
  • 应用范围广,可以对所有应用做负载均衡;
  • 配置简单,减少人为出错几率;
  • 缺点:不支持正则处理、不能做动静分离;网站应用庞大时(尤其有 Windows Server 应用)实施维护较复杂。

Nginx:

  • 工作在第 7 层应用层,可针对 HTTP 应用做分流策略(域名、目录结构),正则比 HAProxy 更强大灵活;
  • 对网络依赖小,理论上能 ping 通就能负载;
  • 安装配置简单;能支撑几万次并发量,稳定;
  • 不仅是负载均衡器/反向代理,也是强大的 Web 应用服务器,处理静态页面、抗高并发比 Apache 有优势;
  • 作为 Web 反向代理加速缓存成熟,速度比传统 Squid 快;
  • 缺点:不支持 URL 检测后端;仅支持 HTTP、HTTPS 和 Email 协议;Session 保持、Cookie 引导能力相对欠缺。

HAProxy:

  • 支持虚拟主机,可工作在 4、7 层(支持多网段);
  • 弥补 Nginx 缺点(Session 保持、Cookie 引导);
  • 支持 URL 检测后端服务器;
  • 纯负载均衡软件,负载均衡速度和并发处理优于 Nginx;
  • 可对 MySQL 读做负载均衡和后端节点检测(slaves 超过 10 台时性能不如 LVS);
  • 算法较多,达 8 种。

工作选择

  • HAProxy 和 Nginx 可做七层转发(URL、目录转发);
  • 很大并发量时选择 LVS
  • 中小型公司并发量不大,选择 HAProxy 或 Nginx 即可;HAProxy 是专业代理服务器、配置简单,中小型企业推荐使用 HAProxy。
  1. Nginx 的负载均衡算法策略有哪些?

参考答案:

  • 轮询(默认):请求依次分发到后端服务器;
  • 加权轮询:轮询 + weight 权重,按权重比例分发;
  • ip_hash:每个请求的访问 IP 映射成 hash,通过 hash 算法(hash 值 % node_count)分配到后端服务器,同一 IP 固定访问同一后端,实现会话保持,解决 session 同步问题;
  • least_conn(最少连接):将新请求分发给当前连接数最少的服务器,避免繁忙服务器过载。
  1. Nginx 常用模块有哪些?

参考答案:

  • upstream:负载均衡后端服务器组;
  • rewrite:URL 重写;
  • location:请求匹配定位;
  • proxy_pass:反向代理转发。
  1. 什么是动态资源、静态资源分离?

参考答案:

  • 动静分离是让动态网站中不变的资源经常变化的资源分开部署,根据静态资源的特点做缓存操作,是网站静态化处理的核心思路;
  • 需要后台处理的请求(.jsp、.do 等)是动态文件;不需要后台处理的(css、html、jpg、js 等)是静态文件
  • 静态资源放到 Nginx 中,动态资源转发到 Tomcat 服务器;
  • 目前主流的做法是把静态资源缓存到 CDN 服务中(七牛、阿里云等),CDN 国内节点更多,实现就近访问、提供更大带宽,提升访问速度。

四、 Docker#

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

参考答案:

Docker 是一个 Client-Server 结构的系统:Docker 守护进程运行在宿主机上,从客户端接受命令并管理运行在主机上的容器;容器是一个运行时环境,即”集装箱”。

  1. Docker 的组成包含哪几大部分?

参考答案:

  • docker client:客户端,为用户提供可执行命令,实现与 docker daemon 的交互;
  • docker daemon:守护进程,在宿主机后台运行,等待接收客户端请求;
  • docker image:镜像,run 之后生成 docker 容器;
  • docker container:容器,一个系统级别的服务,拥有自己的 IP 和系统目录结构;运行容器前需要本地存在对应镜像,否则从镜像仓库下载。

Docker 使用 C/S 架构,通过远程 API 管理和创建容器。容器通过镜像创建,容器与镜像的关系类似于面向对象编程中对象与类

  1. Docker 与传统虚拟机的区别是什么?

参考答案:

  • 启动速度:虚拟机需安装整个操作系统再启动应用,通常几分钟;Docker 直接使用镜像运行业务容器,启动是秒级别;
  • 资源占用:Docker 在操作系统级别虚拟化,与内核交互几乎无性能损耗;虚拟机运行整个操作系统,占用资源多;
  • 轻量程度:Docker 共用内核与共享应用程序库,内存占用极小;同样硬件环境 Docker 运行的实例远多于虚拟机;
  • 隔离性:Docker 属于进程之间的隔离(隔离性弱),虚拟机可实现系统级别隔离;
  • 安全性:Docker 租户 root 与宿主机 root 相同,容器内用户提权后可能直接具备宿主机 root 权限;虚拟机租户 root 与宿主机 root 分离,且有硬件隔离技术(如 Intel VT-d、VT-x)防止突破;
  • 管理工具:Docker 集中化管理工具还不算成熟;虚拟化有成熟管理工具(如 VMware vCenter);
  • 高可用:Docker 靠快速重新部署实现;虚拟化具备负载均衡、高可用、容错、迁移、数据保护等成熟机制;
  • 创建速度:虚拟化分钟级别,Docker 秒级别,迭代快;
  • 交付分发:Docker 通过 Dockerfile 记录构建过程,可在集群中快速分发和部署。
  1. Docker 技术的三大核心概念是什么?

参考答案:

  • 镜像(image):轻量级、可执行的独立软件包,包含运行软件所需的所有内容(代码、运行时库、环境变量、配置文件等),是可交付的运行环境;
  • 容器(container):基于镜像创建的实例,是真正运行业务程序的地方。类比:镜像=类,容器=对象;
  • 镜像仓库(registry):存放镜像的地方,构建好镜像后上传,有权限的人可拉取运行。
  1. CentOS 镜像几个 G,但是 docker centos 镜像才几百兆,这是为什么?

参考答案:

一个完整的 Linux 操作系统包含内核 + rootfs(根文件系统)(/dev、/proc、/bin 等目录)。平时看到的 CentOS 除了 rootfs 还选装了很多软件、服务、图形桌面,所以几个 G 不奇怪。

而容器镜像共享宿主机的 Linux 内核,只需提供很小的 rootfs,只包含最基本的命令、工具和程序库,所以镜像很小。

  1. 讲一下镜像的分层结构以及为什么要使用镜像的分层结构?

参考答案:

  • 新的镜像从 base 镜像一层一层叠加生成,每安装一个软件(Dockerfile 中使用 RUN 命令)就在现有镜像上增加一层,最终构成整个镜像;所以 docker pull 时会看到一层层拉取;
  • 分层最大的好处是共享资源:多个镜像从相同 base 构建时,Docker Host 只需在磁盘上保存一份 base,内存中也只需加载一份,即可为所有容器服务;镜像的每一层都可以被共享。
  1. 讲一下容器的 copy-on-write 特性,修改容器里面的内容会修改镜像吗?

参考答案:

  • 镜像是分层且只读的;容器启动时,新的**可写层(容器层)**加载到镜像顶部,之下的都是镜像层;
  • 所有对容器的改动(添加、删除、修改)只发生在容器层,镜像层只读不变;各层联合组成统一文件系统,上层同名文件覆盖下层;
  • 添加文件:新文件添加到容器层;
  • 读取文件:从上往下在各镜像层查找,找到后复制到容器层再读入内存;
  • 修改文件:查找到文件后复制到容器层再修改;
  • 删除文件:找到后在容器层记录删除操作;
  • 只有当需要修改时才复制一份数据,即 Copy-on-Write不会对镜像本身做任何修改
  1. 简单描述一下 Dockerfile 的整个构建镜像过程?

参考答案:

  1. 创建目录存放应用程序及构建使用的文件;

  2. 在该目录下创建 Dockerfile 文件;

  3. 编写 Dockerfile 指令:FROM 指定基础镜像、COPY 复制文件、RUN 运行命令、ENV 设置环境变量、EXPOSE 暴露端口、WORKDIR 设置工作目录、CMD 指定启动命令等;

  4. 使用 docker build -t 镜像名:tag . 构建(最后 . 表示当前目录,默认找当前目录的 Dockerfile,可用 -f 指定);

  5. 构建时 docker 将当前目录所有文件发给 daemon,顺序执行指令;期间生成临时容器安装 RUN 指定的命令,成功后类似 docker commit 保存为镜像层并删除临时容器,一层层构建直到镜像构建成功。

  6. Dockerfile 构建镜像出现异常,如何排查?

参考答案:

Dockerfile 一层层构建,期间产生临时容器安装应用。如果因临时容器安装应用异常导致构建失败,容器虽被清理,但已构建的中间镜像还在。可以根据异常时上一层已构建的临时镜像,将其运行为容器,在容器里运行安装命令来定位具体异常。

  1. Dockerfile 的基本指令有哪些?

参考答案:

  • FROM:指定基础镜像(必须是第一个指令);
  • MAINTAINER:设置镜像作者信息(作者名、日期、邮件等);
  • COPY:复制文件到镜像;
  • ADD:复制文件到镜像(区别:ADD 会自动解压 tar/zip/tgz/xz 归档文件,还支持 URL 下载;一般建议用 COPY);
  • ENV:设置环境变量;
  • EXPOSE:暴露容器端口(仅提示作用);
  • VOLUME:数据卷持久化,挂载目录;
  • WORKDIR:设置工作目录(不存在会自动创建);
  • RUN:在容器中运行命令(会创建新镜像层,常用于安装软件包);
  • CMD:指定容器启动时默认运行的命令(多个 CMD 只有最后一个生效,可被 docker run 后参数替换);
  • ENTRYPOINT:指定容器启动时运行的命令(多个只有最后一个生效;同时存在 CMD 和 ENTRYPOINT 时,CMD 或 run 参数会作为参数传给 ENTRYPOINT)。
  1. 如何进入容器?使用哪个命令?

参考答案:

进入容器有两种方法:docker attachdocker exec(推荐 exec,如 docker exec -it 容器名 bash)。

  1. Docker 容器 ping 不通是什么原因?

参考答案:

  1. ifconfig 查看 docker0 网桥,ping 一下网桥看是否通,可能是网桥配置问题(Weave 路由器端口 6783);
  2. 安装 Docker 的服务器没有关闭防火墙(先测试物理机是否可访问);
  3. 创建镜像时没有做端口映射(能访问物理机但不能访问 docker),用 docker ps 查看端口映射情况;
  4. 端口映射不正确
  5. 查看网络配置,ping 网桥看是否能通,排查网桥原因。

五、 Kubernetes#

  1. 什么是 K8s?说出你的理解?

参考答案:

  • K8s 是 Kubernetes 的简称,本质是开源的容器编排系统,用于管理容器化应用,目标是让容器化应用部署简单高效;
  • Kubernetes 提供应用部署、规划、更新、维护的机制;
  • 简单说:K8s 是编排容器的系统,管理容器应用全生命周期——创建、部署、提供服务、扩容缩容、应用更新,还能做到故障自愈
  1. K8s 的组件有哪些,作用分别是什么?

参考答案:

K8s 由 master 节点node 节点构成。master 管理集群,node 是容器应用运行的地方。

master 节点组件

  • kube-api-server:集群管理统一访问入口,提供 RESTful API,实现认证、授权、准入控制;是其他组件数据交互的枢纽,只有它能直接操作 etcd
  • kube-controller-manager:各种控制器的管理者(replication、node、deployment、endpoint 等控制器),是集群自动化功能的核心;
  • kube-scheduler:负责集群资源调度,通过过滤和打分算法为待调度 Pod 选出最佳 node 并绑定;
  • etcd:分布式键值存储数据库,保存集群状态数据(Pod、Service 等资源对象);通常部署奇数个实例(大规模集群 5 或 7 个节点),可与 master 分离部署。

node 节点组件

  • kubelet:每个 node 上的服务进程,连接 master 和 node 的桥梁,维护 Pod 和容器的生命周期(创建、更新、销毁),并向 api-server 注册和定期汇报节点资源;
  • kube-proxy:实现 Pod 网络代理和四层负载均衡,监听 service/endpoint 变化,维护路由规则,将访问 Service 的请求转发到后端 Pod;
  • container-runtime:容器运行时环境(docker、containerd 等),新版本 K8s 已弃用 docker,1.24+ 使用 containerd。
  1. Kubelet 的功能、作用是什么?(重点)

参考答案:

kubelet 部署在每个 node 节点上,主要有 4 个功能:

  • 节点管理:启动时向 api-server 注册,定期汇报节点状态和资源使用情况,供 master 调度参考;
  • Pod 管理:维护节点上 Pod 生命周期,监听到 master 下发的任务后,通过 CRI(容器运行时接口) 调用容器运行时(containerd 等)创建、更新、删除容器;
  • 容器健康检查:支持启动探针、存活探针、就绪探针,定期调用探测容器状态,失败时按重启策略处理;
  • Metrics Server 资源监控:通过 Metrics Server 获取节点和容器的 CPU、内存、文件系统、网络等资源使用情况。
  1. Kube-api-server 的端口是多少?各个 Pod 是如何访问 Kube-api-server 的?

参考答案:

  • kube-api-server 端口为 8080(HTTP)和 6443(HTTPS)
  • 以 kubeadm 安装为例:kube-system 命名空间中有 kube-apiserver Pod,绑定 master 主机 IP 和 6443 端口;
  • default 命名空间存在名为 kubernetes 的 Service,对外暴露 443 端口、目标端口 6443,IP 是 ClusterIP 地址池第一个地址;
  • 该 Service 未指定标签选择器,对应的 endpoint 是手动创建的,代理到 master 节点的 6443 端口;
  • Pod 创建后注入环境变量,获得 kubernetes 服务的 IP 和 443 端口,请求该 Service 即转发到 kube-api-server。
  1. K8s 中命名空间的作用是什么?

参考答案:

  • namespace 是 K8s 的重要资源,主要作用是多套环境的资源隔离(多租户隔离);
  • 集群内部资源分配到不同 namespace,形成逻辑隔离,方便不同资源隔离使用和管理;
  • 不同命名空间可以存在同名资源,namespace 为资源提供作用域;
  • 结合授权机制可将不同 namespace 交给不同租户管理;结合**资源配额(ResourceQuota)**限制租户可占用的 CPU、内存等资源。
  1. Pod 资源控制器类型有哪些?

参考答案:

  • Deployments:为 Pod 和 ReplicaSet 提供声明式的更新能力;
  • ReplicaSet:维护一组在任何时候都处于运行状态的 Pod 副本稳定集合,保证给定数量、完全相同 Pod 的可用性;
  • StatefulSets:管理基于相同容器规约的一组 Pod,但为每个 Pod 维护有粘性的 ID(不能相互替换,永久不变);
  • DaemonSet:确保全部(或某些)节点上运行一个 Pod 副本,节点加入自动新增,删除 DaemonSet 删除其创建的所有 Pod;
  • Job:创建一个或多个 Pod 并重试执行,直到指定数量成功终止,任务结束;
  • CronJob:类似 crontab,按 Cron 格式周期性调度执行 Job;
  • ReplicationController:确保任何时候有特定数量的 Pod 副本运行(已被 ReplicaSet 取代)。

六、 监控与运维实践#

  1. Zabbix 常用术语你知道几个?

参考答案:

  • 主机(host):要监控的网络设备,由 IP 或 DNS 名称指定;
  • 主机组(hostgroup):主机的逻辑容器,可包含主机和模板,常用于分配监控权限;
  • 监控项(item):特定监控指标的数据,是 Zabbix 数据收集的核心,每个 item 由 key 标识;
  • 触发器(trigger):评估某监控项数据是否在合理范围内的表达式(阈值),超阈值时状态从 OK 变为 Problem;
  • 事件(event):触发值得关注的事情(触发器状态转变、agent 自动注册等);
  • 动作(action):对特定事件预定义的处理方法(发送通知、执行操作);
  • 报警升级(escalation):发送警报或执行远程命令的自定义方案(如每 5 分钟发一次、共发 5 次);
  • 媒介(media):发送通知的手段或通道(Email、Jabber、SMS 等);
  • 通知(notification):通过选定媒介发送的事件信息;远程命令(remote command):在特定条件下自动执行的预定义命令;
  • 模板(template):快速定义被监控主机的预设条目集合(item、trigger、graph 等),可直接链接到主机;
  • 应用(application):一组 item 的集合;
  • Web 场景(web scenario):用于检测 Web 站点可用性的一个或多个 HTTP 请求;
  • 前端(frontend):Zabbix 的 Web 接口。
  1. 虚拟化技术有哪些表现形式?

参考答案:

  • 完全虚拟化技术:通过软件实现对操作系统资源的再分配,比较成熟,代表:KVM、ESXi、Hyper-V;
  • 半虚拟化技术:通过修改已有系统代码形成新的可虚拟化系统,调用硬件资源安装多个系统,速度相对较高,代表:Xen;
  • 轻量级虚拟化:介于完全虚拟化和半虚拟化之间,代表:Docker。
  1. 你是怎么备份数据的,包括数据库备份?

参考答案:

  • 生产环境下,应用数据和数据库数据在部署时就有主从架构或集群,这本身就是数据的热备份;
  • 冷备份:用专门一台服务器作为备份服务器,用 rsync + inotify 配合计划任务实现数据冷备份;
  • 发版包备份:正常情况下有发布服务器,每次发版都会保存好发版包。
  1. 修改线上业务配置文件流程?

参考答案:

  1. 先告知运维经理和业务相关开发人员;

  2. 测试环境测试,并备份之前的配置文件;

  3. 测试无误后修改生产环境配置;

  4. 观察生产环境是否正常、是否有报警;

  5. 完成配置文件更改。

  6. 网站登录缓慢是什么原因?

参考答案:

  • 网络带宽:常见瓶颈;
  • 服务器性能:CPU、硬盘、内存配置过低,服务器负载不起来;
  • 开发代码:如 MySQL 语句未优化,导致数据库读写耗费时间;
  • 数据库瓶颈:数据量增长后,数据库读写压力变大。
  1. 如果我们的网站打开速度慢,请说下你的排查思路?

参考答案:

判断原因:首先以用户身份访问网站,判断问题出在自身原因还是用户原因。

用户原因

  • 用户带宽不足;
  • 浏览器版本低、插件太多;
  • 电脑中毒、垃圾文件过多;
  • 用户主机性能和操作系统。

网站自身原因

  • 网络带宽;
  • 服务器 CPU、硬盘、内存过低,负载过高;
  • 代码不完善(MySQL 语句未优化导致读写耗时);
  • 未开启图片压缩;
  • 死连接过多、插件使用及 JS 文件调用频繁。

解决思路

  1. 检测服务器速度ping 查看连接时间和丢包率(1000 个包不丢最理想,一般好机房丢包率不超过 1%);ping 值要均匀,最小最大值相差大说明路由不稳定;
  2. 查看服务器性能uptime 看 CPU 使用率、free -m 看内存、iostat 看磁盘 IO,定位大量占用资源的进程;
  3. 分析访问特征:查看访问最多的 URL 和 IP,恶意 IP 屏蔽,善意流量限流(可能是 CDN 回源量大);
  4. 对比同服务器其他网站:看同一服务器上其他网站打开速度;
  5. 检查线路互访:电信/联通互访问题(如电信用户访问联通服务器),解决方法是使用双线或多线空间;
  6. 网站自身优化
    • 优化图片,限制大小尺寸、降低质量、减少数量;
    • 限定图片格式(jpg、png、gif);
    • 减少 HTTP 请求数(合并图片、合并 CSS 文件、去除不必要对象)。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

运维面试问题
http://blog.cnylxs.xyz/posts/InterviewQuestion_all-20260814-01/
作者
ylxs
发布于
2026-08-14
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
ylxs
I'm ylxs.
公告
ylxs的个人博客
分类
标签
最新动态
站点统计
文章
14
分类
2
标签
12
总字数
34,324
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
ylxs v1.0.0
文章许可
CC BY-NC-SA 4.0