Kubernetes面试题(基础向)
一、基础概念
1. 解释Pod与Deployment的关系,为什么生产环境推荐使用Deployment?
2. 开发时如何通过Service暴露应用?ClusterIP、NodePort和LoadBalancer类型的使用场景分别是什么?
3. 解释ConfigMap和Secret的作用,如何在Pod中挂载环境变量?
二、配置管理
apiVersion: apps/v1
kind: Deployment
spec:template:spec:containers:- name: appenvFrom:- configMapRef:name: app-config- secretRef:name: db-credentials
4. 上述配置实现了什么功能?开发时如何创建对应的ConfigMap和Secret?
三、存储管理
5. 解释PV和PVC的关系,开发有状态应用时如何挂载持久化存储?
6. 如何通过emptyDir实现容器间的临时文件共享?
四、开发调试
7. 如何快速查看Pod日志?命令格式是怎样的?
8. 调试时如何进入运行中的容器?kubectl exec命令有哪些常用参数?
五、更新策略
9. 解释滚动更新的过程,如何通过kubectl set image
命令触发更新?
10. 版本回滚的命令是什么?如何查看Deployment的更新历史?
六、健康检查
11. Liveness Probe和Readiness Probe的区别?开发时如何配置HTTP检查端点?
12. 如何设置容器的资源限制(CPU/Memory)?
七、多环境管理
13. 如何通过Namespace隔离开发/测试环境?
14. 使用Kustomize管理不同环境配置的基本目录结构是怎样的?
进阶问题
15. 如何通过Init Container实现应用初始化?
16. 解释Horizontal Pod Autoscaler的工作机制
17. 开发微服务时如何配置网络策略(NetworkPolicy)?
18. 使用StatefulSet的场景有哪些?
实战模拟:
mysql 一主多从 k8s实战
k8s架构图
控制平面(Control Plane)
+----------------------------+
| API Server |◄── kubectl命令/REST API
| (集群网关/状态存储入口) |
+------------+---------------+│▼
+------------+---------------+
| etcd | 调度决策
| (分布式键值存储数据库) │◄──+
+------------+---------------+ ││ │▼ ▼
+------------+---------------+ +-------------------+
| Controller Manager | | Scheduler |
| (节点/副本控制器) | | (Pod调度器) |
+----------------------------+ +-------------------+工作节点(Worker Nodes)
+---------------------------------------------------+
| kubelet | kube-proxy | 容器运行时 |
| (节点代理) | (网络代理) | (Docker等) |
+-------------------+----------------+---------------+▼+-----------+| Pods || (业务容器) |+-----------+
架构核心交互流程:
- 控制平面组件通过API Server协同工作
- 调度器通过Watch机制监听未调度Pod
- 控制器管理器确保集群状态与预期一致
- kubelet定期向API Server汇报节点状态
- 所有组件状态变更都会持久化到etcd
需要可视化矢量图版本吗?我可以提供Draw.io的XML配置文件供您导入编辑。