Kubernetes 中的 API Server 是什么?

在 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 的工作流程是:

  1. 客户端(User、Controller、Scheduler 等)通过 HTTP 请求访问 API Server。
  2. 请求先经过认证授权模块校验。
  3. 然后由准入控制模块进行准入判断。
  4. API Server 从 Etcd 中获取或更新数据。
  5. API Server 根据规则验证请求,确保资源满足规范要求。
  6. API Server 将响应返回给客户端。
  7. Etcd 保存最新的数据并同步其他节点。
  8. API Server 通过 Etcd 监听资源变化,更新内存中对象的缓存。

示例:

  1. 用户通过 kubectl 工具发起创建 Pod 的 API 请求。
  2. 请求被 API Server 接收,首先经过认证授权验证用户权限。
  3. 准入控制模块判断请求是否可以被准入。
  4. API Server 查询 Etcd 获取 Pod 的最新规范及状态。
  5. API Server 验证创建 Pod 请求的参数是否符合规范。
  6. API Server 将创建 Pod 的响应返回给用户。
  7. Etcd 保存 Pod 的最新对象配置并同步到其他节点。
  8. API Server 通过 Etcd 设置监听,接收 Pod 对象变化事件。

所以总结来说,API Server 的主要作用是提供 Kubernetes API 服务和集群管理入口,其主要特征是:

  1. 暴露 Kubernetes API,提供操作入口。
  2. 认证授权,访问控制。
  3. 准入控制,资源准入判断。
  4. 验证和存取 Etcd 数据。
  5. 维护资源的最新状态信息。
  6. 从 Etcd 同步最新数据并设置监听。

它的工作流程是:

  1. 客户端访问 API Server。
  2. 经过认证授权与准入控制。
  3. API Server 从 Etcd 获取或更新最新数据。
  4. API Server 验证请求与资源规范。
  5. 返回响应给客户端。
  6. Etcd 保存最新数据并同步。
  7. API Server 从 Etcd 设置监听接收资源变化。