Kubernetes基于副本的容器亲和力?

时间:2018-08-25 22:35:06

标签: kubernetes kubernetes-statefulset

我有一个StatefulSet,其中有10个副本,每个副本都有数百GB的数据。

我想在10个副本中的1个上对对象存储库(例如S3)运行备份命令。 (因此可以在initContainer步骤中加载数据)

是否可以使用基于副本ID的相似性来计划容器?还是可以从环境变量中获取副本ID?

1 个答案:

答案 0 :(得分:0)

到目前为止,我已经迭代了两种解决方案:

使用$HOSTNAME环境变量来检查当前容器是否为副本0

如果您可以容忍Pod运行时进行备份,则此方法有效

- "[ $HOSTNAME = 'mypod-0' ] && /start-backup.sh || echo 'noop' && sleep 10000"

管理集群的脚本

但是如果pod必须在备份之前将状态刷新到磁盘,则创建一个脚本(我使用Node.js)来完成此操作:

  1. 将副本数减少1
  2. 从该副本附加磁盘,该磁盘已降到备份容器中
  3. 将副本数增加1