K8s 架构 一问一答面试题(直接背)
K8s 架构 一问一答面试题(直接背)
适合面试官口头提问,回答就是上面卡片内容,简短干练
1. 问:介绍下 K8s 整体架构?
答:K8s 分为控制平面和Worker 工作节点。控制平面是集群管理大脑,Worker 节点用来运行业务 Pod。所有组件都通过 apiserver 交互,etcd 存储集群状态。
2. 问:控制平面有哪些核心组件,各自作用?
答:
- kube-apiserver:集群唯一 API 入口,负责认证鉴权,唯一读写 etcd。
- etcd:分布式键值存储,保存集群所有资源状态。
- kube-scheduler:监听未调度 Pod,筛选合适 Node 节点完成绑定。
- kube-controller-manager:内置各类控制器,持续调谐,保证实际状态等于期望状态。
- cloud-controller-manager(可选):对接云厂商 API。
3. 问:Worker 节点有哪些组件?
答:
- kubelet:节点代理,管理本机 Pod 生命周期,调用容器运行时创建容器,上报状态。
- kube-proxy:维护节点网络规则,实现 Service 负载均衡。
- 容器运行时(containerd):底层负责拉镜像、运行容器,遵循 CRI 接口。
4. 问:简述 kubectl apply 一个 Deployment 的完整流程?
答:
- kubectl 把 Deployment 提交给 apiserver,apiserver 校验后写入 etcd。
- controller-manager 监听到 Deployment,创建 ReplicaSet,再生成未调度 Pod 写入 etcd。
- scheduler 监听到未绑定 Pod,按策略选 Node,把 Pod 绑定到目标节点。
- 目标节点 kubelet 监听到属于自己的 Pod,调用 containerd 拉镜像、启动容器。
- kubelet 持续上报 Pod 状态到 apiserver,存入 etcd。
- kube-proxy 监听 Service 和 Endpoint 变化,更新本机转发规则。
5. 问:Pod 一直 Pending,怎么排查?
答:优先kubectl describe pod查看事件。
大概率:节点资源不足、污点和容忍不匹配、节点亲和性冲突、端口占用、镜像拉取失败。区分是调度阶段问题,还是容器启动阶段问题。
6. 问:节点显示 NotReady,排查思路?
答:先看 kubelet 状态和日志。
常见原因:kubelet 和 apiserver 通信异常、证书失效、节点磁盘 / 内存 / PID 压力触发驱逐、containerd 异常、网络不通。
7. 问:Service 无法访问,排查思路?
答:
- 先看 Endpoint 是否正常,确认后端 Pod 就绪。
- 查看 kube-proxy 状态和日志;ipvs 模式检查内核模块是否加载。
- 检查内核 ip 转发、节点防火墙策略。
- 测试 Pod 之间网络连通性,定位是 service 转发问题还是 Pod 网络问题。
8. 问:etcd 作用?有什么注意事项?
答:etcd 是集群状态的持久化存储,强一致性。
注意:对磁盘 IO 延迟敏感;生产部署 3/5 节点高可用;定期备份;禁止直接手动修改 etcd 原始数据。
9. 问:kube-controller-manager 的调谐(reconcile)是什么意思?
答:控制器持续对比用户期望状态和集群实际状态,如果不一致,就执行操作让实际状态向期望状态对齐,这个循环过程就是调谐。
10. 问:apiserver 是什么角色?
答:整个集群唯一网关,所有组件、kubectl 都和它通信;负责认证、鉴权、准入控制;只有 apiserver 可以读写 etcd。
11. 问:CoreDNS 作用?
答:集群内部 DNS 服务,负责把 Service 名称解析成 ClusterIP。集群内 Pod 之间可以直接用 service 名字互相访问。
12. 问:kube-scheduler 调度时会考虑哪些因素?
答:节点资源(CPU 内存)、节点亲和 / 反亲和、Pod 亲和反亲和、污点和容忍、端口占用、节点标签。
浙公网安备 33010602011771号