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

cbeh67ev  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(94)

一个新的Kubernetes部署,具有2个以上的副本以实现高可用性。
我希望能够只在第一个pod上执行命令,比如说创建一个DB,让其他副本等待第一个完成。
为了实现这一点,我只想在pod中知道这是否是副本#1。
所以在pod的入口点,我可以测试:

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

这可以在Kubernetes中实现吗?

zrfyljdw

zrfyljdw1#

在Kubernetes中,Deployment被认为是无状态的,因此不提供您正在寻找的功能。您应该更深入地了解StatefulSet及其特性。
A StatefulSet例如支持有序创建,当与通常可用的readinessProbe结合使用时,您可以创建所需的行为。另外,pod名称在StatefulSet中是稳定的,因此您可以使用Podhostname进行测试。

sqxo8psd

sqxo8psd2#

与公认的答案不同,init container不是更适合您的问题描述吗?
添加某种信号量系统(如果需要的话)以确保它被正确执行?

相关问题