运营商中怎么对Kubernetes进行扩展

  介绍

小编给大家分享一下运营商中怎么对Kubernetes进行扩展,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

Kubernetes有哪些扩展点吗?

Kubernetes,是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化.Kubernetes,拥有一个庞大且快速增长的生态系统.Kubernetes的服务,支持和工具广泛可用[^ 1].

虽然现在Kubernetes已经是容器编排的事实标准,其本身的功能也非常丰富并且灵活,但是也不能满足所有人的需求,在遇到Kubernetes,提供的能力无法满足我们需求的时候,我们就可以利用其强大的扩展能力进行定制。

所以问题来了:<强> Kubernetes有哪些扩展点呢?

操作符中怎么对Kubernetes进行扩展

kubernate扩展

如上图所示,从客户端到底层容器运行时,绝大部分地方Kubernetes都为我们预留了扩展点,我们从上往下一个一个的来看

1。kubectl

kubectl是我们平时和Kubernetes交互使用的最多的客户端工具,常见的运维操作都会通过kubectl来完成,kubectl,为我们提供了插件机制来方便扩展。

kubectl插件其实就是以kubectl——为前缀的任意可执行文件,执行kubectl插件的时候可以通过kubectl插件名参数,的方式运行插件。

就像Ubuntu使用恰当的管理软件,mac可以使用酿造一样,kubectl也有类似的插件管理工具krew[^ 4),同时我们可以从,https://krew.sigs.Kubernetes。io/插件/查找是否已经存在我们需要的插件

2。APIServer

聚合层

从Kubernetes v1.7版本之后APIServer引入了聚合层的功能,这个功能可以让每个开发者都能够实现聚合API,服务暴露它们需要的接口,这个过程不需要重新编译Kubernetes的任何代码[^ 3].

如果我们将下面这个资源提交给Kubernetes之后,用户在访问API服务器的,/API/metrics.Kubernetes。io/v1beta1路径时,会被转发到集群中的,metrics-server.kube-system.svc服务上

 apiVersion:, apiregistration.Kubernetes.io/v1 :, APIService 元数据:,,,名字:,v1beta1.metrics.Kubernetes.io 规范:,,,服务:,,,,,名字:,metrics-server ,,,,名称空间:,kube-system ,,组:,metrics.Kubernetes.io ,,版本:,v1beta1 ,, insecureSkipTLSVerify:, true ,, groupPriorityMinimum:, 100,,, versionPriority:, 100 

准入控制

除此之外无论是从kubectl还是client-go等其他客户端发起的请求都会发送到APIServer经过认证→鉴权→,准入控制的步骤,这其中的每一步我们都可以对其进行扩展,而这其中用的最多的就是准入控制的扩展,这一块后续会一篇文章详细讲到。

准入控制当中又会先经过,变更准入控制MutatingAdmissionWebhook,然后再经过验证准入控制,ValidatingAdmissionWebhook,任何一个准入控制器返回了错误这个请求都会失败,例如这两个准入控制器我们可以做很多事情,例如注入,双轮马车,验证资源,调整舱的配额等等。

3。Kubernetes资源

我们常用的部署、豆荚、节点等都是Kubernetes,官方提供的内置资源,但是有的时候内置的资源无法满足我们的需求的时候,就可以使用CustomResource也就是自定义资源。自定义资源常常会和,控制器一起配合使用,不过需要注意的是使用自定义资源的时候需要思考一下如果只是一些配置可能ConfigMap,会更加适合,不要滥用这个特性。

4。控制器控制器

Kubernetes中资源的状态的维护都是控制器来实现的,控制器,会不断的尝试将一个资源调整为我们描述的状态,这其实也就是我们常说的声明式api,声明式api背后具体的活都是控制器,干的范式一般会配合着CRD一起使用。

5。安排调度器

调度器是一种特殊的控制器,负责监视Pod变化并将Pod分派给节点,调度器可以被直接替换掉或者是使用多个调度器,除此之外官方默认的调度器也支持,WebHook。[^ 5)

6。参股了网络插件

有限公司网络插件,全称集装箱网络接口(容器网络接口)包含一组用于开发插件去配置Linux,容器中网卡的接口和框架。一般我们不会去对网络插件做定制开发,而是采用开源的组件,例如法兰绒,纤毛,如果使用云服务的Kubernetes,还会遇到一些定制的网络插件,例如阿里云有Terway。

7。CSI存储插件

CSI存储插件,全称容器存储接口,可以通过CSI接口支持不同的存储类型

8。CRI容器运行时

运营商中怎么对Kubernetes进行扩展