这几个月参与了几场面试,设计了多道面试题,觉得可以综合考察应聘人对kubernetes的掌握情况。在这里分享下,供应聘人自查以及其他面试官参考。
这些面试题的设计初衷并不是考察kubernetes的使用。这种笔者认为较为流于表面,因为这些使用大多可以通过查看文档获得。笔者更多更多考察的是对于kubernetes的理解,包括对其架构、设计及一些相应原理的认识,以及对一些实践经验和技术视野的考察。后续有想到更好的题目,直接在此篇中持续更新。
基础篇
基础篇主要面向的初级、中级开发工程师职位,主要考察对k8s本身的理解。
- kubernetes包含几个组件。各个组件的功能是什么。组件之间是如何交互的。
- k8s的pause容器有什么用。是否可以去掉。
- k8s中的pod内几个容器之间的关系是什么。
- 一个经典pod的完整生命周期。
- k8s的service和ep是如何关联和相互影响的。
- 详述kube-proxy原理,一个请求是如何经过层层转发落到某个pod上的整个过程。请求可能来自pod也可能来自外部。
- rc/rs功能是怎么实现的。详述从API接收到一个创建rc/rs的请求,到最终在节点上创建pod的全过程,尽可能详细。另外,当一个pod失效时,kubernetes是如何发现并重启另一个pod的?
- deployment/rs有什么区别。其使用方式、使用条件和原理是什么。
- cgroup中的cpu有哪几种限制方式。k8s是如何使用实现request和limit的。
拓展实践篇
拓展实践篇主要面向的高级开发工程师、架构师职位,主要考察实践经验和技术视野。
- 设想一个一千台物理机,上万规模的容器的kubernetes集群,请详述使用kubernetes时需要注意哪些问题?应该怎样解决?(提示可以从高可用,高性能等方向,覆盖到从镜像中心到kubernetes各个组件等)
- 设想kubernetes集群管理从一千台节点到五千台节点,可能会遇到什么样的瓶颈。应该如何解决。
- kubernetes的运营中有哪些注意的要点。
- 集群发生雪崩的条件,以及预防手段。
- 设计一种可以替代kube-proxy的实现
- sidecar的设计模式如何在k8s中进行应用。有什么意义。
- 灰度发布是什么。如何使用k8s现有的资源实现灰度发布。
- 介绍k8s实践中踩过的比较大的一个坑和解决方式。