
1. Kubernetes面试核心知识点解析作为容器编排领域的事实标准Kubernetes已成为云原生技术栈中不可或缺的一环。在技术面试中面试官通常会从以下几个维度考察候选人的Kubernetes掌握程度1.1 基础架构与核心组件Kubernetes集群由控制平面Control Plane和工作节点Worker Node组成。控制平面包括API Server集群操作的唯一入口处理REST请求etcd分布式键值存储保存集群所有配置数据Controller Manager运行控制器进程如Deployment、Node控制器Scheduler负责将Pod调度到合适的Node工作节点包含kubelet与API Server通信的节点代理kube-proxy维护节点网络规则容器运行时如containerd实际运行容器的软件面试技巧被问到Kubernetes架构包含哪些组件时建议按控制平面和工作节点分类回答并简要说明每个组件的职责。避免简单罗列组件名称。1.2 Pod生命周期与管理Pod是Kubernetes的最小调度单元其生命周期状态包括Pending已创建但未调度或镜像下载中Running已绑定到节点且至少一个容器运行中Succeeded所有容器成功终止Failed至少一个容器异常终止Unknown无法获取Pod状态管理Pod的主要方式Deployment声明式更新应用StatefulSet管理有状态应用DaemonSet确保所有/部分节点运行Pod副本Job/CronJob执行一次性/定时任务1.3 服务发现与网络Kubernetes网络模型要求所有Pod可以不经过NAT互相通信所有节点可以与所有Pod通信Pod看到的自己的IP与其他Pod看到的IP一致服务类型ClusterIP默认类型集群内部IPNodePort通过节点端口暴露服务LoadBalancer使用云提供商负载均衡器ExternalName返回CNAME记录网络策略通过NetworkPolicy资源实现可以定义Pod组之间的通信规则。2. 高频面试问题深度剖析2.1 为什么需要Kubernetes传统部署方式的痛点环境不一致导致在我机器上能运行问题资源利用率低且难以扩展手动部署容易出错且耗时缺乏自愈能力和自动扩缩容Kubernetes提供的解决方案容器化打包应用及其依赖自动化部署和复制动态扩缩容自愈自动重启、替换、杀死不健康容器服务发现和负载均衡2.2 Deployment与StatefulSet的区别对比维度DeploymentStatefulSet适用场景无状态应用有状态应用Pod名称随机生成有序固定如web-0,web-1存储共享存储独立持久化存储网络共享IP和DNS名称每个Pod有稳定网络标识启动顺序并行按序从0到N-1更新策略RollingUpdate/RecreateRollingUpdate/OnDelete2.3 如何排查Pod启动失败问题系统化排查步骤查看Pod描述信息kubectl describe pod pod-name重点关注Events部分检查Pod日志kubectl logs pod-name常见失败原因镜像拉取失败ImagePullBackOff资源不足CPU/Memory不足健康检查失败Liveness/Readiness Probe配置不当端口冲突存储卷挂载失败进入运行中的Pod调试kubectl exec -it pod-name -- /bin/sh3. 进阶面试问题准备3.1 Kubernetes调度机制详解调度器核心功能过滤Predicates排除不满足条件的节点检查资源请求CPU/Memory检查节点选择器/亲和性检查端口冲突检查存储卷可用性评分Priorities为通过过滤的节点打分资源平衡选择资源利用率更均衡的节点亲和性/反亲和性镜像本地性优先选择已有所需镜像的节点自定义调度使用nodeSelector/nodeAffinity/podAffinity编写自定义调度器使用调度框架Scheduling Framework扩展3.2 安全机制与RBACKubernetes安全上下文PodSecurityContext应用于Pod中所有容器SecurityContext应用于单个容器RBAC基于角色的访问控制核心概念Subject用户、组、服务账号Role定义在命名空间内的权限集合ClusterRole定义在集群范围的权限集合RoleBinding将角色绑定到主题命名空间内ClusterRoleBinding将集群角色绑定到主题集群范围示例创建只读角色apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [] resources: [pods] verbs: [get, watch, list]3.3 配置管理与最佳实践ConfigMap和Secret使用场景ConfigMap存储非敏感配置数据环境变量命令行参数配置文件Secret存储敏感信息密码OAuth令牌SSH密钥最佳实践使用声明式配置YAML文件版本控制所有配置文件遵循最小权限原则定期更新镜像和组件监控集群健康状态设置资源请求和限制实现自动化CI/CD流水线4. 实战场景问题解析4.1 滚动更新与回滚策略Deployment更新策略spec: strategy: type: RollingUpdate rollingUpdate: maxSurge: 25% maxUnavailable: 25%参数说明maxSurge更新期间可以超过期望Pod数的最大值百分比或绝对数maxUnavailable更新期间不可用Pod的最大数量回滚操作查看历史版本kubectl rollout history deployment/deployment-name回滚到特定版本kubectl rollout undo deployment/deployment-name --to-revision24.2 HPA自动扩缩容配置Horizontal Pod Autoscaler示例apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: php-apache spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: php-apache minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50支持的指标类型资源指标CPU/Memory自定义指标应用特定指标外部指标非Kubernetes对象指标4.3 网络策略实战案例限制命名空间内Pod间通信apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all spec: podSelector: {} policyTypes: - Ingress - Egress允许特定Pod访问MySQLapiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-mysql spec: podSelector: matchLabels: app: mysql policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: web ports: - protocol: TCP port: 3306在实际面试中除了理论知识面试官往往会关注候选人解决实际问题的能力。建议准备几个自己实践过的Kubernetes项目案例能够清晰描述遇到的挑战、解决思路和最终方案。