kubernetes持久卷访问模式

时间:2016-06-06 04:27:09

标签: kubernetes volume persistent-storage

Kubernetes似乎支持3种访问模式:ReadWriteOnceReadOnlyManyReadWriteMany。 我对使用ReadWriteOnce模式卷的pod的调度程序策略非常好奇。例如,我创建了一个具有pod num = 2的RC,我猜这两个pod将被安排到同一主机中,因为它们使用的是具有ReadWriteOnce模式的卷? 我真的想知道这部分的源代码。

2 个答案:

答案 0 :(得分:8)

我认为赞成的答案是错误的。根据 Access Modes

上的 Kubernetes 文档

访问模式为:

  • ReadWriteOnce -- 卷可以由单个节点以读写方式挂载
  • ReadOnlyMany -- 卷可以被多个节点以只读方式安装
  • ReadWriteMany -- 卷可以被多个节点以读写方式挂载

所以今天定义的 AccessModes 只描述了节点附加(而不是 pod 挂载)语义,并不强制执行任何操作。

所以为了防止两个 pod 挂载同一个 PVC,即使它们被安排在同一个节点上运行,你可以使用 pod anti-affinity。这与不在同一节点上调度的 2 个 pod 上挂载一个卷不同。但是反亲和性可用于要求调度程序不要在同一节点上运行 2 个 Pod。因此,它可以防止将一个卷安装到 2 个 pod 中。

答案 1 :(得分:6)

如果pod使用ReadWriteOnce访问模式安装卷,则无法安装其他pod。在GCE(Google Compute Engine)中,唯一允许的模式是ReadWriteOnceReadOnlyMany。因此,任意一个pod都会装入卷ReadWrite,或者一个或多个pod装载卷ReadOnlyMany

调度程序(代码here)将不允许pod调度它是否使用已经以读写方式挂载的GCE卷。

(对于那些不理解问题的人的文档参考:persistent volume access modes