常见运维问题以及解决方案

2.linux多网卡如何实现内网网卡和外网网卡同时能访问相应资源:设置默认网关并转发

3.为什么选择数据库的主从模式,从库的作用是什么,binlog订阅失败后如何重新订阅:分析库和读写分离;
假如是同一binlog文件名,只需要调整订阅poiont重新开始订阅,假如由于硬件升级等原因导致binlog重置,需重新导入带有位点的sql备份并从sql文件的最后一个位点开始订阅

4.mq消息队列解决了什么问题:异步处理,削峰解耦

5.RocketMQ如何保证消息不丢失:从生产端和消费端多个方面分析,从broker端分析同步刷盘和异步刷盘以及高可用部署

6.什么场景下会引起mq重复消费:网络原因,高峰超时原因等等

7.如何解决mq重复消费:幂等 分布式锁

8.redis主从架构什么场景下分布式锁会失效,解决方案是什么:
一个业务线程A通过向主Redis实例中写入来实现加分布式锁,加锁后开始执行业务代码。这时如果主Redis实例挂掉了,会选举出一个从Redis实例成为主的,如果刚刚加锁的key还没有来得及同步到从Redis中,那么选举出来的新的主Redis实例中就没有这个key,这个时候业务线程B就能加锁来获取分布式锁,执行业务代码了,而这个时候A还没有执行结束,所以就会出现并发安全问题,这就是Redis主从架构的分布式锁失效问题。
方案:Redisson实现RedLock,超过半数1认为加锁成功

9.如何使用nginx实现qps统计:lua脚本或其他脚本

1.说 Linux 启动大致过程?

加载 BIOS–>读取 MBR–>Boot Loader–>加载内核–>用户层 Init 依据 Inittab 文件来设定系统运行的等级(一般 3 或者 5,3 是多用户命令行,5 是图形界面)–>Init 进程执行 rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行 /etc/rc.d/rc.local (本地运行服务)–>执行 /bin/login,就可以登录了。

2.文件系统 ext2、ext3、ext4 的区别是什么?
ext3 和 ext2 的主要区别在于 ext3 引入Journal。

ext2 和 ext3 的格式完全相同,只是在 ext 3 硬盘最后面有一部分空间用来存放 Journal(日志)的记录;

在 ext2 中,写资料到硬盘中时,先将资料写入缓存中,当缓存写满时才会写入硬盘中;

在 ext3 中,写资料到硬盘中时,先将资料写入缓存中,待缓存写满时系统先通知 Journal,再将资料写入硬盘,完成后再通知 Journal,资料已完成写入工作;

在 ext3 中,也就是有 Journal 机制里,系统开机时检查 Journal 的资料,来查看是否有错误产生,这样就快了很多;

ext4 和 ext3 的主要区别在于:首先 ext4 与 ext3 兼容,ext3 只支持 32000 个子目录,而 ext4 支持无限数量的子目录;ext3 所支持的 16TB 文件系统和最大的 2TB 的文件,而 ext4 分别支持 1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系统,以及 16TB 的文件;ext3 的数据块分配策略是尽快分配,而 ext4 是尽可能地延迟分配,直到文件在 Cache 中写完才开始分配数据块并写入磁盘;ext4 允许关闭日志,以便某些有特殊需求的用户可以借此进一步提升性能等等等等。

3.如何杀死指定的进程?为什么使用-9参数
ps -ef |grep 进程名 |grep -v grep|awk ‘{print $2}’ |xargs kill -9
kill -param参数详解

4.cdn 缓存命中率下降的因素有哪些?
-客户是否刷新过缓存?

如果刷新缓存,有可能会短时间表现命中率下降。特别说明下:CDN 的 URL 或者目录刷新是清除 CDN 缓存的动作(这个比较容易理解偏差)

-带宽是否突增?并且访问的都是新的 URL?

带宽突增或者访问的新 URL 较多,会导致 CDN 节点回源较多,命中率会表现有下降趋势。

-源站是否有新内容发布?

CDN 节点访问新内容,导致 CDN 节点回源较多,命中率会表现有下降趋势。

