K8s 进阶面试题
核心定位 本文整理 Kubernetes 进阶面试题,重点覆盖控制面组件、声明式 API、控制器机制、调度、Service、存储、RBAC、Operator 和生产高可用。
1. Kubernetes 控制面有哪些核心组件
1.1. 参考答案
| 组件 | 作用 |
|---|---|
| kube-apiserver | 集群 API 入口,负责认证、鉴权、准入和资源读写 |
| etcd | 保存集群状态数据 |
| kube-scheduler | 为未调度 Pod 选择节点 |
| kube-controller-manager | 运行 Deployment、Node、Job 等控制器 |
| cloud-controller-manager | 对接云厂商负载均衡、节点和路由能力 |
控制面通过 apiserver 统一交互,其他组件通常不直接写 etcd。
2. Kubernetes 声明式 API 的核心思想是什么
2.1. 参考答案
声明式 API 的核心是用户提交期望状态,控制器持续比较期望状态和实际状态,并通过调谐循环让实际状态逐步接近期望状态。
期望状态:Deployment replicas=3
↓
控制器 watch 资源变化
↓
发现实际 Pod 数不足
↓
创建 Pod
↓
实际状态接近期望状态
3. Deployment、ReplicaSet、Pod 的关系
3.1. 参考答案
Deployment 管理 ReplicaSet,ReplicaSet 管理 Pod。
Deployment → ReplicaSet → Pod
Deployment 负责滚动更新、回滚和版本管理;ReplicaSet 负责保证指定数量 Pod;Pod 是最小调度和运行单元。
4. kube-scheduler 调度流程是什么
4.1. 参考答案
调度流程通常分为:
- 过滤阶段:排除不满足资源、亲和性、污点容忍、端口等条件的节点。
- 打分阶段:对可选节点按资源均衡、亲和性、拓扑分布等策略打分。
- 绑定阶段:将 Pod 绑定到得分最高的节点。
调度只负责选择节点,不负责真正启动容器。容器启动由目标节点上的 kubelet 完成。
5. Service 是如何转发流量的
5.1. 参考答案
Service 通过 selector 关联后端 Pod,并由 EndpointSlice 记录后端地址。kube-proxy 根据 Service 和 EndpointSlice 生成转发规则。
Client → Service VIP → kube-proxy 规则 → Pod IP:targetPort
常见 kube-proxy 模式包括 iptables、IPVS,部分 CNI 可通过 eBPF 替代 kube-proxy。
6. PV、PVC、StorageClass 的关系
6.1. 参考答案
| 对象 | 作用 |
|---|---|
| PV | 集群中的实际存储资源 |
| PVC | 用户对存储资源的申请 |
| StorageClass | 动态创建 PV 的模板 |
动态供给流程:
用户创建 PVC
↓
PVC 指定 StorageClass
↓
CSI provisioner 创建 PV
↓
PVC 与 PV 绑定
↓
Pod 挂载 PVC
7. RBAC 如何工作
7.1. 参考答案
RBAC 由 Subject、Role/ClusterRole、RoleBinding/ClusterRoleBinding 组成。
| 对象 | 说明 |
|---|---|
| Subject | 用户、组或 ServiceAccount |
| Role | 命名空间级权限规则 |
| ClusterRole | 集群级权限规则 |
| RoleBinding | 在命名空间内绑定权限 |
| ClusterRoleBinding | 在集群范围绑定权限 |
权限判断可以使用:
kubectl auth can-i get pods --as system:serviceaccount:default:app
8. Operator 的本质是什么
8.1. 参考答案
Operator 是自定义控制器加 CRD 的组合,用 Kubernetes 原生方式管理有状态或复杂应用。
CRD 定义自定义资源类型
Controller watch 自定义资源
Reconcile 负责调谐实际状态
Operator 常用于数据库、中间件、监控系统和机器学习平台等复杂应用的自动化运维。
9. Kubernetes 生产高可用怎么做
9.1. 参考答案
核心方向:
- 多 apiserver 副本,通过负载均衡暴露统一入口。
- etcd 奇数节点集群,定期快照备份。
- controller-manager 和 scheduler 多副本启用 leader election。
- 工作节点跨故障域部署。
- 核心组件监控、日志和告警完善。
- 关键业务使用 PDB、反亲和性和拓扑分布约束。
10. 面试总结
标准回答 Kubernetes 的核心是声明式 API 和控制器调谐模型。用户通过 apiserver 提交期望状态,etcd 保存集群状态,控制器持续 watch 并调谐资源,scheduler 负责为 Pod 选择节点,kubelet 在节点上拉起容器。进阶面试需要重点说明控制器链路、调度流程、Service 转发、PV/PVC/StorageClass、RBAC 权限模型、Operator 的 CRD + Controller 模式,以及生产高可用架构。
关联文档
- K8s 核心概念:理解 Kubernetes 基础对象和核心模型。
- K8s 组件详解:理解控制面与节点组件职责。
- kube-scheduler 完整工作原理:深入理解调度流程。
- K8s Operator 完整详解:理解 CRD 与自定义控制器。
