这几个月参与了几场面试,设计了多道面试题,以为能够综合考察应聘人对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的。
拓展实践篇
拓展实践篇主要面向的高级开发工程师、架构师职位,主要考察实践经验和技术视野。ide
- 设想一个一千台物理机,上万规模的容器的kubernetes集群,请详述使用kubernetes时须要注意哪些问题?应该怎样解决?(提示能够从高可用,高性能等方向,覆盖到从镜像中心到kubernetes各个组件等)
- 设想kubernetes集群管理从一千台节点到五千台节点,可能会遇到什么样的瓶颈。应该如何解决。
- kubernetes的运营中有哪些注意的要点。
- 集群发生雪崩的条件,以及预防手段。
- 设计一种能够替代kube-proxy的实现
- sidecar的设计模式如何在k8s中进行应用。有什么意义。
- 灰度发布是什么。如何使用k8s现有的资源实现灰度发布。
- 介绍k8s实践中踩过的比较大的一个坑和解决方式。