1、kubernetes扩展点
kubernetes应用访问层扩展点:webhook、operator、aggregator、容器探针、启停回调、kubectl插件。
kubernetes基础设施层扩展点:调度器扩展、存储插件、网络插件、设备插件。
应用访问层扩展 | |
扩展点 | 说明 |
webhook | WebHook可以独立存在于K8s之外,只要有一个监听端口、能处理http请求的进程即可作为WebHook的回调处理。 |
operator | 狭义上来说,operator = CRD + 自定义Controller,通过自定义的Controller监听CRD对象实例的增删改事件,然后执行相应的业务逻辑。 广义上来说,operator = CRD + 自定义Controller + WebHook,在前者的基础上,可以在CRD对象的生命周期里设置相关的事件回调(WebHook),回调程序一般为外部自定义的一个HTTP URL。 |
aggregator | 被称为"Aggregation Layer"(聚合层)或“apiserver-aggregation”(API Server聚合)。 |
容器探针 | 容器探针就是指kubelet对容器执行的定期诊断,k8s只是定义了探针的规范,并未给出具体的实现,具体的诊断实现逻辑是开放给开发者的,由开发者自定义。 K8s提供3种探针:存活探针、就绪探针、启动探针。 |
启停回调 | 指K8s对容器的启停事件回调 (postStart和preStop事件)。当一个容器启动后,K8s 将立即发送 postStart 事件;在容器被终结之前, Kubernetes 将发送一个 preStop 事件。容器可以为每个事件指定一个自定义的处理程序。在设置具体的回调处理程序时,除了可以使用bash命令,也可以指定一个http url。 |
kubectl插件 | kubectl的插件机制允许开发者以独立的二进制形式发布自定义的kubectl子命令。 |
基础设施层扩展 | |
扩展方案 | 说明 |
调度器扩展 | K8s自带有一个默认调度器(即kube-scheduler),主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将Pod调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源。 如果默认调度器不满足项目需求,用户可以实现自己的调度器。 |
存储插件 | K8s 已经提供丰富的 Volume 和 Persistent Volume 插件,可以根据需要使用这些插件给容器提供持久化存储。如果内置的这些 Volume 还不满足要求,K8s支持使用 FlexVolume 或者容器存储接口CSI 来扩展实现自己的存储插件。 |
网络插件 | K8s通过CNI(Container Network Interface),即容器网络接口来调用不同的网络插件以实现不同的网络配置方式,实现这个接口的就是CNI插件,常见的 CNI 插件包括 Calico、flannel、Terway、Weave Net 以及 Contiv。 |
设备插件 | K8s从v1.8开始引入了Device插件(即设备插件),用来支持GPU、FPGA、高性能 NIC、InfiniBand等各种设备。这样设备厂商只需要根据Device Plugin 的接口实现一个特定设备的插件,而不需要修改K8s核心代码,就可以将厂商自己生产的设备资源让kubelet使用。 |
2、kubernetes应用访问层扩展架构
《k8s应用访问层扩展架构图》
kubernetes应用访问层扩展主要方案:
1、Mutating和Validating的webhook应用开发;
2、使用operator工具通过CRD(CustomResourceDefinitions)做扩展开发;
3、Aggregator API Server;
4、直接修改k8s apiserver源码。
3、kubernetes应用访问层扩展CRD接入prometheus步骤
1、创建自定义资源类型:kubectl get crd -A
2、创建自定义资源的对象:kubectl api-resources
4、更多k8s学习资料
1、kubernetes原理精讲【基础原理+实践篇】
2、kubernetes原理精讲【自签证书原理+实践篇】
3、kubernetes原理精讲【监控体系原理+实践篇】