K8S二次开发系列之一:进阶玩家该如何扩展自己的K8S


今天给大家介绍几种K8S的扩展点,以满足进阶玩家自定义扩展、二次开发自己的K8S集群。

常见K8S扩展点

下面是一些常见的Kubernetes扩展点:

  1. 自定义资源定义(CRD):CRD允许用户定义自己的Kubernetes资源类型,以便于在Kubernetes集群中管理它们。
  2. 自定义控制器(Controller):和CRD搭配扩展,自定义控制器允许用户编写自己的控制器(Operator)来管理自定义资源类型。这样可以根据特定需求进行定制化开发。还可以基于K8S的watch/informer机制监听K8S资源发生的事件,并做相应的资源变更。
  3. 准入控制器(admission webhook):Kubernetes的三大门神之一(认证、授权、准入),为了集群安全性而引入的一个HTTP回调函数,用来控制一个客户端请求被发送到apiserver前后对其进行处理,以决定是否通过这次请求(验证准入控制器)/或对提交的资源进行变更(变更准入控制器)。
  4. 自定义调度器:Kubernetes的调度器负责将工作负载POD调度到可用的节点上。你可以扩展或替换默认的调度器,以实现特定的调度策略、调度算法或调度规则。
  5. 容器运行时接口(Container Runtime Interface,CRI):CRI是Kubernetes与容器运行时之间的接口。用户可以通过CRI扩展Kubernetes对容器运行时的支持,例如自定义容器运行时、容器存储等。
  6. 自定义存储插件:Kubernetes支持各种存储插件,如CSI(Container Storage Interface)插件。你可以编写自己的存储插件,以与特定的存储后端集成,或者实现自定义的存储功能。
  7. 自定义网络插件:Kubernetes的网络插件,如CNI(Container Network Interface)负责为容器提供网络功能,如跨节点通信和服务发现。你可以开发自己的网络插件,以满足特定的网络需求,或者与特定的网络解决方案集成。现有的网络插件如flannel和calico。
  8. Kubectl插件:K8S允许用户自定义编写kubectl插件,以扩展kubectl的命令。

Kubernetes的扩展点为用户提供了很多定制化的机会,以适应不同的需求和场景。我们可以根据实际需求来选择适合自己的扩展点,并进行相应的定制化开发。

本系列文章将首先从CRD+Operator、Controller、Admission Webhook三个扩展点教你如何二次开发以扩展你的K8S。请关注如下文章:

后续会陆续分享如何开发自定义调度器、kubectl插件(CSI和CNI需要更多的网络和存储知识,以及更多的配套资源,本系列暂不做此研究)


文章作者: 洪宇轩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 洪宇轩 !
评论
 上一篇
K8S二次开发系列之二:自定义开发CRD+Operator K8S二次开发系列之二:自定义开发CRD+Operator
本文使用Operator-SDK工具教你自定义开发自己的Kubernetes-Operator。
2023-07-07
下一篇 
go-zero+opentelemetry+jaeger云原生链路跟踪实践 go-zero+opentelemetry+jaeger云原生链路跟踪实践
opentelemetry是一组可观测领域的标准和规范,基于这个标准提供的各种语言的SDK,通过在代码中打埋点的方式(侵入式),可实现市面上绝大多数语言的链路跟踪功能。
2023-05-05
  目录