一次HTTP请求的完整过程。

(1)用户向Kubernetes API Server发出HTTP请求。
(2)Kubernetes API Server接收到用户发出的请求。
(3)Kubernetes API Server启用goroutine处理接收到的请求。
(4)Kubernetes API Server验证请求内容中的认证(auth)信息。
(5)Kubernetes API Server解析请求内容。
(6)Kubernetes API Server调用路由项对应的Handle回调函数。
(7)Kubernetes API Server获取Handle回调函数的数据信息。
(8)Kubernetes API Server设置请求状态码。
(9)Kubernetes API Server响应用户的请求。

架构设计

kube-apiserver为丰富周边工具和库生态系统,提供了3种HTTP Server服务,用于将庞大的kube-apiserver组件功能进行解耦,这3种HTTP Server分别是APIExtensionsSerer、KubeAPIServer、AggregatorServer。
image.png
其中:

  • APIExtensionsServer:API扩展服务,支持自定义CRD。
  • KubeAPIServer:核心API服务,不允许随意更改。
  • AggregatorServer:API聚合服务,提供了AA(APIAggregator)聚合服务,开发者可通过AA对Kubernetes聚合服务进行扩展,比如metrics-server。

无论是APIExtensionsServer、KubeAPIServer还是AggregatorServer,它们都在底层依赖于GenericAPIServer。通过GenericAPIServer可以将Kubernetes资源与REST API进行映射。

启动流程

在kube-apiserver组件启动过程中,代码逻辑可分为9个步骤。如下:
(1)资源注册。
(2)Cobra命令行参数解析。
(3)创建APIServer通用配置。
(4)创建APIExtensionsServer。
(5)创建KubeAPIServer。
(6)创建AggregatorServer。
(7)创建GenericAPIServer。
(8)启动HTTP服务。
(9)启动HTTPS服务。