Kubernetes似乎支持3种访问模式:ReadWriteOnce
,ReadOnlyMany
,ReadWriteMany
。
我对使用ReadWriteOnce
模式卷的pod的调度程序策略非常好奇。例如,我创建了一个具有pod num = 2的RC,我猜这两个pod将被安排到同一主机中,因为它们使用的是具有ReadWriteOnce
模式的卷?
我真的想知道这部分的源代码。
答案 0 :(得分:8)
我认为赞成的答案是错误的。根据 Access Modes
上的 Kubernetes 文档访问模式为:
所以今天定义的 AccessModes 只描述了节点附加(而不是 pod 挂载)语义,并不强制执行任何操作。
所以为了防止两个 pod 挂载同一个 PVC,即使它们被安排在同一个节点上运行,你可以使用 pod anti-affinity。这与不在同一节点上调度的 2 个 pod 上挂载一个卷不同。但是反亲和性可用于要求调度程序不要在同一节点上运行 2 个 Pod。因此,它可以防止将一个卷安装到 2 个 pod 中。
答案 1 :(得分:6)
如果pod使用ReadWriteOnce
访问模式安装卷,则无法安装其他pod。在GCE(Google Compute Engine)中,唯一允许的模式是ReadWriteOnce
和ReadOnlyMany
。因此,任意一个pod都会装入卷ReadWrite
,或者一个或多个pod装载卷ReadOnlyMany
。
调度程序(代码here)将不允许pod调度它是否使用已经以读写方式挂载的GCE卷。
(对于那些不理解问题的人的文档参考:persistent volume access modes)