Hello folks,
作为 Kubernetes 编排生态中最重要的核心组件之一,kube-apiserver 用于集群管理的 REST API 接口,包括身份验证和授权、数据验证和集群状态更改等以及其他模块之间数据交互和通信的枢纽。
废话不多说,以图以蔽之 ~
Kube-APIServer 提供 K8 的 REST API,实现身份验证、授权和准入控制等安全验证功能,以及负责集群状态的存储操作。其基本工作原理如下所示:
以 “/apis/batch/v2alpha1/jobs” 为例,GET 请求的处理过程如下图所示:
以 “/apis/batch/v2alpha1/namespacess/$NAMESPACE/jobs/xxx” 为例,POST 请求的处理过程如下图所示:
API Endpoints 模型如下所示:
注:不同版本可能存在部分差异
Kubernetes API 是一个以 JSON 为主要序列化模式的 HTTP API,但它也支持协议缓冲区,主要用于集群内部通信。出于可扩展性的原因,Kubernetes 支持不同 API路径上的多个 API 版本,例如: /api/v1 或 /apis/extensions/v1beta1。不同的 API 版本意味着不同级别的稳定性和支持:
1、Alpha 级别,例如 v1alpha1 默认禁用,对功能的支持可以随时放弃。
2、Beta 级别,例如 v2beta3,默认启用,这意味着代码经过了良好的测试,但在随后的测试版或稳定版本中,对象的语义可能会以不兼容的方式发生变化。
3、稳定级别,v1 将出现在许多后续版本的已发布软件中。
以及所对应的 API Group 相关参考模型如下所示:
针对 APIServer 更多的内部技术细节,笔者将在后续的文章中描述,敬请期待。
Adiós !