-源站是否出现过异常导致 5XX 和 4XX 增加,由于 5XX 和 4XX 不缓存,会表现命中率下降。
-源站的访问 URL 的 Header 参数,或者在 CDN 控制管理后台的缓存配置规则是否改变过?

5.Docker 的 CMD 与 ENTRYPOINT 命令有啥区别?
CMD 的命令会被 Docker run 里的命令覆盖,而 ENTRYPOINT命令不会。

如果要覆盖 ENTRYPOINT,则在 Docker run 里添加 –entrypoint 标签来覆盖即可。

6.有一个应用正在平稳运行,但是产生的n个日志文件即将占满磁盘,如何处理?
使用命令备份文件,使用命令置空这些文件而不是删除

7.如何使用性价比最高的方案解决应用性能瓶颈?
数据库瓶颈:sql优化,读写分离,数据库设计优化
application代码瓶颈:高峰采用突发型机器,流量低谷优化代码实现
等等

8.cicd核心组件是什么,如何有效实施cicd
稳定的CI/CD管道需要用作版本控制系统的存储库管理工具。这样开发人员就可以跟踪软件版本中的更改。
在版本控制系统中,开发人员还可以在项目上进行协作,在版本之间进行比较并消除他们犯的任何错误,从而减轻对所有团队成员的干扰。
连续测试和自动化测试是成功建立无缝CI / CD管道的两个最关键的关键。自动化测试必须集成到所有产品开发阶段(包括单元测试,集成测试和系统测试),以涵盖所有功能,例如性能,可用性,性能,负载,压力和安全性。
实施持续集成的成功工作流程包括以下实践:
实施和维护项目源代码的存储库
自动化构建和集成
使构建自检
每天将更改提交到基准
构建所有添加到基准的提交
保持快速构建
在生产环境的克隆中运行测试
轻松获取最新交付物
使构建结果易于所有人监视
自动化部署

9.谈谈你认为的最终运维模式。
高可用集群化部署封装为单一领域。
底层解决集群之间的主从,同步,选举,协调,冲突等等。
上游只需要关心应用本身,主动认为中间件是单一体,向云计算看齐,比如阿里云rds等等云服务解决的问题。

1.1 什么是docker
docker和传统linux的差异?
容器和镜像的区别?
如何理解docker的缓存机制?
1.2 docker 网络模型是什么?有何局限
docker的网络基础是什么?
docker的网络模型是?有什么局限?
docker如何实现容器间通信的?
1.3 docker 基础命令
cmd和entryPoint差异?
copy和add的差异?
简单讲下swam/compose?
2 kubernetes
常见面试题如下 每一点可根据回答进行适当深入

2.1 什么是k8s?
1 为什么用k8s 解决了什么问题?
2 k8s有哪些组件,有什么作用?【同:Master节点和Node节点都用哪些组件】
3 可以简单说下Node Pod container 之间的关系吗? 【可引入2.2/2.3对Pod SVC的考察】
4 什么是SVC可以简单描述下吗?【可引入2.3对SVC的考察】
5 可以简单讲下k8s的网络模型吗?
6 Pod SVC Node Container 之间如何相互访问
7 swarm和k8s如何选择?
2.2 考察Pod
静态Pod和普通Pod的差异?
简单讲下Pod的生命周期重启策略呢?

  • 不同组件对Pod的重启策略要求一样吗?
    如何检查Pod的健康状态?哪2种探针?
  • 2种探针的实现方式
    简单说下Pod的调度方式?
    2.3 考察SVC
    SVC有哪4种类型
    2.4 k8s网络模型
    DNS和Iptables在k8s中的运用?有何差异
  • k8s如何解决多机器部署容器的网络问题?
    Pod SVC Node Container 之间如何相互访问
    3 参考答案

4 docker
问题和答案 如下

4.1 什么是docker?
通常问这个问题主要在于考察候选人是否真正了解过docker,很多人项目中都有用到docker,真正去了解过概念,架构的不多。从而来辨别简历上的熟悉/了解docker的水分。

