在 Kubernetes 中,API Server 是集群控制平面组件之一,主要负责提供 Kubernetes API 服务。它是 Kubernetes 控制器和容器之间的接口,所有其他组件都通过 API Server 进行交互。
API Server 的主要作用是:
- 暴露 Kubernetes API,提供了整个集群的操作入口。
- 认证授权,确保只有经过授权的用户可以访问和修改 API 数据。
- 验证和存取 Etcd 中的数据。
- 维护 Kubernetes 对象的实时状态和规范。
API Server 主要包含以下组件:
- API:定义 Kubernetes 支持的 API 规范。
- admission controller:拦截 API 请求,对对象进行准入控制。
- authentication:认证各个用户和组件,确认其身份。
- authorization:根据认证后的身份对用户进行授权,确认其权限。
- etcd:用于持久化存储 Kubernetes 对象数据。
API Server 的工作流程是:
- 客户端(User、Controller、Scheduler 等)通过 HTTP 请求访问 API Server。
- 请求先经过认证授权模块校验。
- 然后由准入控制模块进行准入判断。
- API Server 从 Etcd 中获取或更新数据。
- API Server 根据规则验证请求,确保资源满足规范要求。
- API Server 将响应返回给客户端。
- Etcd 保存最新的数据并同步其他节点。
- API Server 通过 Etcd 监听资源变化,更新内存中对象的缓存。
示例:
- 用户通过 kubectl 工具发起创建 Pod 的 API 请求。
- 请求被 API Server 接收,首先经过认证授权验证用户权限。
- 准入控制模块判断请求是否可以被准入。
- API Server 查询 Etcd 获取 Pod 的最新规范及状态。
- API Server 验证创建 Pod 请求的参数是否符合规范。
- API Server 将创建 Pod 的响应返回给用户。
- Etcd 保存 Pod 的最新对象配置并同步到其他节点。
- API Server 通过 Etcd 设置监听,接收 Pod 对象变化事件。
所以总结来说,API Server 的主要作用是提供 Kubernetes API 服务和集群管理入口,其主要特征是:
- 暴露 Kubernetes API,提供操作入口。
- 认证授权,访问控制。
- 准入控制,资源准入判断。
- 验证和存取 Etcd 数据。
- 维护资源的最新状态信息。
- 从 Etcd 同步最新数据并设置监听。
它的工作流程是:
- 客户端访问 API Server。
- 经过认证授权与准入控制。
- API Server 从 Etcd 获取或更新最新数据。
- API Server 验证请求与资源规范。
- 返回响应给客户端。
- Etcd 保存最新数据并同步。
- API Server 从 Etcd 设置监听接收资源变化。