Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Kubernetes 核心概念

一、Kubernetes 是什么?(Why)

1️⃣ Kubernetes 解决了哪些问题?

在容器规模化之后,出现的问题:

问题 传统方式
容器多、机器多 手工 SSH
服务挂了 人工重启
扩容缩容 人工加机器
服务发现 写 IP
滚动升级 手工停机
多环境隔离 约定

👉 Kubernetes = 容器的“操作系统”

它解决的是: 容器的自动部署、调度、扩缩容、自愈、网络、存储、升级


二、Kubernetes 的整体架构(What)

2️⃣ 架构分层

+----------------------------+
|        用户 / kubectl       |
+-------------+--------------+
              |
+-------------v--------------+
|        Control Plane       |
|    apiserver / scheduler   |
|      controller / etcd     |
+-------------+--------------+
              |
+-------------v--------------+
|            Node            |
|     kubelet / containerd   |
|       kube-proxy / CNI     |
+----------------------------+

3️⃣ 控制平面(Control Plane)

🔹 kube-apiserver(核心中的核心)

  • 所有请求入口(REST API)
  • 认证、鉴权、准入
  • 唯一和 etcd 通信的组件

👉 没有 apiserver,整个集群就不存在


🔹 etcd

  • 分布式 KV 存储
  • 保存 集群所有状态
  • 强一致性(Raft)

⚠️ etcd 满磁盘 = 集群瘫痪


🔹 kube-scheduler

  • 给 Pod 选择运行的 Node
  • 不创建 Pod,只“决策”

流程:

  1. 过滤节点(Filter)
  2. 打分(Score)
  3. 绑定(Bind)

🔹 kube-controller-manager

  • 一堆控制器的集合
  • 保证“期望状态 = 实际状态

常见控制器:

  • Deployment / ReplicaSet
  • Node Controller
  • Endpoint Controller
  • Job Controller

4️⃣ 工作节点(Node)

🔹 kubelet

  • Node 上的“管家”
  • 管理 Pod 生命周期
  • 调用 containerd 创建容器
  • 定期向 apiserver 汇报状态

🔹 container runtime

  • containerd / CRI-O
  • 真正运行容器的组件

🔹 kube-proxy

  • Service 的实现者
  • 维护 iptables / ipvs 转发规则
  • 实现四层负载均衡

🔹 CNI(网络插件)

  • Flannel / Calico / Cilium
  • 给 Pod 分配 IP
  • 维护 Pod 间通信

三、核心对象模型(Object Model)


5️⃣ 什么是 Kubernetes 对象?

Kubernetes 一切皆资源

每个资源都是一个 YAML 对象:

apiVersion
kind
metadata
spec
status

6️⃣ Pod(最小调度单位)

Pod 是什么?

  • 一个或多个容器的组合

  • 共享:

    • IP
    • Network namespace
    • Volume

为什么不直接调度容器?

  • 需要 sidecar
  • 需要共享资源
  • 调度原子性

👉 Pod 是临时的、短生命周期


7️⃣ Workload(工作负载)

类型 用途
Deployment 无状态应用
StatefulSet 有状态服务
DaemonSet 每节点一个
Job 一次性任务
CronJob 定时任务

Deployment

  • 管理 ReplicaSet
  • 滚动升级
  • 回滚

StatefulSet

  • 稳定网络身份
  • 稳定存储
  • 顺序部署

8️⃣ Service(服务抽象)

Service 解决什么问题?

  • Pod IP 会变
  • Pod 会重建
  • 需要统一访问入口

Service 提供

  • 虚拟 IP(VIP)
  • DNS 名称
  • 负载均衡

类型:

  • ClusterIP
  • NodePort
  • LoadBalancer
  • Headless

9️⃣ Ingress(七层流量入口)

  • HTTP/HTTPS 路由
  • TLS 终止
  • 域名转发

Ingress = 规则

Ingress Controller = 实现者(Nginx / Traefik)


四、调度与资源管理(How)


🔟 调度相关概念

NodeSelector

  • 最简单节点选择

NodeAffinity

  • 更灵活的节点亲和

PodAffinity / AntiAffinity

  • Pod 之间关系

1️⃣1️⃣ Taint / Toleration

  • Node 拒绝 Pod
  • Pod 声明我能忍

用途:

  • master 隔离
  • 专用节点
  • GPU 节点

1️⃣2️⃣ 资源管理

requests / limits

  • requests -> 调度依据
  • limits -> 使用上限

1️⃣3️⃣ HPA(自动扩缩容)

  • 基于 CPU / 内存 / 自定义指标
  • 需要 metrics-server

五、存储(Persistence)


1️⃣4️⃣ PV / PVC / StorageClass

名称 作用
PV 实际存储
PVC 存储申请
StorageClass 动态创建

1️⃣5️⃣ Volume 类型

  • emptyDir
  • hostPath
  • NFS
  • CSI(云盘)

六、配置与密钥


1️⃣6️⃣ ConfigMap

  • 配置文件
  • 环境变量

1️⃣7️⃣ Secret

  • 密码
  • Token
  • TLS 证书

七、安全(Security)


1️⃣8️⃣ RBAC

  • Role / ClusterRole
  • RoleBinding
  • ServiceAccount

1️⃣9️⃣ NetworkPolicy

  • Pod 网络访问控制
  • 依赖 CNI 插件

八、生命周期 & 自愈


2️⃣0️⃣ Pod 生命周期

Pending -> Running -> Succeeded / Failed

2️⃣1️⃣ 探针

  • startupProbe
  • readinessProbe
  • livenessProbe

2️⃣2️⃣ 自愈机制

  • Pod 崩溃 -> 重启
  • Node 掉线 -> Pod 漂移
  • 副本不足 -> 自动补齐

九、为什么 Kubernetes 强大?

核心设计思想:

  1. 声明式
  2. 期望状态
  3. 控制循环
  4. 解耦
  5. 自动化

🔚 总结一句话(面试用)

Kubernetes 是一个 以声明式 API 为核心
通过 控制器不断对齐期望状态和实际状态
实现 容器应用自动化管理的平台