Kubernetes

K8s 进阶面试题

·6 分钟阅读·2367 字

整理 Kubernetes 架构、调度、控制器、Service、网络、存储、RBAC 和 Operator 相关进阶面试题

📋 目录

K8s 进阶面试题

核心定位 本文整理 Kubernetes 进阶面试题,重点覆盖控制面组件、声明式 API、控制器机制、调度、Service、存储、RBAC、Operator 和生产高可用。

1. Kubernetes 控制面有哪些核心组件

1.1. 参考答案

组件作用
kube-apiserver集群 API 入口,负责认证、鉴权、准入和资源读写
etcd保存集群状态数据
kube-scheduler为未调度 Pod 选择节点
kube-controller-manager运行 Deployment、Node、Job 等控制器
cloud-controller-manager对接云厂商负载均衡、节点和路由能力

控制面通过 apiserver 统一交互,其他组件通常不直接写 etcd。

2. Kubernetes 声明式 API 的核心思想是什么

2.1. 参考答案

声明式 API 的核心是用户提交期望状态,控制器持续比较期望状态和实际状态,并通过调谐循环让实际状态逐步接近期望状态。

期望状态:Deployment replicas=3
  ↓
控制器 watch 资源变化
  ↓
发现实际 Pod 数不足
  ↓
创建 Pod
  ↓
实际状态接近期望状态

3. Deployment、ReplicaSet、Pod 的关系

3.1. 参考答案

Deployment 管理 ReplicaSet,ReplicaSet 管理 Pod。

Deployment → ReplicaSet → Pod

Deployment 负责滚动更新、回滚和版本管理;ReplicaSet 负责保证指定数量 Pod;Pod 是最小调度和运行单元。

4. kube-scheduler 调度流程是什么

4.1. 参考答案

调度流程通常分为:

  1. 过滤阶段:排除不满足资源、亲和性、污点容忍、端口等条件的节点。
  2. 打分阶段:对可选节点按资源均衡、亲和性、拓扑分布等策略打分。
  3. 绑定阶段:将 Pod 绑定到得分最高的节点。

调度只负责选择节点,不负责真正启动容器。容器启动由目标节点上的 kubelet 完成。

5. Service 是如何转发流量的

5.1. 参考答案

Service 通过 selector 关联后端 Pod,并由 EndpointSlice 记录后端地址。kube-proxy 根据 Service 和 EndpointSlice 生成转发规则。

Client → Service VIP → kube-proxy 规则 → Pod IP:targetPort

常见 kube-proxy 模式包括 iptables、IPVS,部分 CNI 可通过 eBPF 替代 kube-proxy。

6. PV、PVC、StorageClass 的关系

6.1. 参考答案

对象作用
PV集群中的实际存储资源
PVC用户对存储资源的申请
StorageClass动态创建 PV 的模板

动态供给流程:

用户创建 PVC
  ↓
PVC 指定 StorageClass
  ↓
CSI provisioner 创建 PV
  ↓
PVC 与 PV 绑定
  ↓
Pod 挂载 PVC

7. RBAC 如何工作

7.1. 参考答案

RBAC 由 Subject、Role/ClusterRole、RoleBinding/ClusterRoleBinding 组成。

对象说明
Subject用户、组或 ServiceAccount
Role命名空间级权限规则
ClusterRole集群级权限规则
RoleBinding在命名空间内绑定权限
ClusterRoleBinding在集群范围绑定权限

权限判断可以使用:

kubectl auth can-i get pods --as system:serviceaccount:default:app

8. Operator 的本质是什么

8.1. 参考答案

Operator 是自定义控制器加 CRD 的组合,用 Kubernetes 原生方式管理有状态或复杂应用。

CRD 定义自定义资源类型
Controller watch 自定义资源
Reconcile 负责调谐实际状态

Operator 常用于数据库、中间件、监控系统和机器学习平台等复杂应用的自动化运维。

9. Kubernetes 生产高可用怎么做

9.1. 参考答案

核心方向:

  1. 多 apiserver 副本,通过负载均衡暴露统一入口。
  2. etcd 奇数节点集群,定期快照备份。
  3. controller-manager 和 scheduler 多副本启用 leader election。
  4. 工作节点跨故障域部署。
  5. 核心组件监控、日志和告警完善。
  6. 关键业务使用 PDB、反亲和性和拓扑分布约束。

10. 面试总结

标准回答 Kubernetes 的核心是声明式 API 和控制器调谐模型。用户通过 apiserver 提交期望状态,etcd 保存集群状态,控制器持续 watch 并调谐资源,scheduler 负责为 Pod 选择节点,kubelet 在节点上拉起容器。进阶面试需要重点说明控制器链路、调度流程、Service 转发、PV/PVC/StorageClass、RBAC 权限模型、Operator 的 CRD + Controller 模式,以及生产高可用架构。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro