我有一个包含10个副本的StatefulSet,每个副本都有数百GB的数据。
我想在10个副本中的一个上运行备份命令到对象存储(例如S3)。 (因此可以在initContainer步骤中加载数据)
是否可以根据副本ID使用亲和力来调度容器?或者是否可以从环境变量中检索副本ID?
到目前为止,我已经迭代了2个解决方案:
$HOSTNAME
env var to check that the current pod is replica 0如果您可以在pod运行时容忍进行备份,则此方法有效
- "[ $HOSTNAME = 'mypod-0' ] && /start-backup.sh || echo 'noop' && sleep 10000"
但是如果pod在备份之前必须将状态刷新到磁盘,那么创建一个脚本(我使用Node.js)来执行此操作: