Kubernetes面试题
K8s基础概念
核心架构
- 什么是Kubernetes?它解决了什么问题?
- K8s的架构是怎样的?Master和Node的组件有哪些?
- etcd在K8s中的作用是什么?为什么选择etcd?
- API Server的作用是什么?其他组件如何与它交互?
- Controller Manager包含哪些控制器?工作原理?
- Scheduler的调度流程是怎样的?
- Kubelet的主要功能有哪些?
- Kube-proxy的工作模式有哪些?各自的优缺点?
核心概念
- 什么是Pod?为什么K8s使用Pod而不是容器?
- Pod和容器的关系是什么?一个Pod中多个容器如何通信?
- Pod的生命周期有哪些阶段?
- 什么是Label和Selector?使用场景?
- Annotation和Label的区别?
- Namespace的作用是什么?如何实现资源隔离?
部署与安装
安装方式
- K8s有哪些安装方式?各自的优缺点?
- 你们K8s是什么版本?为什么选择这个版本?
- Kubeadm安装K8s的流程是什么?
- 二进制安装K8s的关键步骤有哪些?
- 如何实现K8s的高可用?Master节点如何部署?
- 你们使用什么容器运行时?Docker还是Containerd?
集群管理
- 如何新增一个Node节点?
- 如何安全下线一个Node节点?
- 忘记了kubeadm join命令怎么办?
- K8s证书过期如何处理?
- 如何升级K8s集群?需要注意什么?
Pod管理
Pod配置
- Pod的资源限制(requests和limits)的区别?
- 如何合理设置CPU和内存限制?
- QoS类别有哪些?如何影响Pod调度?
- 初始化容器的作用和使用场景?
- Pod的重启策略有哪些?
健康检查
- 什么是存活探针(Liveness Probe)?使用场景?
- 什么是就绪探针(Readiness Probe)?使用场景?
- 什么是启动探针(Startup Probe)?与其他探针的区别?
- 探针的检测方式有哪些?如何选择?
- 探针配置不当会导致什么问题?
Pod调度
- K8s的调度策略有哪些?
- 节点亲和性和Pod亲和性的区别?
- 污点(Taint)和容忍(Toleration)的作用?
- 如何实现Pod的定向调度?
- 优先级和抢占是如何工作的?
- 如何处理Pod调度不均衡的问题?
工作负载
控制器类型
- Deployment的更新策略有哪些?
- ReplicaSet和Deployment的关系?
- StatefulSet和Deployment的区别?使用场景?
- DaemonSet的作用和使用场景?
- Job和CronJob的区别?如何处理失败?
- 什么时候使用StatefulSet而不是Deployment?
扩缩容
- HPA(水平自动扩缩容)的工作原理?
- VPA(垂直自动扩缩容)与HPA的区别?
- 如何基于自定义指标进行扩缩容?
- Cluster Autoscaler是如何工作的?
服务发现与负载均衡
Service
- Service有哪几种类型?各自的使用场景?
- ClusterIP、NodePort、LoadBalancer的区别?
- Service是如何实现负载均衡的?
- 什么是Headless Service?使用场景?
- ExternalName Service的作用?
Ingress
- Ingress和Service的区别?
- Ingress Controller有哪些?如何选择?
- 如何配置HTTPS证书?
- Ingress的路径匹配规则?
- 如何实现灰度发布?
服务网格
- 什么是Service Mesh?解决什么问题?
- Istio的架构和核心组件?
- Sidecar模式的优缺点?
- 如何实现流量管理和故障注入?
存储管理
存储概念
- PV和PVC的关系是什么?
- StorageClass的作用?动态供给如何实现?
- 存储的访问模式有哪些?
- PV的回收策略有哪些?
- 本地存储和网络存储的选择?
存储实践
- ConfigMap和Secret的区别?使用场景?
- 如何挂载配置文件到Pod?
- 你们使用什么存储方案?NFS、Ceph还是云存储?
- 如何实现数据的持久化?
- StatefulSet的存储是如何管理的?
网络管理
网络模型
- K8s的网络模型有什么要求?
- 集群内部网络通信是如何实现的?
- Service的网络是如何实现的?
CNI插件
- 常见的CNI插件有哪些?如何选择?
- Flannel的工作原理?VXLAN模式?
- Calico的工作原理?为什么性能更好?
- 如何实现网络策略(Network Policy)?
- 跨节点Pod通信的流程?
安全管理
认证授权
- K8s的认证方式有哪些?
- 什么是RBAC?如何配置?
- ServiceAccount和User Account的区别?
- 如何限制Pod的权限?
- 如何管理集群的证书?
安全策略
- Pod Security Policy/Pod Security Standards是什么?
- 如何限制容器的系统调用?
- 如何实现镜像安全扫描?
- Secrets的加密存储如何实现?
- 如何审计K8s的操作?
监控与日志
监控方案
- K8s需要监控哪些指标?
- Prometheus如何自动发现K8s资源?
- metrics-server的作用是什么?
- 如何监控K8s的各个组件?
- 告警规则如何设置?
日志管理
- Pod日志如何收集?有哪些方案?
- 如何实现日志的集中管理?
- 容器日志和系统日志的区别?
- 日志收集对性能的影响?
可观测性
- 什么是K8s的可观测性?包含哪些方面?
- 如何实现分布式追踪?
- Prometheus Operator的优势?
- Thanos的架构和作用?
CI/CD集成
部署策略
- K8s支持哪些部署策略?
- 如何实现蓝绿部署?
- 金丝雀发布如何配置?
- 如何实现零停机部署?
GitOps
- 什么是GitOps?核心理念?
- ArgoCD和Flux的区别?
- 如何实现自动化部署?
- 如何管理多环境配置?
故障排查
Pod故障
- Pod一直处于Pending状态的原因?
- Pod反复重启如何排查?
- Pod无法被删除(Terminating)怎么办?
- OOMKilled如何分析和解决?
网络故障
- Service无法访问如何排查?
- Ingress配置后无法访问的原因?
- Pod之间网络不通如何诊断?
- DNS解析失败如何处理?
集群故障
- Node NotReady的可能原因?
- etcd故障如何恢复?
- API Server响应慢如何排查?
- 集群资源不足如何发现和处理?
最佳实践
设计原则
- 如何设计高可用的应用架构?
- 微服务在K8s中的最佳实践?
- 如何做容量规划?
- 资源配额如何设置?
运维实践
- K8s集群备份策略?
- 如何实现多租户隔离?
- 如何优化集群性能?
- 升级和维护的最佳时机?
成本优化
- 如何降低K8s的使用成本?
- 资源利用率如何提升?
- 如何识别和清理僵尸资源?
- Spot实例如何在K8s中使用?
生态工具
包管理
- Helm的作用是什么?Chart结构?
- Kustomize和Helm的区别?
- 如何管理Helm仓库?
- Chart的最佳实践?
其他工具
- Kubectl常用命令和技巧?
- K9s、Lens等管理工具的使用?
- Velero备份工具的原理?
- 如何选择合适的K8s发行版?
云原生集成
云平台
- 不同云平台的K8s服务对比?
- 如何实现混合云部署?
- 云原生存储的选择?
- Serverless K8s的应用场景?
更新时间:2025-01-30