overview
API Server
kube-apiserver 是 Kubernetes 最重要的核心组件之一, 主要提供以下的功能
- 提供集群管理的 REST API 接口, 包括认证授权、数据校验以及集群状态变更等
- 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据, 只有 API Server 才直接操作 etcd)
访问控制概览
Kubernetes API 的每个请求都会经过多阶段的访问控制之后才会被接受, 这包括认证、授权以及准入控制(Admission Control)等.

- API HTTP handler: 处理不同对象的请求
- Authentication Authorization: 认证及鉴权
- Mutating admission:
- Webhook: 可以自定义特定对象的属性值修改规则
- Object Schema Validation: 校验对象是否有效(可以防止上一步修改后的对象有误)
- Validationg admission: 自定义对象的校验逻辑
- Webhook: 不可修改对象属性值。可以自定义特定对象的校验逻辑。
- Persisted to etcd: 保存到 etcd
访问控制细节

- panic recovery: 恐慌恢复
- request-timeout: 超时检查
- authentication: 认证
- audit: 记录审计日志(谁在什么时候修改的什么对象,可以用来甩锅)。
- impoersonation: 冒充其它用户访问
- max-in-flight: 限流
- authorization: 鉴权
- kube-aggregator & CRDs: 将非默认对象请求转发到对应的 aggregate apiservers
- mux:
- resource handler:
- decoding: 解码
- request conversion & defaulting:
- admission: 准入
- REST logic: 校验
- storage conversion & defaulting: 存储到 etcd
- result conversion:
- resource handler: