2.3.5 Kube-APIServer架构
通常,KubernetesAPI中的每种资源都需要处理 REST请求和管理对象的存储。核心的 KubernetesAPI服务处理内建的资源,如Pod或 Service。如果想为集群添加自定义资源对象,有以下两种方法可以实现。
(1) CRD 是最简单的方式,创建自定义资源对象的时候不需要编程。通常情况下,会将这个自定义资源与一个自定义资源的 Controller结合使用,这就对外提供了一个真正的声明式 API。Controller会同步自定义资源的当前状态和期望状态。
(2) Aggregation可以让用户通过开发和部署单独的 APIServer来实现自定义资源对象,核心的Kube-APIServer会将请求转发到APIServer处理,所有客户端都可以连接。
Kube-APIServer提供了 3种服务,分别是 APIExtensionsServer、KubeAPIServer和 AggregatorServer,它们为上述的应用场景提供不同的资源。
(1) APIExtensionsServer:用 户可以通过 CRD的方式扩展 Kubernetes的服 务,APIExtensions Server处理 CRD和 CR的 REST请求,如果创建未经定义的 CR,则会返回404的状态码。
(2)KubeAPIServer:这个服务是 Kubernetes的核心服务,负责处理内置资源,如Pod、Deployment和Service等。
(3) AggregatorServer:用户可以通过 Aggregation方式扩展 Kubernetes的服务,AggregatorServer负责将用户的请求转发给单独部署的各个 APIServer。