目前 openbayes 的几乎所有组件都部署在 k8s 内部,但 mysql 作为核心的数据存储节点对其要求都蛮高的,对于目前的业务场景,其要求主要包含以下几点:
需要持久化存储,一旦数据丢失问题非常严重
对性能有要求,不然会拖垮依赖它的一切服务
需要一些额外的备份机制,可以快速的从一个备份做恢复
需要对应的监控体系
mysql 需要可以比较容易的通过各种客户端访问,方便不同的角色对数据做分析或者做 debug
*在规模比较大的时候可能会做读写分离
之所以希望将 mysql 部署到 k8s 内主要还是希望达到以下目的:
减少外部依赖,支持更广泛部署场景;目前对于一些环境是使用了云服务商所提供的数据库(aws / ucloud),然而并不是所有的情况都能这么做。
统一部署模式,降低部署门槛;对于无法使用云服务商的数据库的场景,通常需要独立在某一台机器上安装 mysql 但这个部署模式与 k8s 是分离的,相当于多了一部分手工部署的工作量,而且手动部署也很难满足以上的几点要求的,自动化越少,部署门槛就会越高。
下面介绍 presslabs/mysql-operator 如何满足这些要求,实现在一些环境中成功使用 k8s 内的 mysql 的。
基本介绍
在使用云服务商的数据库的时候我就在想,如果能有一套 k8s 的 operator 能够支持快速部署 / 数据库配置 / 周期性备份 / prometheus 指标暴露也不是难事呀,在做了简单的搜索后还真的发现了这么个东西 presslabs/mysql-operator ,满足了说所提及的这一切: