K8S社区架构中对Kubernetes的分层架构有详细的定义。
1. 内核层
Kubernetes最核心功能,对外提供API构建高层的应用,对内提供插件式应用执行环境;
由主流K8S codebase实现(主项目),属于K8S的内核、最小特性集。等同于Linux Kernel;
提供必不可少Controller、Scheduler的默认实现;
集群管理类Controller:Node/gc/podgc/volume/namespace/resourcequota/serviceaccount
2. 应用层
部署(无状态/有状态应用、批处理、集群应用等)和路由(服务发现、DNS解析等);
K8S发行版必备功能和API,K8S会提供默认的实现,如Scheduler;
Controller和scheduler可以被替换为各自的实现,但必须通过一致性测试;
业务管理类Controller:daemonset/replicaset/replication/statefulset/cronjob/service/endpoint
3. 治理层
策略执行和 自动化 编排;
对应用运行的可选层,没有这层功能不影响应用的执行;
自动化API:水平 弹性伸缩 、租户管理、集群管理、动态LB等;
策略API:限速、资源配额、pod可靠性策略、network policy等。
4. 接口层(工具、SDK库、UI等)
K8S官方的项目会提供库、工具、UI等外围工具;
外部可提供自有的实现。
5. 生态层
不属于K8S范围。
其中:
1、内核层:提供最核心的特性最小集以及API,为必选模块;
2、内核层之上:以各种Controller插件方式实现内核层API,支持可替换的实现;
3、内核层之下:是各种适配存储、网络、容器、Cloud Provider等。