Kubernetes面试真题及答案,Kubernetes面试常见问题解析随着云原生技术的快速发展,Kubernetes已成为容器编排领域的事实标准,掌握Kubernetes技术也成为许多IT从业者的必备技能。我们这篇文章将深入剖析Kube...
K8s面试常见问题,Kubernetes面试指南
公务知识2025年04月12日 10:45:561admin
K8s面试常见问题,Kubernetes面试指南Kubernetes(简称K8s)作为当前容器编排领域的事实标准,其相关岗位的面试往往涉及广泛而深入的技术考察。我们这篇文章系统梳理了Kubernetes面试中高频出现的核心问题,包含基础概
K8s面试常见问题,Kubernetes面试指南
Kubernetes(简称K8s)作为当前容器编排领域的事实标准,其相关岗位的面试往往涉及广泛而深入的技术考察。我们这篇文章系统梳理了Kubernetes面试中高频出现的核心问题,包含基础概念类问题;架构设计类问题;网络相关难题;存储解决方案;安全实践要点;故障排查技巧;场景设计难题等七大类问题,并附有详细解答和扩展知识点,帮助求职者全面提升K8s面试通过率。
一、基础概念类高频问题
1. Kubernetes核心组件及其作用
- Master节点组件:API Server(集群入口)、Scheduler(Pod调度)、Controller Manager(维护集群状态)、etcd(键值数据库)
- Node节点组件:Kubelet(节点代理)、Kube-proxy(网络代理)、Container Runtime(容器运行时)
2. Pod与容器的本质区别
Pod是K8s最小调度单元,可包含一个或多个容器(共享网络命名空间和存储卷)。典型场景包括:
- 主容器+Sidecar容器(如日志收集)
- 需要紧密耦合的应用(如Web服务器与缓存服务)
二、架构设计深度问题
1. Deployment/StatefulSet/DaemonSet的适用场景对比
控制器类型 | 典型特征 | 使用场景 |
---|---|---|
Deployment | 无状态、滚动更新 | Web应用、微服务 |
StatefulSet | 稳定网络标识、持久存储 | 数据库、有状态中间件 |
DaemonSet | 每个节点运行1个Pod | 日志收集、节点监控 |
2. 自定义控制器(Custom Controller)的实现原理
通过client-go库监听K8s API事件(Create/Update/Delete),结合Operator模式实现业务逻辑。关键步骤包括:
- 定义Custom Resource(CRD)
- 实现Informer事件处理机制
- 编写协调循环(Reconcile Loop)
三、网络相关核心难题
1. Service的ClusterIP实现原理
- kube-proxy通过iptables/ipvs规则将虚拟IP转发到后端Pod
- 典型流量路径:Client → ClusterIP → iptables → Endpoint Pod
2. Ingress与LoadBalancer的选型建议
- LoadBalancer:云厂商提供的L4层负载,每个Service独立外网IP
- Ingress:L7层路由(支持HTTP/HTTPS),通过Ingress Controller(如Nginx)实现
- 生产环境推荐组合使用:LoadBalancer暴露Ingress Controller,再由Ingress路由内部服务
四、存储解决方案精要
1. PV/PVC的设计哲学
- PersistentVolume(PV):集群存储资源(如NFS卷、云磁盘)
- PersistentVolumeClaim(PVC):用户存储请求(指定大小和访问模式)
- 动态供给(StorageClass)可自动按需创建PV
2. 有状态应用数据持久化方案
- StatefulSet + Headless Service + PVC(推荐方案)
- 注意设置Pod反亲和性避免节点单点故障
- 定期备份etcd集群数据和PV快照
五、安全实践关键要点
1. RBAC授权最佳实践
- 遵循最小权限原则
- 使用Role/ClusterRole定义权限集
- 通过RoleBinding/ClusterRoleBinding关联账户
2. Pod安全策略(PSP)配置示例
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted
spec:
privileged: false # 禁止特权模式
allowPrivilegeEscalation: false
requiredDropCapabilities: # 必须丢弃的危险Capability
- ALL
volumes:
- 'configMap'
- 'emptyDir'
- 'persistentVolumeClaim'
六、故障排查黄金法则
1. Pod异常排查流程
kubectl describe pod <name>
查看Events信息kubectl logs <pod> [-c container]
检查容器日志- 进入Pod调试:
kubectl exec -it <pod> -- sh
- 检查资源配额:
kubectl top pod/node
2. 网络连通性测试方法
- 跨节点通信:使用
curl <ClusterIP>:<port>
测试Service - DNS解析:
nslookup <service-name>
验证CoreDNS - 网络策略:检查NetworkPolicy是否阻止流量
七、场景设计进阶问题
1. 设计高可用MySQL集群方案
- 使用StatefulSet确保Pod有序部署
- 通过Headless Service提供稳定DNS解析
- 配置ReadWriteOnce PVC存储数据
- 添加PodDisruptionBudget保障最小可用实例
2. 实现蓝绿发布的技术路径
- 创建v2 Deployment(与v1标签不同)
- 通过Service selector切换流量
- 验证通过后删除v1资源
- (可选)结合Ingress Canary功能逐步放量
面试实战Q&A
面试官常问:如何优化K8s集群性能?
- 节点层面:合理设置requests/limits,启用HPA自动扩缩容
- 调度优化:使用节点亲和性/反亲和性,配置Pod拓扑分布
- 网络加速:选择高性能CNI插件(如Calico eBPF模式)
如何证明你的K8s实战经验?
- 展示故障排查案例(如OOMKilled问题分析)
- 讨论自定义Operator开发经历
- 介绍集群监控方案(Prometheus+Granfa告警配置)