上个月招运维,筛简历的时候看到一个挺亮眼的:三年经验,精通 Kubernetes,会写 Helm chart,搞过 CI/CD,还说自己调过 CNI 网络问题。我心想终于来个能扛事的了。

面试那天,前面聊得确实顺。问他 pod 调度、探针、ingress 配置,答得头头是道,几个生产场景也说得有模有样。我心里已经开始盘算薪资了。

然后我问了个"热身题":你在 pod 里 curl 一个域名,解析失败,你怎么查?

他愣了一下,说:先看 CNI 插件是不是有问题,检查一下 flannel 或者 calico 的 pod 状态。

我说你先别急着看集群,就问这一条命令的事。他还是绕在 CNI 上,说可能是网络插件和 CoreDNS 的联动问题。

我提醒他:curl 一个域名解析失败,第一步应该是什么?

他沉默了几秒,说:查 CoreDNS?

我叹了口气,说:你先 nslookup 一下这个域名,看看是 NXDOMAIN 还是超时,再看 /etc/resolv.conf 里 nameserver 指向哪。如果 resolv.conf 指向的是 10.96.0.10 也就是 CoreDNS,再去查 CoreDNS。这是从下往上的查法。

他"哦"了一声,说:对,应该是这样。

后面我又问了个基础的:一个服务起不来,你上去第一件事做什么?他说看 pod 日志,kubectl logs。我说对,但如果你连 pod 都调度不上去呢?他想了半天,说看节点资源。

其实答得也不算错,但整个面试下来我有个感觉:他所有排查路径都是"从集群往下看",从来没想过"从一条命令、一个文件往上看"。K8s 对他来说是那个闪闪发亮的壳,里面的东西他不熟。

后来我问他平时看什么文档,他说看 K8s 官方文档和一堆公众号。我问:那 TCP 三次握手你熟吗?他说知道。我问:那 tcpdump 抓包你看得懂吗?他说没怎么用过。

最后没录他。倒不是他不行——如果他进的是纯 K8s 平台组,可能也够用。但我们这活,半夜两点爬起来的时候,你面前往往没有 kubectl,只有一台破服务器和 ssh。你得先会 nslookup、会 netstat、会看 /var/log/messages,然后才有资格谈 CNI。

这事我后来跟朋友聊,他说我太苛刻了,人家会 K8s 就行了,基础可以慢慢补。我说基础当然可以补,但"精通 K8s 却不会查 DNS"这个组合,让我怀疑他的精通是背出来的。面试这东西,聊十分钟就能试出来一个人是真懂还是背题。

当然,我自己也有答不上来的问题。去年别人问我 ingress-nginx 的 annotation 有哪些,我也得现查。但我知道去哪查,这才是关键。