云原生面试题汇总:高频考点与实战解析

云原生面试都考些啥?

最近朋友小李跳槽,面了三家做云计算的公司,每一轮技术面都绕不开“云原生”这三个字。从Docker怎么打包应用,到Kubernetes里Pod调度原理,再到服务网格是不是真有必要上,问题一个比一个细。他边面边记,攒出了一堆高频题,发现很多其实都是实际项目里踩过坑的知识点。

容器基础:别小看启动一个镜像

几乎每场面试都会问:Dockerfile里CMD和ENTRYPOINT有啥区别?这问题看着简单,但答不好容易露怯。比如你写了个微服务,镜像构建时用CMD指定默认参数,但运行时想临时换命令,就得明白ENTRYPOINT才是真正的可执行入口。

FROM nginx:alpine
COPY index.html /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]

这种写法下,如果在docker run后面加参数,会覆盖CMD的内容。但如果换成ENTRYPOINT,那后面的参数就是传给它的,更适合做固定功能的服务容器。

K8s核心概念必问

面试官最爱拿YAML文件让你现场“读代码”。比如给一段Deployment配置,问replicas设为3后,实际Pod没起来可能是什么原因。这时候不能只说“可能是资源不够”,得具体到namespace里的ResourceQuota、节点污点容忍、甚至镜像拉取失败这些真实场景。

还有Ingress和Service的区别,很多人背概念,但一问“用户访问域名是怎么转到后端Pod的”,就开始卡壳。其实链路很清晰:DNS → Ingress Controller → Service(ClusterIP)→ Endpoint → Pod。

实际排错场景常考

有个题挺典型:“线上服务突然变慢,怎么一步步排查?” 这不是让你背八股,而是看思路。先看监控有没有突增流量,再查Prometheus里容器CPU、内存使用率,然后kubectl describe pod看有没有频繁重启,最后进容器top一下进程。如果是Java应用,还得考虑是不是GC停顿太久。

另一个常见问题是:如何实现灰度发布?答案不一定是Istio。有些团队用K8s本身的label selector配合两个Deployment逐步切换流量,成本低也够用。关键是你得说清楚滚动策略和回滚机制。

新技术点也要了解

现在越来越多公司开始用Operator模式管理中间件。面试可能会问:“为什么Redis集群要用Operator来部署?” 其实是因为它能把复杂的运维操作——比如主从切换、数据迁移——封装成CRD,让K8s自己去控制状态,而不是靠脚本一把梭。

还有人会被问到eBPF在可观测性中的作用。别说没听过,现在很多APM工具底层已经用它抓网络包了,不用侵入应用就能拿到调用链数据,比传统埋点轻量多了。

动手能力也不能少

有的公司干脆直接给台测试机,让你现场搭个CI/CD流水线。要求也不复杂:代码提交后自动构建镜像,推到仓库,再更新K8s上的Deployment。这时候GitLab CI或者GitHub Actions都能用,但YAML配置得写对,尤其是kubectl上下文认证那块容易出错。

deploy:
  script:
    - docker build -t myapp:$CI_COMMIT_TAG .
    - docker push myapp:$CI_COMMIT_TAG
    - kubectl set image deployment/myapp container=myapp:$CI_COMMIT_TAG

这类题考的是全流程熟悉度,任何一个环节卡住,都说明实战经验不够。