API Server 是唯一连接 etcd 的组件:
┌─────────────────┐
│ etcd │
│ (数据存储) │
└────────┬────────┘
│
唯一连接 ▲
│
┌────────┴────────┐
│ kube-apiserver │
└────────┬────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ scheduler │ │ controller │ │ kubelet │
└─────────────┘ └─────────────┘ └─────────────┘
所有组件都必须通过 API Server 访问集群状态
另外API Server 是集群的"唯一大门”,所有组件必须通过它访问 etcd,同时负责验证"你是谁”(认证)和"你能做什么”(授权),确保集群安全:
kubectl get pods
│
▼
┌───────────────────────────────────────────────────────┐
│ API Server │
├───────────────────────────────────────────────────────┤
│ 1. 认证 (Authentication) │
│ └── 证书/Token 验证 → 确认是 user: admin │
│ │
│ 2. 授权 (Authorization) │
│ └── RBAC 检查 → admin 有权 get pods ✓ │
│ │
│ 3. 准入控制 (Admission Control) │
│ └── 请求是否符合策略(如资源配额) │
│ │
│ 4. 验证通过,查询 etcd │
│ └── 返回 pods 列表 │
└───────────────────────────────────────────────────────┘
│
▼
返回结果
当用户创建一个Pod时,时序图如下:

kubectl run mywebserver --image=nginx)