如果这个都无法回答,那么接下来的docker考察也就毫无意义了,此问题通常也会结合以下问题来进行考察。

docker和传统linux的差异?
docker都有哪些核心组件?
可以简单说下docker的架构吗?
容器和镜像的区别?
docker是什么: Docker是一个可以把开发的应用程序自动部署到容器的开源引擎。

docker和VM差异: docker是一个应用层的抽象,容器之间通过网络命名空间进行隔离,多个容器共享同一个操作系统内核。VM是对物理硬件层的抽象,每个VM都包含独立的操作系统,重且启动缓慢。VM主要为了提供系统环境,容器主要是为了提供应用环境。

docker组件: docker引擎【包含Docker客户端&服务端】,docker镜像,docker容器,Registry【镜像仓库】

docker的架构: C/s架构

容器和镜像的区别: 镜像是一个只读模板,包括运行容器所需的数据,其内容在构建之后就不会被改变,可以用来创建新的容器。 镜像由多个只读层组成,容器在只读层的基础上多了一个读写层。

4.2 docker 网络模型是什么?有何局限
这里也经常会结合K8s网络原理进行考察,以及如下几个考点

docker的网络基础是什么?
docker的网络模型是?有什么局限?
docker如何实现容器间通信的?
Docker网络基础: Docker是在操作系统层上对应用的抽象,使用网络命名空间来对不同容器之间进行网络隔离,用Veth设备对来进行容器之间的通讯。

docker的网络模型: 有4种网络模型 分别是Bridge Container host none 默认使用bridge网络模型,容器的初次启动会虚拟化出来一个新的网卡名为docker0,在多机器部署下docker0地址可能会冲突。所以docker对多机部署支持的不够友好。

4.3 docker 基础命令
出现频率较高的为以下几条命令的考察

cmd和entry差异?
copy和add的差异?
docker-compose & docker swarm?
CMD & ENTRYPONIT

都是容器操作指令:
CMD 用于指定容器启动时候默认执行的命令。可以被docker run指定的启动命令覆盖。ENTRYPONIT 指令可让容器以应用程序或者服务的形式运行。一般不会被docker run指定的启动命令覆盖。dockerfile中的多个CMD & ENTRYPONIT只有最后一个会生效。

注意区别docker run 和RUN 一个是容器启动命令,一个是镜像构建时候所用。

copy & add

ADD & COPY 选取目标文件复制到镜像当中。是针对镜像的指令,唯一差别在于add源文件可以支持url且可以对压缩文件进行解压操作。而copy针对的是当前构建环境。

docker-compose & docker swarm
使用Docker compose可以用YAML文件来定义一组需要启动的容器,以及容器运行时的属性。docker-compose用来对这一组容器进行操作。
docker swarm 原生的Docker集群管理工具,依赖docker本身,很多重要功能依赖团队二次开发。且社区不够活跃,一般公司生产环境会选择k8s,个人项目或者容器数量较少可选swarm,只需要docker即可完成,相对较轻。

5 kubernetes
5.1 什么是k8s?
对k8s的考察一般逃不过这样入门级的问题,针对入门级的问题,面试官可能也会针对如下几个点进行考察,在候选人答出来的基础上,选择其中一个进行深入。

为什么用k8s 解决了什么问题?
k8s有哪些组件,有什么作用?
可以简单说下Node Pod container 之间的关系吗? 【进一步可对Pod SVC细节进行考察】
什么是SVC可以简单描述下吗?【可引对SVC的考察】
可以简单讲下k8s的网络模型吗?【可以和docker网络模型结合考察】
Pod SVC Node Container 之间如何相互访问【衍生 外部环境如何访问k8s】
swarm和k8s如何选择?
1 什么是k8s 为什么用k8s:
一个开源的容器集群管理平台【容器编排工具】,可提供容器集群的自动部署,扩缩容,维护等功能。分为管理节点Master和工作节点Node。在我们的项目中主要解决了环境一致性的问题,通过CI/CD使得运维部署变得简单起来,以及自动部署,故障监控,自动扩缩容。可以提升开发效率。

2 k8s有那些组件:

