Kubernetes: Internal: Component: API Server

 9th June 2021 at 4:44pm

kube-apiserver 是 k8s 运转的核心。

请求处理过程

过程:

  • Authentication / Authorization 做鉴权
  • Admission 是一类可以配置开启的 插件,它们可能会修改请求附带的资源,甚至拒绝掉请求。比如:
    • AlwaysPullImage 会将 pod 中的 image pull policy 覆盖为 AlwaysPullImage
    • DenyServiceExternalIPs 会拒绝掉指定了 external IP 的 service
  • Resource validation 校验资源的定义是否合法等等

与其他控制面组件的交互

API server 中并不会有很多逻辑。比如通过 API server 创建了一个 ReplicaSet 后,API server 并不会将相应的 pod 资源对象创建起来;这类事情是各种 controller 在做,比如 ReplicaSetController。

Scheduler 和各类 controller,通过 API server 提供的 watch 能力,向 API server 建立长连接并持续监听它们关心的资源的变化情况。资源的新建、修改和删除都会通知。