跳到主要内容

Kubernetes面试题

K8s基础概念

核心架构

  1. 什么是Kubernetes?它解决了什么问题?
  2. K8s的架构是怎样的?Master和Node的组件有哪些?
  3. etcd在K8s中的作用是什么?为什么选择etcd?
  4. API Server的作用是什么?其他组件如何与它交互?
  5. Controller Manager包含哪些控制器?工作原理?
  6. Scheduler的调度流程是怎样的?
  7. Kubelet的主要功能有哪些?
  8. Kube-proxy的工作模式有哪些?各自的优缺点?

核心概念

  1. 什么是Pod?为什么K8s使用Pod而不是容器?
  2. Pod和容器的关系是什么?一个Pod中多个容器如何通信?
  3. Pod的生命周期有哪些阶段?
  4. 什么是Label和Selector?使用场景?
  5. Annotation和Label的区别?
  6. Namespace的作用是什么?如何实现资源隔离?

部署与安装

安装方式

  1. K8s有哪些安装方式?各自的优缺点?
  2. 你们K8s是什么版本?为什么选择这个版本?
  3. Kubeadm安装K8s的流程是什么?
  4. 二进制安装K8s的关键步骤有哪些?
  5. 如何实现K8s的高可用?Master节点如何部署?
  6. 你们使用什么容器运行时?Docker还是Containerd?

集群管理

  1. 如何新增一个Node节点?
  2. 如何安全下线一个Node节点?
  3. 忘记了kubeadm join命令怎么办?
  4. K8s证书过期如何处理?
  5. 如何升级K8s集群?需要注意什么?

Pod管理

Pod配置

  1. Pod的资源限制(requests和limits)的区别?
  2. 如何合理设置CPU和内存限制?
  3. QoS类别有哪些?如何影响Pod调度?
  4. 初始化容器的作用和使用场景?
  5. Pod的重启策略有哪些?

健康检查

  1. 什么是存活探针(Liveness Probe)?使用场景?
  2. 什么是就绪探针(Readiness Probe)?使用场景?
  3. 什么是启动探针(Startup Probe)?与其他探针的区别?
  4. 探针的检测方式有哪些?如何选择?
  5. 探针配置不当会导致什么问题?

Pod调度

  1. K8s的调度策略有哪些?
  2. 节点亲和性和Pod亲和性的区别?
  3. 污点(Taint)和容忍(Toleration)的作用?
  4. 如何实现Pod的定向调度?
  5. 优先级和抢占是如何工作的?
  6. 如何处理Pod调度不均衡的问题?

工作负载

控制器类型

  1. Deployment的更新策略有哪些?
  2. ReplicaSet和Deployment的关系?
  3. StatefulSet和Deployment的区别?使用场景?
  4. DaemonSet的作用和使用场景?
  5. Job和CronJob的区别?如何处理失败?
  6. 什么时候使用StatefulSet而不是Deployment?

扩缩容

  1. HPA(水平自动扩缩容)的工作原理?
  2. VPA(垂直自动扩缩容)与HPA的区别?
  3. 如何基于自定义指标进行扩缩容?
  4. Cluster Autoscaler是如何工作的?

服务发现与负载均衡

Service

  1. Service有哪几种类型?各自的使用场景?
  2. ClusterIP、NodePort、LoadBalancer的区别?
  3. Service是如何实现负载均衡的?
  4. 什么是Headless Service?使用场景?
  5. ExternalName Service的作用?

Ingress

  1. Ingress和Service的区别?
  2. Ingress Controller有哪些?如何选择?
  3. 如何配置HTTPS证书?
  4. Ingress的路径匹配规则?
  5. 如何实现灰度发布?

服务网格

  1. 什么是Service Mesh?解决什么问题?
  2. Istio的架构和核心组件?
  3. Sidecar模式的优缺点?
  4. 如何实现流量管理和故障注入?

存储管理

存储概念

  1. PV和PVC的关系是什么?
  2. StorageClass的作用?动态供给如何实现?
  3. 存储的访问模式有哪些?
  4. PV的回收策略有哪些?
  5. 本地存储和网络存储的选择?

