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 建立长连接并持续监听它们关心的资源的变化情况。资源的新建、修改和删除都会通知。