对于面试官和求职者来说,面试都是一件困难的事情,但我发现最近面试 Kubernetes 相关职位的候选人尤其困难。 为什么呢? 一方面,很难找到能够回答我一些问题的人。 此外,无论他们如何回答我的问题,都很难确认他们是否拥有正确的经验。
我将跳过我对这个话题的一些思考,直接说出您应该向任何使用 Kubernetes 的求职者提出的问题。
什么是 Kubernetes?
我一直认为这个问题是面试中最好的问题之一。 我总是听到“我使用 Kubernetes”,但是当我问“它是什么?”时,我从未得到一个自信的答案。
我最喜欢的答案来自 Chris Short:“只是一个带有 YAML 文件的 API。”
虽然他说的没错,但我会给你一个更详细的版本。 Kubernetes 是一种可移植的容器编排工具,用于自动化管理、监控、扩展和部署容器化应用程序的任务。
我发现“用于部署容器化应用程序的编排工具”可能是你能得到的最好的答案,在我看来,这已经足够好了。 虽然许多人认为 Kubernetes 增加了更多功能,但总的来说,它提供了许多 API 来添加到这个核心功能:容器编排。
在我看来,这是您在面试中可以提出的最好的问题之一,因为它至少可以证明候选人是否了解 Kubernetes 是什么。
Kubernetes 节点和 Pod 之间有什么区别?
这个问题揭示了 Kubernetes 复杂性的一个很好的第一印象。 它将对话转移到架构概述,并可以引出许多有趣的后续细节。 同样,我已经无数次听过对此的错误解释。
节点是工作机器。 这台机器可以是虚拟机 (VM) 或物理机器,具体取决于您是在虚拟机管理程序上运行还是在裸机上运行。 该节点包含运行容器的服务,包括 kubelet、kube-proxy 和容器运行时。
Pod 包括 (1) 一个或多个容器 (2) 具有共享网络 (3) 和存储 (4) 以及关于如何一起运行部署的容器的规范。 所有这四个细节都很重要。 作为加分项,申请人可以提到,从技术上讲,pod 是 Kubernetes 可以创建和管理的最小可部署单元——而不是容器。
我收到的关于这个问题的最好的简短答案是:“节点是工作者,pod 是容器所在的东西。” 区分很重要。 大多数 Kubernetes 管理员的工作都取决于知道何时部署什么,并且节点可能非常非常昂贵,具体取决于它们在哪里运行。 我不希望有人一遍又一遍地部署节点,而他们需要做的是部署一堆 pod。
什么是 kubectl?(你如何发音?)
这个问题是我优先级较高的问题之一,但它可能与您和您的团队无关。 在我的组织中,我们不使用图形界面来管理我们的 Kubernetes 环境,这意味着命令行操作是我们所做的一切。
那么什么是 kubectl? 它是 Kubernetes 的命令行界面。 您可以从那里获取和设置任何东西,从收集日志和事件到编辑部署和密钥。 弹出关于如何使用这个工具的随机问题来测试面试者对 kubectl 的熟悉程度总是有帮助的。
你如何发音? 嗯,这取决于你(对此存在很大的分歧),但我很乐意向你推荐我的朋友 Waldo 的精彩视频演示。
什么是命名空间?
我在多次面试中没有收到过这个问题的答案。 我不确定命名空间在其他环境中使用是否像在我工作的组织中那样频繁。 我在这里给出一个简短的答案:命名空间是 pod 中的一个虚拟集群。 这种抽象使您可以在各种环境中保留多个虚拟集群以用于隔离目的。
什么是容器?
了解 pod 中部署的内容总是有帮助的,因为如果不知道在其中部署什么,部署又有什么意义呢? 容器是一种标准的软件单元,它将代码及其所有依赖项打包在一起。 我收到并认为可以接受的两个可选的次要答案包括:a) OS 的精简映像和 b) 在有限的 OS 环境中运行的应用程序。 如果你能说出使用容器的编排软件(除了 Docker 之外),比如你最喜欢的公共云的容器服务,那就更好了。
其他问题
如果你想知道为什么我没有在这个问题列表中添加更多内容,我有一个简单的答案给你:当你向候选人提出面试问题时,这些是你应该知道的最低限度的事情。 下一组问题应该来自一个基于您的特定团队、环境和组织的大量问题列表。 在您考虑这些问题时,请尝试找到关于技术如何相互作用的有趣问题,以了解人们如何应对基础设施挑战。 想想您的团队最近遇到的挑战(中断),要求逐步完成部署,或者关于改进您的团队积极想要改进的事情的策略(例如减少部署时间)。 问题越不抽象,您就越能问到面试后真正重要的技能。
[阅读更多:如何准备 Kubernetes 面试]
没有两个环境是相同的,这在您面试人员时也适用。 我在每次面试中都会混用问题。 我还有一个小型环境,可以用来测试面试者。 我总是发现回答问题是最容易的部分,而做实际工作才是您需要进行的真正测试。
我对任何进行面试的人的最后一点建议是:如果你遇到一个有潜力但没有经验的人,给他们一个证明自己的机会。 如果没有人在我身上看到我可以做到的潜力并给我一个机会,我今天就不会拥有我所拥有的知识和经验。
关于 Kubernetes,还有哪些其他重要问题要问面试者? 请在评论中添加您的列表。
评论已关闭。