存储实践

  1. ConfigMap和Secret的区别?使用场景?
  2. 如何挂载配置文件到Pod?
  3. 你们使用什么存储方案?NFS、Ceph还是云存储?
  4. 如何实现数据的持久化?
  5. StatefulSet的存储是如何管理的?

网络管理

网络模型

  1. K8s的网络模型有什么要求?
  2. 集群内部网络通信是如何实现的?
  3. Service的网络是如何实现的?

CNI插件

  1. 常见的CNI插件有哪些?如何选择?
  2. Flannel的工作原理?VXLAN模式?
  3. Calico的工作原理?为什么性能更好?
  4. 如何实现网络策略(Network Policy)?
  5. 跨节点Pod通信的流程?

安全管理

认证授权

  1. K8s的认证方式有哪些?
  2. 什么是RBAC?如何配置?
  3. ServiceAccount和User Account的区别?
  4. 如何限制Pod的权限?
  5. 如何管理集群的证书?

安全策略

  1. Pod Security Policy/Pod Security Standards是什么?
  2. 如何限制容器的系统调用?
  3. 如何实现镜像安全扫描?
  4. Secrets的加密存储如何实现?
  5. 如何审计K8s的操作?

监控与日志

监控方案

  1. K8s需要监控哪些指标?
  2. Prometheus如何自动发现K8s资源?
  3. metrics-server的作用是什么?
  4. 如何监控K8s的各个组件?
  5. 告警规则如何设置?

日志管理

  1. Pod日志如何收集?有哪些方案?
  2. 如何实现日志的集中管理?
  3. 容器日志和系统日志的区别?
  4. 日志收集对性能的影响?

可观测性

  1. 什么是K8s的可观测性?包含哪些方面?
  2. 如何实现分布式追踪?
  3. Prometheus Operator的优势?
  4. Thanos的架构和作用?

CI/CD集成

部署策略

  1. K8s支持哪些部署策略?
  2. 如何实现蓝绿部署?
  3. 金丝雀发布如何配置?
  4. 如何实现零停机部署?

GitOps

  1. 什么是GitOps?核心理念?
  2. ArgoCD和Flux的区别?
  3. 如何实现自动化部署?
  4. 如何管理多环境配置?

故障排查

Pod故障

  1. Pod一直处于Pending状态的原因?
  2. Pod反复重启如何排查?
  3. Pod无法被删除(Terminating)怎么办?
  4. OOMKilled如何分析和解决?

网络故障

  1. Service无法访问如何排查?
  2. Ingress配置后无法访问的原因?
  3. Pod之间网络不通如何诊断?
  4. DNS解析失败如何处理?

集群故障

  1. Node NotReady的可能原因?
  2. etcd故障如何恢复?
  3. API Server响应慢如何排查?
  4. 集群资源不足如何发现和处理?

最佳实践

设计原则

  1. 如何设计高可用的应用架构?
  2. 微服务在K8s中的最佳实践?
  3. 如何做容量规划?
  4. 资源配额如何设置?

运维实践

  1. K8s集群备份策略?
  2. 如何实现多租户隔离?
  3. 如何优化集群性能?
  4. 升级和维护的最佳时机?

成本优化

  1. 如何降低K8s的使用成本?
  2. 资源利用率如何提升?
  3. 如何识别和清理僵尸资源?
  4. Spot实例如何在K8s中使用?

生态工具

包管理

  1. Helm的作用是什么?Chart结构?
  2. Kustomize和Helm的区别?
  3. 如何管理Helm仓库?
  4. Chart的最佳实践?

其他工具

  1. Kubectl常用命令和技巧?
  2. K9s、Lens等管理工具的使用?
  3. Velero备份工具的原理?
  4. 如何选择合适的K8s发行版?

云原生集成

云平台

  1. 不同云平台的K8s服务对比?
  2. 如何实现混合云部署?
  3. 云原生存储的选择?
  4. Serverless K8s的应用场景?

更新时间:2025-01-30