kubernetes持久卷访问模式



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

我认为DavidO的回答是错误的。根据Kubernetes关于访问模式的文档:

访问模式为:

  • ReadWriteOnce--卷可以通过单个节点以读写方式装入
  • ReadOnlyMany--卷可以由许多节点以只读方式装入
  • ReadWriteMany--卷可以由许多节点以读写方式装入

因此,今天定义的访问模式只描述节点连接(而不是pod装载)语义,不强制执行任何内容。

因此,为了防止两个pod装载相同的PVC,即使它们计划在同一节点上运行,也可以使用pod反亲和性。这与不将一个卷装载到计划在同一节点上的2个pod不同。但反亲和性可以用来要求调度器不要在同一节点上运行两个pod。因此,它可以防止将一个卷安装到两个吊舱中。

如果一个pod以ReadWriteOnce访问模式装载卷,则没有其他pod可以装载它。在GCE(谷歌计算引擎)中,唯一允许的模式是ReadWriteOnceReadOnlyMany。因此,一个pod装载卷ReadWrite,或者一个或多个pod装载该卷ReadOnlyMany

如果pod使用的是已经以读写方式装入的GCE卷,则调度程序将不允许pod进行调度。

(文档参考:持久卷访问模式)

在Kubernetes中,您可以静态地(使用存储类)或动态地(持久卷)提供存储。一旦存储可用于绑定和声明,您就需要以Pods或Node连接到存储(持久卷)的方式对其进行配置。这可以在以下四种模式中进行配置。

ReadOnlyMany(ROX)
在此模式下,运行在不同节点上的多个pod可以连接到存储并执行读取操作。

ReadWriteMany(RWX)
在这种模式下,运行在不同节点上的多个pod可以连接到存储并执行读写操作。

ReadWriteOnce(RWO)
在此模式下,仅在一个节点中运行的多个pod可以连接到存储并执行读写操作。

ReadWriteOncePod(RWOP)
在此模式下,卷可以由单个Pod以读写方式装入。如果您想确保整个集群中只有一个pod可以读取或写入PVC,请使用ReadWriteOncePod访问模式。这只支持CSI卷和Kubernetes 1.22+版本。

按照文档了解更多信息。

相关内容

  • 没有找到相关文章

最新更新