K8S面试精简版
K8s 面试口述卡片(背诵版,简洁,面试直接说)
一、架构一句话 / 三句话
✅一句话
K8s 分为控制平面和工作节点;apiserver 是集群唯一入口,etcd 存集群状态,调度器选节点、控制器维持期望状态;工作节点 kubelet 管理 Pod,kube-proxy 维护 Service 网络,容器运行时跑容器。
✅三句话
- K8s 由控制平面和 Worker 节点组成,apiserver 是所有组件交互入口,etcd 持久保存集群资源状态。
- 控制面 scheduler 给 Pod 选节点,controller-manager 持续调谐,让实际状态等于期望状态。
- 节点上 kubelet 管理 Pod 生命周期,kube-proxy 实现 Service 负载均衡,容器运行时创建容器。
二、创建 Deployment 时序(口述白板版)
- kubectl 请求 apiserver 提交 Deployment
- apiserver 校验后写入 etcd
- controller-manager 监听,生成 ReplicaSet,再创建 Pod(未调度)
- scheduler 监听未绑定 Pod,选 Node,绑定 Pod 并更新 etcd
- 目标节点 kubelet 监听到 Pod,调用容器运行时拉起容器
- kubelet 持续上报 Pod 状态给 apiserver 存入 etcd
- kube-proxy 监听 Service/Endpoint,更新本机转发规则
三、组件故障 & 排查(面试高频)
控制平面
- kube-apiserver
现象:kubectl 超时、连不上、权限报错
排查:端口 6443、证书、etcd 连通、日志,内存 CPU 是否过高 - etcd
现象:apiserver 报错、集群卡顿
排查:etcdctl endpoint health;磁盘 IO / 磁盘满;集群网络、leader 状态;禁止直接改 etcd 原始数据 - kube-scheduler
现象:Pod Pending,0 节点可用
排查:kubectl describe pod看事件;资源不足 / 污点 / 亲和性冲突;scheduler 进程状态 - kube-controller-manager
现象:Deployment 副本不对、节点状态不更新
排查:控制器日志;和 apiserver 连通;多 master 选主是否成功
Worker 节点
- kubelet
现象:节点 NotReady,Pod 起不来、反复 crash
排查:kubelet 服务 & 日志;节点资源压力驱逐;containerd 状态;apiserver 连通、证书 - kube-proxy
现象:Service 访问不通
排查:pod 状态日志;ipvs 内核模块;内核 ip 转发、防火墙;检查 Endpoint 是否就绪 - 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 网络,容器运行时真正拉起容器。
三句话版
- K8s 集群由控制平面和 Worker 节点组成,apiserver 是所有组件交互的唯一入口,etcd 持久化存储集群全部资源状态。
- 控制平面的 scheduler 负责给 Pod 挑选合适节点,controller-manager 持续调谐,保证集群实际状态匹配用户期望。
- 每个工作节点上 kubelet 负责管理本机 Pod 生命周期,kube-proxy 实现 Service 负载均衡,容器运行时负责容器创建。
二、组件交互时序图(文本时序,面试口述可直接画白板)
场景:kubectl 创建 Deployment
kubectl→ 请求 apiserver,提交 Deployment 资源- apiserver 做认证、鉴权、准入校验,通过后写入 etcd
- Deployment 控制器(controller-manager 内部)监听 apiserver,发现新增 Deployment → 创建对应的 ReplicaSet
- ReplicaSet 控制器监听资源,算出需要新建 Pod → 向 apiserver 写入 Pod 资源
- kube-scheduler 监听未绑定节点的 Pod,按策略筛选 Node,将 Pod 与目标 Node 绑定,更新 etcd
- 目标节点上 kubelet 监听 apiserver,发现调度给自己的 Pod 定义
- kubelet 调用容器运行时,拉镜像、创建容器,启动 Pod
- kubelet 持续采集 Pod 状态,上报 apiserver,存入 etcd
- 节点上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 命令超时、拒绝连接、权限报错
排查:
- 查看 apiserver 日志,端口 6443 是否监听
- 证书过期、认证鉴权配置错误
- 无法连接 etcd,etcd 读写超时
- 资源超限(大量 CRD、大对象导致内存 / CPU 打满)
etcd
现象:apiserver 报错、集群操作卡顿、数据不一致
排查:
- 集群健康状态
etcdctl endpoint health - 磁盘 IO 高、磁盘满(etcd 对磁盘延迟极其敏感)
- 节点间网络不通,leader 丢失
- 备份检查,防止数据损坏;禁止直接修改 etcd 原始数据
kube-scheduler
现象:Pod 一直 Pending,事件提示 0/xxx nodes available
排查:
- 看 Pod 事件
kubectl describe pod xxx,看调度失败原因(资源不足、污点、亲和性、端口占用) - scheduler 服务是否正常运行
- 自定义调度器配置、调度策略冲突
kube-controller-manager
现象:Deployment 副本数不达标,节点状态不更新,Service 账号异常
排查:
- 控制器日志,检查是否和 apiserver 通信正常
- 控制器选主失败(多 master 集群)
- 权限不足,无法修改资源
Worker 节点组件
kubelet
现象:节点 NotReady;Pod 无法启动、反复 Crash;Pod 状态上报异常
排查:
- kubelet 服务状态,日志
- 节点磁盘、内存、PID 压力(节点压力驱逐)
- 容器运行时(containerd)是否正常
- 证书、apiserver 连通性;kubelet 配置文件错误
kube-proxy
现象:Service 访问不通,流量无法转发,负载均衡失效
排查:
- kube-proxy pod 状态、日志
- 模式:iptables/ipvs,ipvs 需要内核模块
- 节点防火墙、ip 转发未开启
- Endpoint 没有更新(后端 Pod 没就绪)
容器运行时 containerd
现象:Pod 创建失败,镜像拉取失败,容器启动报错
排查:
- containerd 服务状态,cni 网络插件状态
- 镜像仓库连通性、镜像私有仓库证书
- 存储目录磁盘满,容器镜像损坏
附加组件
- CoreDNS:集群内域名解析失败 → 检查 CoreDNS Pod、Corefile 配置、上游 DNS
- Metrics Server:
kubectl top无数据 → 证书、网络,metrics-server 访问 kubelet 权限
浙公网安备 33010602011771号