论文部分内容阅读
Kubernetes是最受欢迎的容器编排系统,已经成为分布式资源调度和自动化运维的事实标准。为了适应成千上万的应用的工作模式,Kubernetes Operators被官方推荐作为在Kubernetes中打包、部署和管理应用的方法。本文工作针对Kubernetes Operator开发中存在的模版代码冗余、非功能性代码繁多、非Go语言使用者开发困难等问题,提出了一种声明式的通用Kubernetes Operator,将其命名为Universal Controller,简称UC,从而实现更简单地开发和部署自定义控制器。具体而言,本文工作的主要内容包括:1.针对Operator开发困难的问题,提出一种声明式的通用Kubernetes调谐(reconciliation)技术,封装编写自定义控制器的一般部分,将核心的自定义调谐逻辑单独抽取出来让开发者实现;添加一种新的自定义资源,用于描述自定义控制器,自定义控制器通过该自定义资源动态定义,在运行时调用实际提供调谐逻辑的服务,显著降低了Operator开发者的工作负担,帮助开发者将精力集中在核心调谐逻辑上。2.实现了声明式的通用Kubernetes Operator,UC,该工具具有声明式的资源监视,声明式的调谐、声明式的更新策略和语言无关的特性,开发者不需要编写任何与Kubernetes交互的代码,只需要在YAML文件中描述需要监视的资源、使用的更新策略以及在调谐代码段中描述期望的状态即可。3.基于UC重新实现了一些现有的Kubernetes Operators,验证了UC可以显著缩减开发工作量,并且适用于大部分场景的开发,并通过性能测试验证了它能在多自定义控制器部署的环境中减少内存消耗和kube-apiserver的负载。