面试复盘(2411)

总结

整体感觉偏向工具使用类问答,技术深度较弱,问题主要集中在:

  1. XXX 会不会写
  2. XXX 会不会用

例如:

  • nginx 会不会配置
  • Dockerfile 会不会写

这类问题偏向经验确认,没有太多技术讨论。

Kubernetes:Pod 处于 Terminating 状态

其中一个相对有效的问题:

删除 Pod 时,Pod 一直处于 Terminating 怎么办?

回答

Terminating 状态有多种情况,需要先确认具体原因。

例如:

  • Node 节点异常,无法与 APIServer 通讯
  • Pod 挂载的 Volume 无法卸载
  • Finalizer 未清理完成
  • kubelet 无法完成 Pod 删除流程

如果无法优雅删除,可以使用:

bash
1
kubectl delete pod xxx --force --grace-period=0

进行强制删除。

Finalizers

面试过程中提到了 finalizers

text
1
2
3
4
5
6
7
finalizers in the metadata.finalizers field.

When you attempt to delete the resource, the API server handling the delete request notices the values in the finalizers field and does the following:

- Modifies the object to add a metadata.deletionTimestamp field with the time you started the deletion.
- Prevents the object from being removed until all items are removed from its metadata.finalizers field
- Returns a 202 status code (HTTP "Accepted")

知识点补充

finalizers 用于资源删除保护机制。

当资源被删除时:

  1. Kubernetes 不会立即删除对象
  2. 会先写入 deletionTimestamp
  3. 等待所有 finalizers 被移除
  4. finalizer 对应控制器完成清理逻辑后,资源才真正删除

常见场景:

  • 云资源回收
  • PVC/PV 清理
  • Operator 自定义资源回收

排查方式:

bash
1
kubectl get pod xxx -o yaml

查看:

yaml
1
2
metadata:
  finalizers:

如果 finalizer 无法完成,可以手动删除。


结果总结

  • 自我介绍阶段需要主动引导面试方向,否则面试官会根据自身认知展开问题
  • 当双方技术背景差异较大时,容易出现认知不一致,导致沟通效率较低
  • 对于纯“会不会用”类型的问题,可以快速结束,不需要过度展开
  • 如果本身没有入职意向,可以直接提高期望薪资