K8S 面试 11 问:面试官想考察什么?
翻译:毛十三
校对:星空下的文仔、bot
近几年,Kubernetes 相关工作岗位在互联网圈中越来越火爆。很多开发人员都因其发展前景与薪资而准备学习或加深了解。恰逢“三金四银”好时节,社区特别奉献《K8S 面试 11 问:面试官想考察什么?》,从面试官角度剖析 11 个 Kubernetes 技术问题的面试技巧。希望可以为正在准备跳槽的工程师们提供一些帮助。
随着 Kubernetes 的普及,IT 专业人员需要具备在生产中运行该技术所需的技能和经验。本文 11 道面试题考察的并不是 Kubernetes 的使用,而是人们对于 Kubernetes 的理解,包括对其架构、原理的认识以及一些实践经验和技术视野。如果你正在学习 Kubernetes,你可以把以下问题作为实践方向。如果你是求职者,你可以针对这些问题自问自答,进行面试准备。
第一阶段:基本知识
第 1 问:什么是 Kubernetes ?
Kubernetes 是一个开源的、用于管理云平台中多个主机上的容器化应用。它的目标是让部署容器化应用变得简单且高效。同时,它提供了应用部署、规划、更新、维护的机制。
这个问题很简单,答案也很基础,但答题者对它的理解不应该只限于死记硬背。它考察的可以只是一个概念,也可以是你对容器编排、对容器的完整认识。从这个问题出发,我们应该能围绕 Kubernetes 的定义、作用和优缺点进行全面阐述。这里读者也要注意一点,以下问题皆需根据实际情况与能力回答,请勿照搬照抄!
第 2 问:容器编排的价值和好处是什么?
容器编排的好处有很多,这里仅以微服务架构为例。微服务是解决企业 IT 长期演进的一种方案,适用于迭代发展很快的系统。同时,它是一种考虑小型团队人员扩展以处理大问题的方法。
这个问题也可以参照《如何为 K8S 提供案例》[1]的一些观点。
第 3 问:容器和主机部署应用的区别是什么?
关于这个问题,大家可以多思考关于容器和 Kubernetes 在速度、效率和可靠性方面的价值。
对面试官来说,如果应聘者之前有过用 Kubernetes 管理容器化微服务的经验,这会是个考察微服务架构了解水平的绝佳机会,值得继续追问。
第二阶段:技术细节
第 4 问:Kubernetes 有哪些组件?
为了运行 Kubernetes,了解它在多个平台或基础设施环境中的构建方法至关重要。关于这一点,你可以阅读 Kubernetes 相关官方文档 [2] 复习一下。
第 5 问:你应该在何时使用 Minikube?
对于要学习 Kubernetes 或者需要本地开发的开发人员来说,Minikube 是一个不错的选择。通过使用 Minikube,我们可以非常快捷地在本地部署一套单节点的 Kubernetes 集群,并且对物理资源没有过高的要求,有一种开箱即用的感觉。在实际生产中,许多组织会使用 VM、IaaS 和本地资源的组合,应聘者可以就此展开,思考 Minikube 的使用情况以及注意事项。
第 6 问:如何在 Kubernetes 中实现负载均衡?
这个问题是个重要考点,它也有关 Kubernetes 的主要优势。如果你无法描述 Kubernetes 中的负载均衡,那么你就错过了一个给面试官留下好印象的机会。
相关问题包括:
在生产中,你如何实现 Kubernetes 自动化?
你如何扩展 Kubernetes 集群?
如果你想延伸更多与技术能力相关的问题,以下内容值得参考:
你能解释 Deployment、ReplicaSets、StatefulSets、Pod、CronJob 的不同用途吗?
Kubernetes 如何处理持久性?
服务和 的作用是什么?
你何时会使用像 或 secret 这样的东西?
Pod 亲和性作用是什么?
你能举例说明何时使用 Init Container 么?
什么是 sidecar 容器?你能给出一个用例,说明你为什么要使用它么?
第三阶段:生产经验
众所周知,在测试或开发环境中运行 Kubernetes 与在生产环境中运行 Kubernetes 是很不一样的。如果面试官想深入了解应聘者的实践经验,他们会在这个方向进行延伸。这是个主动分享、展示实力的好机会!
第 7 问:在构建和管理生产集群时遇到的主要问题是什么?
面试官之所以要问这个问题,很多时候是因为他想知道你解决问题的实际方法和技术水平。所以你的答案中必须包括一个有相当难度的部署问题和与之相应的解决方案。
第四阶段:K8S 的使用目的
作为技术人员,过硬的技术水平固然重要,但大家也要注重培养自己的全局意识和战略思维。这也是面试中的一项重点考察内容,面试官会以具体技术为切入口,考察你对公司决策、技术选择和业务拓展的认识和理解。
第 8 问:为什么你会建议公司在云中构建自己的 K8S 集群而不是使用托管服务?
在回答这个问题时,有的面试官会很欣赏那些询问企业战略侧重点并提出建议的应聘者。
其他问题
参加过面试的读者应该多有体会,面试时,面试官的问题绝不会仅限于 Kubernetes。这点不难理解,如果一名工程师声称自己有 N 年 Kubernetes 使用经验,却连 Helm 都没听说过,那他的水平完全不可信。
下面的问题都围绕 Kubernetes 相关技术,大家可以自我考察:
第 9 问:什么是 Istio 和 Linkerd?
Istio 是一种微服务,它为无缝连接、管理和保护不同微服务网络提供了一种简单的方式,同时不需要在服务中改变任何代码。
Linkerd 是一款开源网络代理,旨在作为服务网格进行部署,一般用于在应用程序内管理、控制和监视服务到服务通信的专用层。
第 10 问:什么是 Kubernetes Operator?
答案一:Kubernetes Operator 是一种在 Kubernetes API 上构建应用程序并在 Kubernetes 上驱动应用程序的方法。
答案二:Kubernetes Operator 允许开发人员为需要维护状态的应用程序提供额外知识,从而扩展可在 Kubernetes 上运行的应用程序类型。
为什么同一个概念可以有两个答案?它们之间又有什么本质联系?你对它又是怎么理解的?这些都是各位读者可以深入思考的问题。
额外建议
除了以上 11 问,读者也可以参考以下 7 个建议,在日常中提升技术水平,总结实践经验:
养成良好的阅读习惯;
创建自己的 Kubernetes 集群;
部署自己的应用程序;
多多尝试 Istio 等相关技术;
研究微服务架构及其存在的原因;
了解从单体应用程序迁移到微服务所涉及的用例;
构建 并使用它来部署包含多个 Kubernetes 组件的非平凡应用程序。
最后,祝大家好运~
--
参考文献:
[1]https://enterprisersproject.com/article/2017/10/how-make-case-kubernetes
[2]https://kubernetes.io/docs/concepts/architecture/
END
推荐阅读: