来自群友-1
1: cicd 的理解是什么
2: docker 网络怎么实现
3: docker 用了哪些技术实现
4: nginx/haproxy/lvs的区别
5: awk 怎么取最后一列
6: $? 是什么意思
7: 硬连接和软连接区别
8: 他们是否可以跨文件系统
9: python 怎么调api
10: python里面一个函数被多个装饰器装饰,运行顺序是怎么样的
11: 数据库集群有做哪些
12: mysql 主从原理
13: 通过binlog 的主从会有什么缺点,如果突然断电
14: 未来职业规划
15: 出差怎么看 1: 做过哪些mysql集群, 主从复制原理
2:CI /CD的理解
3: OpenStack集群搭建过程
4: OpenStack遇到的问题及处理
5: k8s 架构组件和作用
6: docker 的网络模式有哪些
7:OpenStack 使用的网络类型有哪些
8:python 写过是什么项目,用过哪些库
9:nginx 负载均衡是怎么实现的
10: 上家公司数据库主要做了哪些
11: redis 问题我没记住, 不会redis…
12: 零碎的小问题 都是基本命令
13: openstack 工作流程 1: 服务器启动流程
2: awk,sed 的使用(截取得到指定字段)
3: kubernetes 怎么装的,admin 安装步骤
4: osi 七层模型,以及每一层的协议及作用
5: tcp 三次握手和四次挥手
6: nagios,zabbix,prometheus 的区别有哪些
7: ansible 是干嘛的, playbook怎么写
8: elk 是干嘛的, 工作流程是什么,每一个组件是干嘛的
9: jenkins-master 解决了什么问题
10: cloud-init 是干嘛的
11: keepalived 是怎么工作的, haproxy 是怎么工作的, nginx 负载是怎么实现的
12: vrrp-static 配置说明一下是干嘛的
13: 怎么自己做镜像
14: 10块硬盘,每个硬盘2T做raid5 ,可用空间是多少
15: 如果给你50台服务器, 你怎么管理,服务器管理,服务管理都可以
16: tcp 协议各层的作用是什么
17: cri, csi ,cni 是什么
最后他说,他有些他还没问 kubeadm init 的具体流程是什么 此视频为个人面试的一些总结以及一些常用面试题总结
网络: 1: 用tcp会话解释vpn原理 原始报文封装
2:dns解析寻址过程 浏览器输入域名-> 自身dns缓存-> 没有则读取host文件-> 没有指向本地dns服务器,运营商-> 没有发起迭代dns请求,从根域到底层找-> 没有向NetBIOS name Cache 请求 -> 没有查询wins 服务器 -> 没有则广播
3: tcp/ip 工作流大概说下 源主机发送数据到传输层 传输层加tcp包头发送到网络层 网络层加上原目的地址的ip报头,生产一个ip数据包发送给链路层 链路层在mac帧的数据部分加上ip数据包,源目的地址的mac和帧头,排好发送给传输层 传输层检查顺序号,判断是否正确,错误要求源主机重发,正确会将排好的顺序发送给程序
4:tcp /http 区别 一个是传输层,一个是应用层
5:k8s里面 pod 和pod 之间怎么通讯的 同一主机上面的pod 如果在同一个namespace里面,会共享一个ipc,可以通过进程间的通讯方式通讯 如果不是则会走flannel0网口以及docker0 网口
6:http里面 response 是代表什么 响应
中间件: 1:apache,nginx,tomcat 在作为web服务器的时候有什么区别 apache 模块化服务,处理静态页面 tomcat 属于应用服务,处理动态页面较好 nginx 是轻量级服务,配置多
2:nginx 和 lv是的区别 nginx 是7层负载,但配置简单对网络依赖小;lvs 是4层负载,对网络依赖大,但负载能力强
3:nginx反向代理用的模块是什么 proxy_pass
4:lvs 的三种负载方式 DR 直接路由 NAT 网络地址转换 TUN 隧道,调度器仅处理请求
5:memcache 的数据怎么存的 memcache 的数据存在内存中,所以如果重启memchache 数据会丢失
数据库: 1:mysql主从原理 老生常谈的问题,我这里就不说了 2:数据库备份怎么做 数据库的备份分为逻辑备份和物理备份,具体的应用场景选用不同的备份方式,如果数据体量小,不考虑锁表消耗,使用mysqldump 否则使用xtraback 一般数据库的备份策略都会选择全备加增备的方式 3:mongod 的分片是怎么做的,为什么需要分片 分片可以对数据进行切割然后保存在服务器上面,减少cpu消耗,mongod有自己分片机制,简单配置即可
硬件: 1:Raid0 1 5 有什么区别 raid0: 无冗余条带卷 raid1: 镜像条带卷 raid5: 2n+1 一块磁盘用来存储热备
2:ext4 和 xfs 有什么区别 xfs最大限制为16T ext4 为1EB
运维: 1:你进入一个公司大的时候如何让监控系统从0-1 硬件:路由,交换,防火墙 系统:cpu 内存 磁盘,进程 服务: web:响应时间,渲染时间,加载时间, 日志:elk 数据库:进程, qps tps
3:k8s的探针有哪些 存活和就绪 实现方式是有3种,httpget tcpsocket exec
4:k8s service 类型 Cluserip,nodeport,loadblancer,externalname
5: externalname说下你的理解 我个人理解就是一个域名解析的功能
6:k8s 个组件分别有什么功能 此问题为架构基础问题,这里就不说了
7:说下一个pod 创建过程的时候各组件的通讯过程
kubelet 调用apiserver 发起创建命令,apiserver生成一个配置表yaml,然后将这些数据写入etcd scheduler 将查看k8s api,判断 是否为新请求(pod.spec.Node=None?),然后进行调度计算,如果没有selector 选择固定node 则会选择最”闲“的node调度,然后将记录写入etcd kubelt 检测etcd,发现新的node,如果发现node编号和自己的相同,则调用容器api 进行容器的初始化创建,然后pod创建完成
8:如果保证一个k8s 集群不会出现雪崩的状态 创建集群的时候为集群预留20%的资源,或者对pod进行资源限制80%
9:如果我有一台机器,不在k8s 集群网络里面我怎么加入到集群里面 iptables -t nat -A output -d masterip -j dnat —to-destination nodeip
10: 如果我集群中发现有一个应用的pod 一直处于pending ,可能原因有哪些 节点资源不够,cpu负载,nodeSelctor 不满足,没有容忍度,scheduler 异常
11:pipline脚本里面怎么指定一个agent label
12: pipeline脚本怎么写 指定agent,stages,stage,post
13:实际项目问题 a: 在k8s 里面,client 是怎么访问到你的真实服务的? 我之前是使用的nginx 做的负载均衡后面是多个pod,kube_dns做的解析 b: 负载策略是什么呢? url_hash c: 那不是后端pod 都是相同的 是的
开发:
1:打印出0-500 里面5 的倍数 seq 0 5 500
2: nginx访问日志,获取访问最大的10个ip cat nginx.log |awk ‘{print $1}’ |sort|uniq -c |sort -n
3: python里面元组和列表的区别 一个不可变一个可变
4:装饰器的作用 函数预处理
5:python里面怎么理解闭包的含义 函数里面应用自由变量函数
6:sed替换,追加,
7: 你用过python 写了什么 使用django写平台 8:说下django 的理解 前端url -> url 路由-> 试图view函数 -> 视图指向的页面 —> 渲染器
1: k8s 组件有哪些
2: etcd 有什么作用
3: 1 2 > dev/null 分别代表什么
4: 慢盘怎么查询
5: linux 怎么做系统监控
6: 网络流量监控怎么做
7: 慢盘怎么处理
8: iptables 工作流程
9: iptables 三链五表
10: sql 查询语句
11: mysql 索引类型
12: 虚拟化下 磁盘类型
13: docker是怎么实现的
14: docker的网络类型,具体是怎么实现的
15: k8s的资源控制怎么做,request 和limits 有什么区别
16: 什么是cicd 面试总结
1: 怎么在脚本中获取自身的名字 $0
2: 在python 中同一个函数使用了多个装饰器,是怎么调用的 从里到外
3: sql左连接和内连接的区别 左连接是以左表为基础,如果对应的右表没有数据,则会自动初始化为0或者null 内连接会将两张表的所有关联数据展示出来
4: keepalived 是的实现原理 keepalived是采用不同的模块来实现的,主要的模块有core check 和vrrp core是实现keepalived的主进程维护,加载全局配置文件 check是实现后端服务器的健康检查(healthchecker),也可以基于脚本对后端ipvs节点进行健康检查 vrrp子进程主要是实现vrrp协议,这也是keepalived高可用的实现的主要通信原理 vrrp的原理是通过竞选机制来实现主备,主的优先级会高于备,备一直处于等待状态,主宕机之后,备会主动接管资源,然后对外提供服务 在keepalived服务对之间,主节点会一直发送vrrp广播,以告诉备自己还在存活状态,当备不再接收到vrrp广播包的时候,会自动根据优先级 选出其他的主
5: keepalived 出现的了什么问题
脑裂 脑裂的原因可能有很多种 可能是防火墙导致心跳消息传输拒绝 如果有使用仲裁机制,仲裁机器故障也会导致 ip 配置冲突,网卡问题等也会导致 心跳线的故障如网卡或者交换机故障
解决方案的话,主要是针对脑裂进行监控 使用两条心跳检测的线路(串行电缆和以太网)
6:监控有没有 做自动化处理 通过手机回复数据或者字符串来知道机器做对应的操作
7: kvm使用的时候是怎么做镜像的 virsh-install
8:kvm 里面的网络模式又要有什么 虚拟网桥kridge和用户网络nat
9:Dockerfile 里面主要有哪些东西 FROM RUN ENV ADD VALUEM WORKER USER CMD EXPOSE
10:docekr 自定义镜像怎么做 写dockerfile 然后build
11: docekr load 和save 有什么区别 一个是加载镜像 一个是保存镜像
12: docker 本地仓库怎么建 docker run -d -p 5000:5000 —restart always —name registry —privileged -v /mnt/registry:/var/lib/registry registry:2 修改daemon.json 添加 “insecure-registries”: [“ip:5000”] 重启docker 查看使用curl
13: gitlab里面有哪几种权限 Guest 可以发表评论,但不能读写版本库 Reporter 可以克隆,不能提交 Developer 可以克隆,开发,提交,push Master 可以创建项目,tag,分支,添加项目人员,编辑项目, Owner 删除项目、迁移项目、管理组成员
14:有没有redis集群,mongo集群的经验
15: devops的工作理念 开发人员和运维人员的沟通合作 做到的是软件产品交付过程中IT工具链的打通,使得各个团队减少时间损耗,更加高效地协同工作。
16:logstash 和firebeat 的优缺点 logstash是jvm跑的 消耗内存比较大,具有filter的功能 filebeat更轻量,消耗资源更少
17: 如果需要有特别大的日志收集怎么实现 firebeat收集,使用kafka或者mq做消息队列中间件,logstash 获取,filter 过滤,然后存储在es中
18:firebeat 加logstash一起有什么好处 logstash和firebeat可以实现节点间的负载均衡,多个logstash 可以实现高可用 使用firebeat收集日志时,可以保证至少一次交付,从firebeat 到logstash ,以及logstash到es 这两种通讯协议是同步的,并且支持确认.并且 这个过程是完全加密的
19: prometheus的工作流程 定时从被监控节点或者metrics数据,每个被抓去的目标都需要暴露一个http服务接口,或者被监控节点定时使用pushgateway的方式推送给监控端
20: zabbix 的工作流程 分为主动模式和被动模式 主动模式,是agent通过10050端口主动将数据传送给zabbix-server 所在的10051端口 被动模式是默认的模式,是zabbix-agent 监听10050端口,服务器从agent端获取数据
21:OpenStack 的工作流程 Horizon 通过restful 向keystone发起一个认证请求,keystone 认证通过,返回一个auth-token给认证请求, 通过restful api 向 nova-api 发送一个携带auth-token的instance请求, nova-api得到请求之后,向keystone发起认证auth-token是否有效,通过认证后 和数据库通讯初始化虚拟机的数据库记录,然后nova-api通过rpc-call 向消息队列发送一个查看host id 的请求,nova-scheduler 侦听消息队列得到请求,然后查询数据库需要的虚拟机信息是否符合调度情况, 然后通过rpc-call 向nova-computer发送创建虚拟机的请求 nova-computer通过侦听消息队列到的请求,然后通过rpc-call向nova-conductor请求虚拟机的信息, nova-conductor通过侦消息队列得到 请求之后查询数据库查询对应的信息,然后返回给消息队列,nova-computer侦听消息队列,得到虚拟机信息,然后通过auth-token 向glance-api 获取镜像数据,glance-api通过keystone验证auth-token是否有效,验证通过nova-computer得到一个虚拟机镜像的url,然后通过auth-token向 neutron-server请求得到网络信息,neutron-server通过keystone验证token是否有效,nova-computer得到虚拟机网络信息,然后通过auth-token 向cinder-api请求虚拟机需要的持久化存储信息,cinder-api通过keystone验证token是否有效,验证通过,nova-computer通过instance来创建 虚拟机
22:rabbitMQ 和 kafka的区别
RabbitMQ:用于实时的,对可靠性要求较高的消息传递上。以broker为中心,有消息的确认机制, 支持消息的可靠的传递,支持事务,不支持批量操作,存储可以采用内存或硬盘,吞吐量小。本身不支持负载均衡,需要loadbalancer的支持
kafka:用于处于活跃的流式数据,大数据量的数据处理上。以consumer为中心,无消息的确认机制,内部采用消息的批量处理, 数据的存储和获取是本地磁盘顺序批量操作,消息处理的效率高,吞吐量高.采用zookeeper对集群中的broker,consumer进行管理, 可以注册topic到zookeeper上,通过zookeeper的协调机制,producer保存对应的topic的broker信息,可以随机或者轮询发送到broker上, producer可以基于语义指定分片,消息发送到broker的某个分片上。
23: nginx 的ssl 怎么配置 server { listhen 443 ssl; servername xxx; root xxx; index index.html;
}
24: raid 0 和raid 5的区别
raid0 最低2快盘, 任意一块坏掉都会造成数据丢失 raid5 最低3块, 可用空间为2块盘的空间,可以允许坏一块
25: gitlab ci文件怎么使用shell script
26: mysql备份策略是怎么样的 每天的00:00 做全库备份 使用mysqldump 每4个小时使用xtrabackup 做增量备份 备份文件除本地备份以外,存储到固定的物理存储上
27:mysql 主从原理 主要有三个线程实现
binlog线程,有从库连接到主库的时候,会创建一个线程给从库发送binlog内容,从库创建两个线程进行处理 I/O线程,读取主库的binlog输出线程发送的更新并拷贝这些更新到文件,其中也包含reallog sql线程,读取I/O线程写到real log更新事件并执行
28: k8s的主要组件
kubelet etcd apiserver scheduler controller-manager kube-proxy
29: 维护集群时遇到什么问题没有
30: pod出问题被删除之后在哪里查询日志
31: k8s的日志有没有做收集
32:自动化流程有没有交付到k8s环境中