如何使用复制控制器对Kubernetes中的有状态组件建模?

时间:2016-06-16 10:12:32

标签: kubernetes

我正在尝试在Kubernetes中建模有状态的组件/服务(例如CouchBase,Postgres等)。在Kubernetes中,复制控制器对象需要用于pod的模板来切割(复制)pod。如果pod用于有状态组件,则模板将需要包含持久卷声明。如果我在复制控制器的模板中指定持久声明,则可能(未尝试但在逻辑上)导致在不同pod之间共享持久卷声明,从而导致多个pod之间发生冲突。

如何在使用复制控制器管理容器时为每个容器分配不同的持久卷声明?如何使用复制控制器对Kubernetes中的有状态组件进行建模?

2 个答案:

答案 0 :(得分:3)

今天,您可能需要为应用中的每个副本或组件创建一个ReplicationController。因此,如果你有一个3节点的Postgres副本,你可以为它创建3个控制器。

你可以看看helm(https://helm.sh/)来帮助解决这个问题,它通过自动化部分工作为你提供了一些帮助。

还有一个PetSet的概念正在实施,并且更多地解决了这个问题。您可以在此处阅读其中一些详细信息:https://github.com/kubernetes/kubernetes/issues/260

答案 1 :(得分:2)

每个pod匹配1 pv的网络身份将自动与petset一起使用。它将在1.3中的alpha中,但它尚未记录(因为1.3还没有出现)。您现在可以找到的文档最接近的是:https://github.com/kubernetes/kubernetes/issues/260#issuecomment-220395798

文件应该由EOW提升。