kubernetes具备高可配、高扩展特性。自定义kubernetes集群大体上也分成两个方向,一个是配置,一个是扩展。配置又分成修改配置文件、标志与API resources两个小方向,扩展需要运行额外的程序或者服务。
配置文件、标志
配置文件、标志主要应用对象是master node上控制面的各个组件,以及工作node上的总代理kubelet,详细参考链接:
- kubelet
- kube-apiserver
- kube-controller-manager
- kube-scheduler
一般来说,配置在安装、部署阶段就已经确定,在运行过程中不应该再去修改,如果需要修改则说明在安装、部署阶段存在问题,需要在安装部署阶段解决。配置比较复杂,往往是牵一发而动全身,需要从全局考虑。有一些配置由安装工具默认设置,保证可用,如果修改这些值后果不好控制。还有一些配置项不是稳定特性,在将来的版本中有可能发生变更,在版本升级的时候要特别注意。总体而言,在安装部署阶段通过安装工具配置集群,除此之外,除非别无它法,否则不要再修改配置。
配置API resources
API resources是一种kubernetes内建资源类型,它与pod之类的资源类型不同。比如,当用户创建pod后,相当于是用户向集群提出期望,集群控制面通过控制循环不间断的调整集群状态以便与用户的期望相符。API resource类的资源,本质上它是配置数据,配置对象是某些集群内建API的行为,不是用户期望,集群也不会基于此调整集群状态,典型的此类资源有ResourceQuota、PodSecurityPolicies、NetworkPolicy、RBACs等。因为这类资源使用与pod之类的标准资源相同的规约,使用方法类似,随时可以创建销毁,因此它的使用、管理比配置文件、标志方式要方便、灵活,另外这些资源类型也是kubernetes平台的稳定特性,因此这是一种推荐的自定义kubernetes集群的方式。
扩展
扩展是将新的软件组件与kubernetes深度集成以提供新特性,如处理新类型、与新硬件匹配等。大部分情况下,用户应该优先考虑安装已经存在的扩展组件而不是自己开发。
按扩展模式分类
1.控制器扩展
首先,系统内置了很多控制器,大多数运行在kube-controller-manager程序之内。都是无限循环,不间断的监控用户期望并调整集群状态,使真实状态与用户期望状态匹配,用来实现自动化功能。控制器扩展就是用户自定义控制器,控制器通过kubernetes提供的API,读取对象的.spec,相当于用户期望,然后执行必要的动作,再更新对象的.status,相当于是实际状态。总之,控制器扩展就是用户自定义控制器。控制器可能运行在集群外,也可能是集群内。
2.webhook扩展
Kubernetes包含一些挂载点,称为webhook,扩展时可以将挂载点与远程服务挂钩,远程服务称为webhook backend,kubernetes通过 络发送请求向远程服务器请求服务。远程服务器也可运行在集群外,也可以是集群内的服务。
3.二进制控制
这种控制方式主要被kubelet、kubectl使用。本质上就是以插件的方式提供可运行的程序,然后配置kubelet、kubectl ,当执行某些动作时由提供的可执行文件实现。可执行文件并非一定是二进制文件,只要是可执行的程序就可以,格式、语言不限。
按扩展点分类
以上按模式分成三种类型的扩展,以下列出有那些可用的扩展点,也就是用户可以在什么地方扩展。
1.kubectl命令行工具扩展
通过为kubectl提供插件并配置扩展kubectl,属于二进制扩展。这种扩展只对集群中单个kubectl有效,不是全局范围。详细参考kubectl plugins。
2.apiserver扩展
apiserver预留的挂载点,可以与远程服务挂钩,将请求转发出去由远程服务处理,自定义实现比如认证、其于内容的拦截、请求内容转换、删除处理等,详细参考API Access Extensions,这种属于webhook扩展类型。
3.自定义资源扩展
kubernetes除了可以处理系统内建的资源类型如pod,也可以处理用户自定义的资源类型,这种资源称为custom resources,经常需要与其它扩展点组合,这应该也是属于这种属于webhook扩展类型。
4.调度器扩展
就是扩展kubernetes scheduler,详细参考Scheduler Extensions,这属于控制器扩展类型。
5.控制器扩展
无需解释,属于控制器扩展类型。
6.kubelet 络扩展
与kubectl一样,属于二进制扩展类型,参考Network Plugins。
7.kubelet存储扩展
与6同,不解释。
8.动态准入控制扩展
当创建某种类型的资源时,可以在标准流程之外加挂额外处理实现扩展,比如创建之前的初始化工作,称为“Dynamic Admission Control”。参考Admission Control、Image Policy webhook、 Admission webhook、Initializers。
参考文档:https://kubernetes.io/docs/concepts/extend-kubernetes/extend-cluster/
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8699 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!