最近面试被问了不少Istio相关的问题,整理了一下这些面试题和我的回答思路,分享给大家参考。
最近,我,在,准备,和,参加,一些,面试,因为,我,项目,里,用,了,Istio,做,Service Mesh,所以,面试,的,时候,被,问,了,不少,Istio,相关,的,问题,有些,问题,比较,基础,有些,比较,深入,也,有,一些,是,实战,场景,的,问题,我,把,这些,面试,题,整理,了,一下,包括,问题,和,我,的,回答,思路,以及,一些,相关,的,知识点,分享,给,大家,希望,能,给,也,在,准备,面试,或者,学习,Istio,的,朋友,一些,参考,当然,我,的,回答,不一定,完全,正确,或者,全面,只是,我,个人,的,理解,和,思路,大家,参考,一下,就,好,也,欢迎,大家,补充,和,指正。
一、基础概念题
问题1:什么是Istio?它解决了什么问题?
这是,最,基础,的,问题,几乎,每次,面试,都会,被,问到,我,的,回答,思路,是,先,说,Istio,是,一个,开源,的,Service Mesh,产品,由,Google,IBM,和,Lyft,联合,开发,然后,说,它,主要,解决,的,是,微服务,架构,下,的,服务,治理,问题,包括,服务,之间,的,通信,管理,负载,均衡,服务,发现,熔断,限流,重试,超时,等等,还有,可观测性,比如,监控,链路,追踪,日志,等等,以及,安全性,比如,服务,之间,的,认证,授权,加密,通信,等等,然后,可以,说,一下,传统,的,微服务,架构,下,这些,功能,一般,是,通过,SDK,的,方式,集成,到,应用,代码,里,的,比如,Spring Cloud,的,各种,组件,但是,这种,方式,有,一些,问题,比如,和,应用,代码,耦合,升级,麻烦,多语言,支持,不好,等等,而,Istio,通过,Service Mesh,的,方式,把,这些,功能,从,应用,代码,里,抽离,出来,放到,Sidecar,代理,里,应用,不用,关心,这些,治理,逻辑,只,需要,关注,业务,逻辑,就,行,这样,就,解决,了,传统,方式,的,这些,问题。
回答,这个,问题,的,关键,是,要,说,清楚,Istio,是什么,解决,什么,问题,以及,和,传统,方式,的,区别,体现,你,对,Service Mesh,理念,的,理解,不要,只,说,Istio,是,做,限流,熔断,的,那,太,浅,了,要,说到,Service Mesh,的,理念,和,优势。
问题2:Istio的架构是怎样的?有哪些核心组件?
这个,问题,也是,常考,的,考察,你,对,Istio,架构,的,理解,我,的,回答,思路,是,先说,Istio,的,架构,分为,数据面,和,控制面,两部分,然后,分别,介绍,数据面,是,由,Envoy,代理,组成,的,以,Sidecar,的,形式,和,每个,服务,部署,在,一起,所有,服务,之间,的,流量,都,经过,Envoy,代理,由,Envoy,负责,流量,管理,负载,均衡,熔断,限流,重试,等等,以及,收集,监控,数据,和,链路,追踪,数据,控制面,是,负责,管理,和,配置,数据面,的,组件,包括,Pilot,Citadel,Galley,等等,Pilot,负责,流量,管理,规则,的,配置,和,下发,把,路由,规则,负载,均衡,规则,等等,转换成,Envoy,能,识别,的,配置,下发,给,Envoy,Citadel,负责,安全,相关,的,功能,比如,证书,管理,服务,认证,等等,Galley,负责,配置,的,验证,处理,和,分发,接收,用户,的,配置,规则,验证,后,分发给,其他,控制面,组件,然后,可以,说,一下,控制面,和,数据面,是,通过,xDS,协议,来,通信,的,控制面,通过,xDS,把,配置,下发,给,Envoy,Envoy,也,通过,xDS,上报,一些,状态,数据。
回答,这个,问题,的,关键,是,要,说,清楚,数据面,和,控制面,的,划分,以及,各个,核心,组件,的,作用,不要,混淆,各个,组件,的,功能,另外,要,注意,Istio,的,版本,不同,组件,可能,有,一些,变化,比如,新版本,的,Istio,可能,把,一些,组件,合并,了,或者,架构,有,调整,回答,的,时候,可以,提一下,你,用,的,是,哪个,版本,避免,和,面试官,认知,不一致。
问题3:什么是Sidecar模式?Istio是怎么注入Sidecar的?
这个,问题,考察,你,对,Sidecar,模式,和,Istio,注入,机制,的,理解,我,的,回答,思路,是,先说,Sidecar,模式,是,一种,架构,模式,在,服务,旁边,部署,一个,辅助,的,进程,也就是,Sidecar,用来,处理,一些,和,业务,无关,的,功能,比如,网络,通信,监控,安全,等等,业务,服务,只,需要,关注,业务,逻辑,其他,事情,交给,Sidecar,来,处理,这样,的,好处,是,业务,代码,和,治理,逻辑,解耦,升级,治理,功能,不用,改,业务,代码,也,支持,多语言,因为,Sidecar,是,独立,的,进程,和,业务,服务,的,语言,无关,然后,说,Istio,的,Sidecar,就是,Envoy,代理,以,Sidecar,的,形式,和,每个,服务,部署,在,一起,所有,进出,服务,的,流量,都,经过,Envoy,由,Envoy,来,做,流量,治理,和,监控,等等,然后,说,Istio,注入,Sidecar,的,方式,有,两种,一种,是,手动,注入,用,istioctl,命令,对,Kubernetes,的,YAML,文件,做,注入,把,Envoy,的,容器,配置,加,到,Deployment,里,另一种,是,自动,注入,通过,Kubernetes,的,Mutating Webhook,在,Pod,创建,的,时候,自动,把,Envoy,容器,注入,进去,不需要,手动,改,YAML,自动,注入,需要,给,命名空间,打,标签,开启,自动,注入,然后,这个,命名空间,下,创建,的,Pod,就,会,自动,注入,Sidecar,另外,也,可以,通过,Pod,的,注解,来,控制,某个,Pod,是否,注入,Sidecar。
回答,这个,问题,的,关键,是,要,说,清楚,Sidecar,模式,的,概念,和,好处,以及,Istio,注入,Sidecar,的,两种,方式,和,原理,自动,注入,的,原理,是,Kubernetes,的,Mutating Webhook,这个,点,能,说,出来,会,加分,说明,你,理解,比较,深入。
二、流量管理题
问题4:Istio怎么做流量管理?有哪些流量管理的功能?
这个,问题,考察,你,对,Istio,流量,管理,功能,的,了解,我,的,回答,思路,是,先说,Istio,的,流量,管理,主要,是,通过,VirtualService,和,DestinationRule,这,两个,配置,资源,来,实现,的,VirtualService,用来,定义,流量,的,路由,规则,比如,请求,来了,之后,怎么,路由,到,后端,的,服务,可以,根据,请求,的,内容,比如,URI,Header,等等,来,做,路由,也,可以,做,权重,路由,把,流量,按,比例,分配,到,不同,的,服务,版本,DestinationRule,用来,定义,目标,服务,的,配置,比如,服务,的,版本,划分,负载,均衡,策略,连接,池,配置,异常,点,检测,等等,然后,说,具体,的,流量,管理,功能,包括,第一,请求,路由,根据,请求,内容,把,请求,路由,到,不同,的,后端,服务,或者,服务,版本,第二,灰度,发布,和,蓝绿,部署,通过,权重,路由,把,一部分,流量,导到,新,版本,逐步,扩大,流量,比例,实现,灰度,发布,或者,把,流量,全部,切到,新版本,实现,蓝绿,部署,第三,负载,均衡,支持,多种,负载,均衡,策略,比如,轮询,随机,最少,连接,一致性,哈希,等等,第四,连接,池,管理,配置,TCP,和,HTTP,的,连接,池,参数,比如,最大,连接数,连接,超时,等等,第五,异常,点,检测,自动,检测,不健康,的,后端,实例,把,它,从,负载,均衡,池,里,剔除,一段时间,避免,请求,发到,不健康,的,实例,第六,重试,和,超时,配置,请求,失败,后,自动,重试,的,次数,和,条件,以及,请求,的,超时,时间,第七,熔断,当,后端,服务,出现,问题,的,时候,自动,熔断,快速,失败,避免,级联,故障,第八,流量,镜像,把,生产,的,流量,镜像,一份,到,测试,服务,用来,做,测试,和,验证,不,影响,生产,流量。
回答,这个,问题,的,关键,是,要,说,清楚,Istio,流量,管理,的,核心,配置,资源,VirtualService,和,DestinationRule,的,作用,以及,主要,的,流量,管理,功能,不用,每个,功能,都,说,得,很,详细,但是,要,能,说出,主要,的,几个,功能,和,大概,的,作用,体现,你,对,Istio,流量,管理,功能,的,全面,了解。
问题5:Istio怎么做灰度发布?能具体说一下配置吗?
这个,是,实战,场景,题,考察,你,有没有,实际,用,Istio,做,过,灰度,发布,我,的,回答,思路,是,先说,Istio,做,灰度,发布,主要,是,通过,VirtualService,的,权重,路由,来,实现,的,首先,要,在,DestinationRule,里,定义,服务,的,版本,比如,把,服务,分为,v1,和,v2,两个,版本,通过,Pod,的,标签,来,区分,然后,在,VirtualService,里,配置,路由,规则,把,流量,按,权重,分配,到,v1,和,v2,比如,一开始,v1,占,90%,流量,v2,占,10%,流量,这样,就,有,10%,的,用户,请求,会,到,新版本,v2,观察,一段时间,如果,新版本,没问题,再,调整,权重,比如,v1,占,70%,v2,占,30%,逐步,扩大,新版本,的,流量,比例,直到,最后,v2,占,100%,全部,流量,都,到,新版本,就,完成,了,灰度,发布,如果,过程,中,新版本,有,问题,随时,可以,把,权重,调,回去,全部,流量,回到,v1,快速,回滚,然后,可以,简单,说,一下,配置,的,例子,比如,DestinationRule,里,定义,subsets,v1,和,v2,对应,不同,的,标签,VirtualService,里,route,配置,两个,destination,分别,指向,v1,和,v2,weight,分别,是,90,和,10,这样,就,实现,了,按,权重,分流,另外,也,可以,根据,请求,内容,来,做,灰度,比如,只,让,某些,特征,的,用户,比如,特定,的,Cookie,或者,Header,访问,新版本,其他,用户,还是,访问,旧版本,这样,更,精准,的,灰度,比如,内部,员工,先,用,新版本,或者,某个,地区,的,用户,先,用,新版本,等等。
回答,这个,问题,的,关键,是,要,说,清楚,灰度,发布,的,原理,和,配置,方式,最好,能,说出,具体,的,配置,资源,和,大概,的,配置,内容,体现,你,有,实际,操作,经验,而,不是,只,知道,概念,另外,能,说出,按,请求,内容,灰度,的,方式,会,加分,说明,你,理解,比较,深入,用,得,比较,熟。
三、可观测性题
问题6:Istio怎么做可观测性?有哪些相关功能?
这个,问题,考察,你,对,Istio,可观测性,功能,的,了解,我,的,回答,思路,是,先说,Istio,因为,所有,流量,都,经过,Envoy,Sidecar,所以,能,很,方便,地,收集,各种,可观测性,数据,主要,包括,三个,方面,监控,指标,链路,追踪,和,日志,然后,分别,说,第一,监控,指标,Envoy,会,收集,服务,之间,调用,的,各种,指标,比如,请求,量,错误率,响应,时间,等等,这些,指标,可以,通过,Prometheus,来,采集,和,存储,然后,用,Grafana,做,可视化,展示,Istio,还,自带,了,一些,监控,Dashboard,方便,查看,服务,的,运行,状态,第二,链路,追踪,Envoy,会,在,请求,的,Header,里,注入,链路,追踪,的,相关,信息,比如,TraceID,SpanID,等等,然后,把,这些,数据,上报,给,链路,追踪,系统,比如,Jaeger,Zipkin,等等,这样,就能,看到,一个,请求,经过,了,哪些,服务,每个,服务,的,耗时,是,多少,有没有,错误,等等,方便,排查,问题,和,分析,性能,瓶颈,需要,注意,的,是,Istio,只,负责,在,服务,之间,的,调用,中,传递,链路,追踪,的,Header,应用,内部,的,链路,追踪,还是,需要,应用,自己,来,做,要,把,Envoy,注入,的,Header,继续,往下,传,这样,才能,把,整个,链路,串,起来,第三,日志,Envoy,会,记录,访问,日志,包括,请求,的,来源,目标,响应,码,响应,时间,等等,这些,日志,可以,收集,到,日志,系统,里,比如,ELK,等等,方便,查询,和,分析,另外,Istio,还,有,一个,叫,Kiali,的,组件,专门,做,服务,网格,的,可观测性,和,管理,能,展示,服务,之间,的,拓扑,图,服务,的,运行,状态,流量,情况,等等,非常,直观,方便,了解,整个,服务,网格,的,运行,情况。
回答,这个,问题,的,关键,是,要,说,清楚,Istio,可观测性,的,三个,主要,方面,监控,链路,追踪,日志,以及,相关,的,组件,和,工具,另外,能,说出,Kiali,会,加分,说明,你,对,Istio,生态,比较,了解,还有,链路,追踪,需要,应用,配合,传递,Header,这个,点,能,说,出来,也,会,加分,说明,你,有,实际,经验,知道,其中,的,细节。
四、安全性题
问题7:Istio怎么做服务间的安全认证和授权?
这个,问题,考察,你,对,Istio,安全,功能,的,了解,我,的,回答,思路,是,先说,Istio,的,安全,功能,主要,包括,认证,和,授权,两部分,由,控制面,的,Citadel,组件,来,负责,证书,和,密钥,的,管理,然后,分别,说,第一,认证,Istio,支持,两种,认证,方式,一种,是,服务,到,服务,的,认证,也就是,双向TLS认证,mTLS,服务,之间,通信,的,时候,通过,证书,来,验证,对方,的,身份,并且,通信,内容,是,加密,的,防止,被,窃听,和,篡改,Istio,的,mTLS,是,通过,Envoy,Sidecar,来,实现,的,应用,不用,改,代码,也,不用,自己,管理,证书,Citadel,会,自动,为,每个,服务,生成,和,分发,证书,并且,自动,轮换,证书,非常,方便,mTLS,可以,配置,不同,的,模式,比如,严格模式,所有,请求,都,必须,用,mTLS,许可模式,支持,mTLS,也,支持,明文,方便,逐步,迁移,禁用模式,不,用,mTLS,另一种,是,请求,来源,的,认证,也就是,终端用户认证,比如,JWT,认证,验证,请求,里,的,JWT Token,确认,用户,身份,第二,授权,Istio,支持,基于,角色,的,访问,控制,RBAC,可以,配置,哪个,服务,可以,访问,哪个,服务,哪个,方法,甚至,可以,根据,请求,的,属性,比如,请求,路径,方法,Header,等等,来,做,细粒度,的,授权,控制,通过,AuthorizationPolicy,配置,资源,来,定义,授权,规则,比如,允许,服务A,访问,服务B,的,某个,接口,拒绝,其他,服务,访问,等等,这样,就,能,实现,服务,之间,的,访问,控制,防止,未授权,的,访问,提升,系统,的,安全性。
回答,这个,问题,的,关键,是,要,说,清楚,Istio,安全,的,两个,主要,方面,认证,和,授权,以及,具体,的,实现,方式,mTLS,的,原理,和,模式,能,说,清楚,会,加分,还有,AuthorizationPolicy,的,作用,能,说,出来,也,说明,你,有,实际,了解,另外,能,说出,Citadel,负责,证书,管理,也,体现,你,对,架构,的,理解。
五、实战和排错题
问题8:Istio接入后,服务调用变慢了,可能是什么原因?怎么排查?
这个,是,实战,排错,题,考察,你,有没有,实际,用,Istio,的,经验,和,排错,能力,我,的,回答,思路,是,先说,Istio,接入,后,服务,调用,变慢,可能,有,多个,方面,的,原因,需要,一步步,排查,然后,说,可能,的,原因,和,排查,方法,第一,Sidecar,的,性能,开销,所有,流量,都,经过,Envoy,Sidecar,会,增加,一些,延迟,因为,多,了,一层,代理,还有,TLS,加密,解密,的,开销,如果,开启,了,mTLS,的话,一般,这个,延迟,增加,在,可,接受,范围,内,几毫秒,到,十几毫秒,但是,如果,配置,不,合理,或者,机器,资源,不够,可能,会,更,明显,排查,方法,是,看,Envoy,的,CPU,和,内存,使用,情况,看,是,不是,资源,不够,导致,处理,慢,也,可以,对比,开启,和,关闭,Sidecar,的,延迟,差异,看,是,不是,Sidecar,的,开销,导致,第二,配置,问题,比如,超时,时间,配置,得,太长,或者,重试,次数,配置,得,太多,导致,请求,失败,后,反复,重试,增加,了,整体,的,响应,时间,排查,方法,是,检查,VirtualService,和,DestinationRule,的,配置,看,超时,重试,等等,配置,是,不是,合理,第三,服务,发现,和,负载,均衡,的,问题,比如,后端,服务,的,实例,有,不健康,的,但是,没,被,及时,剔除,导致,请求,发到,不健康,的,实例,超时,后,才,重试,到,健康,实例,增加,了,延迟,排查,方法,是,看,异常,点,检测,的,配置,和,效果,看,后端,实例,的,健康,状态,第四,网络,问题,比如,集群,的,网络,延迟,本身,就,高,或者,有,丢包,等等,排查,方法,是,测试,服务,之间,的,网络,延迟,和,丢包,情况,看,是,不是,基础,网络,的,问题,第五,应用,本身,的,问题,比如,应用,的,性能,变差,了,和,Istio,无关,排查,方法,是,看,应用,的,监控,和,日志,看,应用,本身,的,处理,时间,是,不是,变长,了,然后,说,排查,的,一般,思路,是,先,看,监控,和,链路,追踪,看,延迟,主要,增加,在,哪个,环节,是,Sidecar,处理,的,时间,还是,应用,处理,的,时间,还是,网络,传输,的,时间,定位,到,具体,环节,后,再,针对性,排查,原因,Istio,的,可观测性,功能,在,排错,的,时候,很,有帮助,通过,监控,和,链路,追踪,能,很快,定位,问题,所在。
回答,这个,问题,的,关键,是,要,体现,你,的,排错,思路,和,实际,经验,不要,只,说,一个,原因,要,能,说出,多个,可能,的,原因,和,对应,的,排查,方法,体现,你,思考,问题,的,全面性,和,实际,动手,能力,另外,能,说出,用,Istio,的,监控,和,链路,追踪,来,定位,问题,也,会,加分,说明,你,会,利用,工具,来,排错。
六、总结
以上,就是,我,面试,中,被,问到,的,一些,Istio,相关,的,问题,和,我,的,回答,思路,整理,出来,分享,给,大家,希望,能,给,也,在,准备,面试,或者,学习,Istio,的,朋友,一些,参考,当然,Istio,的,知识点,还有,很多,我,这里,整理,的,只是,我,被,问到,的,一部分,不一定,全面,大家,学习,的,时候,还是,要,系统,地,学习,多,动手,实践,才能,真正,掌握。
另外,我,觉得,面试,的,时候,对于,这类,技术,问题,不仅,要,知道,概念,和,原理,更,重要,的,是,要有,实际,使用,经验,能,说出,具体,怎么,用,遇到,过,什么,问题,怎么,解决,的,这样,才,更,有,说服力,也,更,能,打动,面试官,所以,大家,学习,Istio,的,时候,不要,只,看,文档,和,理论,要,动手,搭,环境,做,实验,甚至,在,项目,里,实际,用,一用,这样,才能,理解,得,更,深入,也,能,积累,实际,经验,面试,的,时候,也,更,有,底气。
最后,希望,大家,都,能,学好,Istio,和,Service Mesh,相关,的,技术,在,面试,中,取得,好,成绩,也,欢迎,大家,在,评论,区,分享,你们,面试,中,遇到,的,Istio,相关,问题,或者,学习,经验,一起,交流,一起,进步,谢谢,大家,的,阅读。
评论(0)
暂无评论,快来抢沙发~
评论功能仅对会员开放,请先登录
登录