Kubernetes 是一个高度可扩展的系统,虽然它的扩展点这么多,但是一般来说我们接触的比较多的还是 自定义资源,控制器,准入控制,有些还会对 kubectl 和 调度器做一些扩展,其他的大部分使用成熟的开源组件就可以了。而我们这个系列关注的 Operator 就会涉及到 自定义资源,控制器和准入控制。
Operator 遵循 Kubernetes 的理念,它利用自定义资源管理应用及其组件, Operator 模式会封装你编写的任务自动化代码。
Operator 常见使用范围包括[^6]:
按需部署应用
获取/还原应用状态的备份
处理应用代码的升级以及相关改动。例如,数据库 schema 或额外的配置设置
发布一个 service,要求不支持 Kubernetes API 的应用也能发现它
模拟整个或部分集群中的故障以测试其稳定性
在没有内部成员选举程序的情况下,为分布式应用选择首领角色
从 Operator 理念的提出到现在已经有了很多工具可以帮助我们快速低成本的开发,其中最常用的就是 CoreOS 开源的 operator-sdk 和 k8s sig 小组维护的 kubebuilder,我们这个系列选用 kubebuilder。
除了我们自己开发之外还可以找到别人开发的现成的 Operator 进行使用
总结
Kubernetes 从 2014 年发布至今已经 7 年了,我从毕业加入到现在的团队从事周边的工作也已经快 3 年了,期间虽然对 Kubernetes 已经有了基本的了解但是还是一直都没有对 Kubernetes 本身进行过扩展的开发,这篇文章写完之后算是对 Kubernetes 扩展开发有了一个基本的了解,希望对你也能有所帮助。