K8S面试精简版

K8s 面试口述卡片(背诵版,简洁,面试直接说)

一、架构一句话 / 三句话

✅一句话
K8s 分为控制平面和工作节点;apiserver 是集群唯一入口,etcd 存集群状态,调度器选节点、控制器维持期望状态;工作节点 kubelet 管理 Pod,kube-proxy 维护 Service 网络,容器运行时跑容器。

✅三句话

  1. K8s 由控制平面和 Worker 节点组成,apiserver 是所有组件交互入口,etcd 持久保存集群资源状态。
  2. 控制面 scheduler 给 Pod 选节点,controller-manager 持续调谐,让实际状态等于期望状态。
  3. 节点上 kubelet 管理 Pod 生命周期,kube-proxy 实现 Service 负载均衡,容器运行时创建容器。

二、创建 Deployment 时序(口述白板版)

  1. kubectl 请求 apiserver 提交 Deployment
  2. apiserver 校验后写入 etcd
  3. controller-manager 监听,生成 ReplicaSet,再创建 Pod(未调度)
  4. scheduler 监听未绑定 Pod,选 Node,绑定 Pod 并更新 etcd
  5. 目标节点 kubelet 监听到 Pod,调用容器运行时拉起容器
  6. kubelet 持续上报 Pod 状态给 apiserver 存入 etcd
  7. kube-proxy 监听 Service/Endpoint,更新本机转发规则

三、组件故障 & 排查(面试高频)

控制平面

  1. kube-apiserver
    现象:kubectl 超时、连不上、权限报错
    排查:端口 6443、证书、etcd 连通、日志,内存 CPU 是否过高
  2. etcd
    现象:apiserver 报错、集群卡顿
    排查:etcdctl endpoint health;磁盘 IO / 磁盘满;集群网络、leader 状态;禁止直接改 etcd 原始数据
  3. kube-scheduler
    现象:Pod Pending,0 节点可用
    排查:kubectl describe pod看事件;资源不足 / 污点 / 亲和性冲突;scheduler 进程状态
  4. kube-controller-manager
    现象:Deployment 副本不对、节点状态不更新
    排查:控制器日志;和 apiserver 连通;多 master 选主是否成功

Worker 节点

  1. kubelet
    现象:节点 NotReady,Pod 起不来、反复 crash
    排查:kubelet 服务 & 日志;节点资源压力驱逐;containerd 状态;apiserver 连通、证书
  2. kube-proxy
    现象:Service 访问不通
    排查:pod 状态日志;ipvs 内核模块;内核 ip 转发、防火墙;检查 Endpoint 是否就绪
  3. containerd
    现象:Pod 创建失败,镜像拉取不到
    排查:服务状态、CNI;镜像仓库连通、私有仓库证书;磁盘空间

附加组件

  • CoreDNS:集群域名解析失败 → 查 pod 状态、Corefile、上游 DNS
  • Metrics Server:kubectl top 无数据 → 网络、证书、访问 kubelet 权限

四、面试可快速反问(可选)

问:Pod pending 优先看什么?
答:kubectl describe pod看事件,区分调度问题还是容器启动问题。


一、面试精简版

一句话版
K8s 分为控制平面和工作节点;控制平面通过 apiserver 统一入口,etcd 存集群状态,调度器选节点、控制器维持期望状态;工作节点依靠 kubelet 管理 Pod,kube-proxy 维护 Service 网络,容器运行时真正拉起容器。

三句话版

  1. K8s 集群由控制平面和 Worker 节点组成,apiserver 是所有组件交互的唯一入口,etcd 持久化存储集群全部资源状态。
  2. 控制平面的 scheduler 负责给 Pod 挑选合适节点,controller-manager 持续调谐,保证集群实际状态匹配用户期望。
  3. 每个工作节点上 kubelet 负责管理本机 Pod 生命周期,kube-proxy 实现 Service 负载均衡,容器运行时负责容器创建。

二、组件交互时序图(文本时序,面试口述可直接画白板)

