API Server

kube-apiserver是Kubernetes最重要的核心组件之一,主要提供以下的功能

  • 提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等
  • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd)

访问控制概览

Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证授权以及准入控制(Admission Control)等。

image-20220226105522480

Api HttpHandler 接收不同对象的请求 再去做 认证, 再去做 变形, 变形可以使用Webhook的方式来实现, 变形完成后,再去Object Schema Validation(内置的校验逻辑) 去校验这个对象是否还是有效的,你还可以去Validating admission(自定义校验逻辑),也是通过webhook的方式实现。所有的步骤完成后 被保存到 ETCD中

访问控制细节

image-20220226105541648

panic recovery : panic 兜底

request-timeout : 检测是否timeout

authentication: 认证

audit: 审计日志

impersonation: 在user的中添加这个参数,可以把请求模拟成另一个用户

max-in-fight: 用来做限流的, 意思是 Apiserver 最大可以同时处理多少个请, 上限是多少

authorization: 鉴权

kube-aggergator& CRDs: 可以用来把部分请求导流给其它API Server 来处理

decodeing : 做解码

admission : 做校验

stroage : 存入ETCD