Kubernetes部署多个副本 - 如何将副本号传递给pod

时间:2017-02-05 14:48:06

标签: kubernetes

新的Kubernetes部署,具有2个以上的副本以实现高可用性。

我希望能够仅在第一个pod上执行命令,假设创建一个DB,让其他副本等待第一个副本完成。
为了实现这一点,我只想在pod中知道它是否是副本#1。

所以在pod的入口点我可以测试:

if [ $REPLICA_ID -eq 1 ]; then 
    CreateDB
else
    WaitForDB
fi

这可以在Kubernetes中完成吗?

2 个答案:

答案 0 :(得分:3)

在Kubernetes中Deployment被视为无国籍,因此无法提供您正在寻找的功能。您应该考虑StatefulSet及其功能。

例如StatefulSet。支持ordered creation,当与您通常可用的readinessProbe窗格结合使用时,您可以创建所需的行为。播客名称在StatefulSet内也是稳定的,因此您可以使用hostname的{​​{1}}进行测试。

答案 1 :(得分:2)

而不是接受的答案,init container不能更好地符合您的问题描述吗?

添加某种信号量系统(如果需要)以确保它正确执行?