etcd保存了整个集群的状态;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
3 Node&Pod&container之间的关系:Node一般指工作节点包含多个Pod Pod中包含多个Container,Pod中的container共享同一个网络命名空间。

4 什么是SVC: SVC是对一组功能相似的Pod资源的抽象,相当于一组服务的负载均衡。

5 k8s的网络模型:IP-Per-Pod 每个Pod有独立的Ip地址,无论是否处于同一个Node节点,Pod可以通过IP相互访问,且Pod和容器的地址和外部看到的地址是同一个地址。

6 Pod SVC Node Container 之间如何相互访问:

同Pod内的容器:同一个Pod的容器共享同一个网络命名空间可以直接进行通讯
同Node内不同Pod的容器:多个Pod都关联在同一个Docker0网桥上,通过docker0网桥完成相互通讯。
不同Node内Pod的容器:不同Node上的docker0可能会相同,PodIP和docker0是同网段的,所以需要将PodIP和NodeIP进行关联且保障唯一,不同Pod之间的数据通过物理机的端口进行转发即可完成通讯。
7:k8s 和docker swarm如何选择: :

5.2 对SVC的考察
SVC是k8s中的核心概念 这里涉及知识点众多 常见的面试考点如下

什么是SVC? 如何创建SVC?
使用SVC创建多个副本和使用RC创建多个副本有什么差异?
SVC有哪几种类型?
SVC 负载分发策略有那些?
集群外如何访问SVC?
SVC:是对一组功能相似的Pod资源的抽象,相当于一组服务的负载均衡。可以使用配置文件的方式创建也可以使用命令创建kubectl expose
SVC和RC提供服务的差距: RC创建的服务PodIP可能会变。SVC提供的clusterIP不会。通过Iptables的NAT转换重定向到本地端口,在均衡到后端Pod。
svc的几种类型: ClusterIp/NodePort/LoadBalancer/ExternalName

ClusterIp 默认类型 分配的一个虚拟地址,内部可以相互访问,外部不行
NodePort 将SVC端口号映射到物理机
LoadBalancer 基于NodePort,云服务商在外部创建了一个负载均衡到Pod
ExternalName 将外部地址经过集群内部的再一次封装(实际上就是集群DNS服务器将CNAME解析到了外部地址上),实现了集群内部访问即可。
svc负载分发策略: RoundRobin/SessionAffinity/自定义实现【基于标签选择器】

集群外部访问: 端口映射到物理机即可

5.2 Pod考察
Pod和静态Pod的区别
生命周期和重启策略 【这里可扩展 不同控制器对Pod的重启策略要求】
Pod如何健康检查?
Pod的调度方式?【扩展调度算法】
Pod如何扩缩容?【扩展 RC和RS的差异】
答案
待补充 –详见《k8s权威指南》读书笔记

5.3 基础原理类考察
主要考察对基本组件的理解 和原理分析

API Server
Controller Manager【Replication Controller/Node Controller/ResourceQuota Controller/Namespace Controller/SVC Controller& Endpoint Controller】
Scheduler
Kubelet 【Pod健康检查 资源监控】
Kube-Proxy
k8s-DNS & Iptables差异
k8s中Ingress是什么
简述k8s中的如下属性及其作用resources tolerations affinity
k8s中pod、rs、deployment、hpa的基本概念,以及他们之间的关系
答案
待补充 –详见《k8s权威指南》读书笔记

5.4 网络原理类考察
主要考察对基本组件的理解 和原理分析

k8s的网络模型是什么?
Docker的网络基础是什么?
Docker的网络模型和局限?
k8s的网络组件之间是如何通讯的?
外部如何访问k8s集群?
有那些开源组件支持k8s网络模型?

我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。

原文链接:https://blog.csdn.net/weixin_43504713/article/details/118300419?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165918469516781647566069%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165918469516781647566069&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-9-118300419-null-null.article_score_rank_blog&utm_term=%E9%A6%99%E6%B8%AFcdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/1357

(0)
上一篇 2022年7月30日 21:15
下一篇 2022年7月30日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml