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

问题描述 投票:1回答:1

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

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

是否可以根据副本ID使用亲和力来调度容器?或者是否可以从环境变量中检索副本ID?

kubernetes kubernetes-statefulset
1个回答
0
投票

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

using the $HOSTNAME env var to check that the current pod is replica 0

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

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

a script that administers the cluster

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

  1. 将副本数减少1
  2. 将该磁盘副本中的磁盘附加到备份磁盘
  3. 将复制品数量增加1
© www.soinside.com 2019 - 2024. All rights reserved.