【问题标题】:Kubernetes container affinity based on replica?基于副本的 Kubernetes 容器亲和性?
【发布时间】:2018-08-25 22:35:06
【问题描述】:

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

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

是否可以使用基于副本 ID 的亲和性来调度容器?或者是否可以从环境变量中检索副本 ID?

【问题讨论】:

  • 您想在其上运行备份命令的 1 个副本 - 总是相同还是不同?
  • 可以变化。有 2 个限制:1. 它运行在不超过一个副本上 2. 副本在备份运行时关闭

标签: kubernetes kubernetes-statefulset


【解决方案1】:

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

使用$HOSTNAME env var 检查当前 pod 是否为副本 0

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

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

管理集群的脚本

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

  1. 将副本计数减 1
  2. 将磁盘从已关闭的副本连接到备份 pod
  3. 将副本计数增加 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2020-04-17
    • 2015-09-29
    • 2019-10-20
    • 1970-01-01
    相关资源
    最近更新 更多