在Kubernetes上运行的Cassandra备份

在Kubernetes上运行的Cassandra备份,kubernetes,database-backups,Kubernetes,Database Backups,我有一组3个卡桑德拉吊舱在库伯内特斯上运行。我想对数据进行自动备份,为此,我需要在每个容器内运行nodetool snaphot命令,并需要远程调用它。从架构的角度来看,正确的方法是什么? 我是否需要修改cassandra映像以在其中包含ssh deamon,或者我是否需要在cassandra pods中包含helper容器,或者通过“kubectl exec”Kubernetes API调用来实现这一点?其他选项?我认为k8scronJob资源是通过nodetool备份数据所需的资源。通常,c

我有一组3个卡桑德拉吊舱在库伯内特斯上运行。我想对数据进行自动备份,为此,我需要在每个容器内运行nodetool snaphot命令,并需要远程调用它。从架构的角度来看,正确的方法是什么?
我是否需要修改cassandra映像以在其中包含ssh deamon,或者我是否需要在cassandra pods中包含helper容器,或者通过“kubectl exec”Kubernetes API调用来实现这一点?其他选项?

我认为k8s
cronJob
资源是通过
nodetool
备份数据所需的资源。通常,
cronJob
具有
jobTemplate
部分,其中包含
spec
部分。而
spec
部分又有容器定义,几乎与
部署中的定义相同。您可以使用
nodetool
构建自己的docker映像(或者尝试在dockerhub上查找),并使用自己的特定配置运行它

更多信息:

侧车类型的模式似乎是目前解决此用例的一种方法。开发()中有一个快照API,您将来应该能够利用它。@AnirudhRamanathan感谢您的回答。我也考虑过sidecar模式,但对我来说,这需要很大的开销(java和python需要运行nodetool),而且每个cassandra容器都需要它。不确定k8s snapshotting API是否会对我有所帮助,因为在执行Snapshot之前,我仍然需要告诉cassandra将内存中的所有内容刷新到磁盘上。