运维岗位面试题
1、DevOps 的关键组件是什么?
- 持续集成
- 持续测试
- 持续交付
- 持续贩卖
2、简述一些流行的 DevOps 工具?
- Ansible/Puppet/chef/saltstack –配置管理和应用程序部署工具
- Docker –容器化工具
- Git/Gitlab –版本控制系统(VCS)工具
- Jenkins –持续集成(CI)工具
- Nexus - 制品库管理工具
- Jira –敏捷的团队协作工具
- wiki -文档管理工具
- Promtheus –连续监控工具
- Selenium/jmeter –连续测试(CT)工具
3、简述RabbitMQ是什么?
- RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器;消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用;队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用;消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限的。
4、简述Raid0、Raid1、Raid5 三种工作模式的工作原理及特点。
- RAID0 可以是一块盘和N个盘组合;其优点读写快,是
RAID
中最好的;缺点:没有冗余,一块坏了数据就全没有了。 - RAID1 只能2*n块盘,盘的大小可以不一样,以小的为准;10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高。
- RAID5 至少需要3块盘,容量计算10*(n-1),损失一块盘;特点:读写性能一般,读还好一点,写不好。
5、简述Nginx的正向代理和反向代理?
- 正向代理:客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端(访问国外网站)
- 反向代理:代理服务器来接受请求,然后将请求转发给内网服务器,再将获得的内容返回给客户端。
6、简述Keepalived的工作原理?
- 在一个虚拟路由器中,只有作为
MASTER
的VRRP
路由器会一直发送VRRP
通告信息,BACKUP
不会抢占MASTER
,除非它的优先级更高。当MASTER
不可用时(BACKUP
收不到通告信息)多台BACKUP
中优先级最高的这台会被抢占为MASTER
。这种抢占是非常快速的(<1s),以保证服务的连续性由于安全性考虑,VRRP
包使用了加密协议进行加密。BACKUP
不会发送通告信息,只会接收通告信息
7、简述TCP/IP的七层模型是什么?
-
应用层 (Application):网络服务与最终用户的一个接口。
-
表示层(Presentation Layer):数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
-
会话层(Session Layer):建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
-
传输层 (Transport):定义传输数据的协议端口号,以及流控和差错校验。
-
网络层 (Network):进行逻辑地址寻址,实现不同网络之间的路径选择。
-
数据链路层 (Link):建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
-
物理层(Physical Layer):是计算机网络OSI模型中最低的一层
8、Web服务器常用的负载架构有哪些?
- Nginx
- Haproxy
- Keepalived
- LVS
9、简述Jenkins是什么?
- Jenkins是一个用Java编写的开源自动化工具,带有为持续集成目的而构建的插件。Jenkins用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得全新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。
10、简述什么是持续集成?
- 在软件开发中,多个开发人员或团队在同一个Web应用程序的不同部分上工作。因此,在这种情况下,您必须通过集成所有模块来执行集成测试。为了做到这一点,每天都要对每段代码进行自动化处理,以便对所有代码进行测试。此过程称为连续集成。
11、简述如何使用Jenkins Pipeline将不同的分支发布到不同的环境中?
- 可以使用
when
指令来实现,但此时不能直接使用branch
的判断条件,需要配合environment
条件进行判断分支信息,然后执行匹配成功steps
内容。
12、简述什么叫网站灰度发布?
- 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式;
AB test
就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B;如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来;灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
13、列举在 Dockerfile
配置文件中最常用的指令有哪些?
- FROM :使用 FROM 为后续的指令建立基础映像。在所有有效的
Dockerfile
中,FROM
是第一条指令。 - LABEL:
LABEL
指令用于组织项目映像,模块,许可等。在自动化布署方面LABEL
也有很大用途。在LABEL
中指定一组键值对,可用于程序化配置或布署 Docker 。 - RUN:
RUN
指令可在映像当前层执行任何命令并创建一个新层,用于在映像层中添加功能层,也许最来的层会依赖它。 - CMD: 使用
CMD
指令为执行的容器提供默认值。在Dockerfile
文件中,若添加多个CMD
指令,只有最后的CMD
指令运行。
14、简述 Dockerfile
配置文件中的 COPY
和 ADD
指令有什么不同?
- 虽然
ADD
和COPY
功能相似,推荐COPY
;因为COPY
比ADD
更直观易懂。COPY
只是将本地文件拷入容器这么简单,而ADD
有一些其它特性功能(诸如,本地归档解压和支持远程网址访问等),这些特性在指令本身体现并不明显。因此,有必要使用ADD
指令的最好例子是需要在本地自动解压归档文件到容器中的情况,如ADD rootfs.tar.xz
。
15、简述Docker 中都有哪些常用命令?
命令 | 说明 |
---|---|
docker pull | 拉去或更新指定的镜像 |
docker push | 将镜像推送到远程仓库 |
docker rm | 删除容器 |
docker rmi | 删除镜像 |
docker images | 列出所有镜像 |
docker ps | 列出所有容器 |
16、简述Kubernetes常见的部署方式?
- kubeadm:也是推荐的一种部署方式;
- 二进制方式部署:
- minikube:在本地轻松运行一个单节点 Kubernetes 群集的工具。
17、简述kube-proxy作用?
kube-proxy
运行在所有节点上,它监听apiserver
中service
和endpoint
的变化情况,创建路由规则以提供服务 IP 和负载均衡功能。简单理解此进程是Service
的透明代理兼负载均衡器,其核心功能是将到某个Service
的访问请求转发到后端的多个Pod
实例上。
评论区