场景:kubectl 创建 Deployment

  1. kubectl → 请求 apiserver,提交 Deployment 资源
  2. apiserver 做认证、鉴权、准入校验,通过后写入 etcd
  3. Deployment 控制器(controller-manager 内部)监听 apiserver,发现新增 Deployment → 创建对应的 ReplicaSet
  4. ReplicaSet 控制器监听资源,算出需要新建 Pod → 向 apiserver 写入 Pod 资源
  5. kube-scheduler 监听未绑定节点的 Pod,按策略筛选 Node,将 Pod 与目标 Node 绑定,更新 etcd
  6. 目标节点上 kubelet 监听 apiserver,发现调度给自己的 Pod 定义
  7. kubelet 调用容器运行时,拉镜像、创建容器,启动 Pod
  8. kubelet 持续采集 Pod 状态,上报 apiserver,存入 etcd
  9. 节点上kube-proxy监听 Service/Endpoint 变更,更新本机 iptables/ipvs 规则,实现后端 Pod 流量转发

预览

查看代码

生成失败,请重试

sequenceDiagram
    participant kubectl
    participant apiserver
    participant etcd
    participant controller-manager
    participant scheduler
    participant kubelet
    participant runtime
    participant kube-proxy
    kubectl->>apiserver: 创建Deployment
    apiserver->>etcd: 写入Deployment
    controller-manager->>apiserver: 监听Deployment
    controller-manager->>apiserver: 创建ReplicaSet
    controller-manager->>apiserver: 创建Pod
    apiserver->>etcd: 写入Pod(未调度)
    scheduler->>apiserver: 监听未绑定Pod
    scheduler->>apiserver: 将Pod绑定到Node
    apiserver->>etcd: 更新Pod绑定信息
    kubelet->>apiserver: 监听到调度给自己的Pod
    kubelet->>runtime: 创建容器,启动Pod
    kubelet->>apiserver: 上报Pod状态
    kube-proxy->>apiserver: 监听Service/Endpoint
    kube-proxy->>kube-proxy: 更新网络转发规则

生成失败,请重试

豆包

你的 AI 助手,助力每日工作学习

三、各组件常见故障 & 排查要点(面试高频)

控制平面

kube-apiserver

现象:kubectl 命令超时、拒绝连接、权限报错
排查:

  1. 查看 apiserver 日志,端口 6443 是否监听
  2. 证书过期、认证鉴权配置错误
  3. 无法连接 etcd,etcd 读写超时
  4. 资源超限(大量 CRD、大对象导致内存 / CPU 打满)

etcd

现象:apiserver 报错、集群操作卡顿、数据不一致
排查:

  1. 集群健康状态 etcdctl endpoint health
  2. 磁盘 IO 高、磁盘满(etcd 对磁盘延迟极其敏感)
  3. 节点间网络不通,leader 丢失
  4. 备份检查,防止数据损坏;禁止直接修改 etcd 原始数据

kube-scheduler

现象:Pod 一直 Pending,事件提示 0/xxx nodes available
排查:

  1. 看 Pod 事件 kubectl describe pod xxx,看调度失败原因(资源不足、污点、亲和性、端口占用)
  2. scheduler 服务是否正常运行
  3. 自定义调度器配置、调度策略冲突

kube-controller-manager

现象:Deployment 副本数不达标,节点状态不更新,Service 账号异常
排查:

  1. 控制器日志,检查是否和 apiserver 通信正常
  2. 控制器选主失败(多 master 集群)
  3. 权限不足,无法修改资源

Worker 节点组件

kubelet

现象:节点 NotReady;Pod 无法启动、反复 Crash;Pod 状态上报异常
排查:

  1. kubelet 服务状态,日志
  2. 节点磁盘、内存、PID 压力(节点压力驱逐)
  3. 容器运行时(containerd)是否正常
  4. 证书、apiserver 连通性;kubelet 配置文件错误

kube-proxy

现象:Service 访问不通,流量无法转发,负载均衡失效
排查:

  1. kube-proxy pod 状态、日志
  2. 模式:iptables/ipvs,ipvs 需要内核模块
  3. 节点防火墙、ip 转发未开启
  4. Endpoint 没有更新(后端 Pod 没就绪)

容器运行时 containerd

现象:Pod 创建失败,镜像拉取失败,容器启动报错
排查:

  1. containerd 服务状态,cni 网络插件状态
  2. 镜像仓库连通性、镜像私有仓库证书
  3. 存储目录磁盘满,容器镜像损坏

附加组件

  • CoreDNS:集群内域名解析失败 → 检查 CoreDNS Pod、Corefile 配置、上游 DNS
  • Metrics Server:kubectl top无数据 → 证书、网络,metrics-server 访问 kubelet 权限
posted @ 2026-09-19 21:45  JacobJacob  阅读(31)  评论(0)    收藏  举报