我想知道是否有多个PersistentVolumeClaims绑定到同一local persistent volume。
我的用例是否满足以下条件:我想构建一个守护程序集,该守护程序集将在群集的每个节点上(节点的本地磁盘上)写入一些数据(实际上是相同的数据)。然后,在任何节点上调度的任何其他Pod应该能够读取该数据。基本上是一种在节点级别上一次写入多次读取的策略。
我知道我可以使用 hostPath 类型的卷来做到这一点,但是管理起来有点困难,所以我发现本地存储将是一个更好的方法。
我希望是这样:
这可能吗?
我读到,如果PVC绑定到PV,则PV被“锁定”,这意味着没有其他PVC可以绑定到它。这真的是这样吗?对于这种情况,如果我们有一次写入多次读取操作,这似乎有点限制。
谢谢!
答案 0 :(得分:1)
用于RWO卷类型的DaemonSet和PVC不能很好地混合,因为所有DaemonSet将共享同一PVC。对于本地卷,这将导致仅计划一个副本,因为它将使用该PVC的所有Pod限制为仅计划到一个节点。
您可以使用StatefulSet解决此问题,StatefulSet支持volumeClaimTemplates
,该NodePublishVolume
为每个副本创建PVC,并将其缩放到群集中的节点数。但是,您的用户吊舱随后需要知道并选择要使用的特定PVC,而不是使用该节点上的任何东西。
我认为编写CSI driver可以更好地解决您的用例。它具有DaemonSet组件,该组件在驱动程序启动时可以初始化数据。然后,当它实现def longestPalindrome(s):
pal = []
longestpalin = s
l = list(s)
if len(s)>0:
if len(s)==2:
p = l
if p[0]==p[1]:
return s
else:
return l[0]
else:
for i in range(0,len(l)):
for j in range(i+1,len(l)+1):
p = l[i:j]
if p == p[::-1]:
if len(p)>len(pal):
pal = p
p = ''.join(p)
longestpalin = p
return longestpalin
else:
return longestpalin
(又称挂载到Pod中)时,可以将数据目录绑定挂载到Pod的容器中。您可以将这种卷类型设置为RWX,并且可能不需要实现任何用于提供或附加的控制器例程。