在kubernetes中共同定位POD和持久卷

在kubernetes中共同定位POD和持久卷,kubernetes,nfs,persistent-volumes,persistent-volume-claims,kubernetes-cluster,Kubernetes,Nfs,Persistent Volumes,Persistent Volume Claims,Kubernetes Cluster,我有一个kubernetes群集,分布在两个区域a和B。我使用nfs卷进行持久存储。我在这两个区域中都有nfs卷。我正在创建一组有状态的2个副本,它们将分布在这些区域(我使用pod反亲和力来实现这一点)。现在我想让A区的吊舱使用A区的卷,B区的吊舱使用B区的卷 我可以向持久卷添加标签,并将持久卷声明与这些标签匹配。但是如何确保pod的pvc不会绑定到另一个区域中的pv?您可以尝试将持久卷声明(pvc)绑定到持久卷(PVs)并使用特殊的内置标签failure domain.beta.Kuberne

我有一个kubernetes群集,分布在两个区域a和B。我使用nfs卷进行持久存储。我在这两个区域中都有nfs卷。我正在创建一组有状态的2个副本,它们将分布在这些区域(我使用pod反亲和力来实现这一点)。现在我想让A区的吊舱使用A区的卷,B区的吊舱使用B区的卷


我可以向持久卷添加标签,并将持久卷声明与这些标签匹配。但是如何确保pod的pvc不会绑定到另一个区域中的pv?

您可以尝试将
持久卷声明(pvc)
绑定到
持久卷(PVs)
并使用特殊的内置标签
failure domain.beta.Kubernetes.io/zone
在集群中的两个区域之间拆分Kubernetes吊舱。如果手动创建卷,则可以使用
failure domain.beta.kubernetes.io/zone:zoneA
值对其进行标记,以确保pod仅调度到与持久卷所在区域相同区域中的节点

例如,要为节点和PV设置标签,请执行以下操作:

kubectl label node <node-name> failure-domain.beta.kubernetes.io/zone=zoneA

kubectl label pv <pv-name> failure-domain.beta.kubernetes.io/zone=zoneA
kubectl label node failure domain.beta.kubernetes.io/zone=zoneA
kubectl label pv failure domain.beta.kubernetes.io/zone=zoneA

从官方库伯内特那里找到一些有用的信息

您如何提供PVs?如果您使用的是动态卷资源调配,我没有弄错,这应该可以解决问题吗?到目前为止,没有对NFS的动态资源调配支持。我不确定这个->是否可以生产。是的,对不起,我的错。有但可能没有生产准备就绪;)有什么办法可以做到这一点吗?嗯,我现在唯一能想到的就是看看您是否可以使用
nodeAffinity
(如中所述)来实现它?哦,太好了。谢谢你。我使用nodeAffinity和podAntiAffinity来实现这一点。这似乎简单得多。