Kubernetes持久卷访问模式

h6my8fg2  于 2023-06-05  发布在  Kubernetes
关注(0)|答案(3)|浏览(247)

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

yrefmtwq

yrefmtwq1#

我觉得DavidO's answer是错的。根据Kubernetes关于访问模式的文档:
访问模式为:

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

因此,今天定义的AccessModes只描述节点连接(而不是pod挂载)语义,并不强制执行任何内容。
因此,为了防止两个pod挂载相同的PVC,即使它们计划在同一个节点上运行,您可以使用pod anti-affinity。这与不将一个卷挂载到同一节点上调度的2个Pod不同。但是反亲合可以用来要求调度器不要在同一个节点上运行2个pod。因此,它阻止将一个卷装入2个pod。

6ojccjat

6ojccjat2#

如果某个pod使用ReadWriteOnce访问模式挂载卷,则其他pod无法挂载该卷。在GCE(Google Compute Engine)中,唯一允许的模式是ReadWriteOnceReadOnlyMany。因此,要么一个pod挂载卷ReadWrite,要么一个或多个pod挂载卷ReadOnlyMany
如果pod使用的GCE卷已经以读写方式装载,则调度程序将不允许对其进行调度。
(参考文件:persistent volume access modes

lnlaulya

lnlaulya3#

在Kubernetes中,可以静态(使用存储类)或动态(持久卷)配置存储。一旦存储可用于绑定和声明,您需要配置Pod或节点连接到存储(持久卷)的方式。这可以在以下四种模式中配置。

ReadOnlyMany(ROX)

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

ReadWriteMany(RWX)

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

读写一次(RWO)

在此模式下,仅在一个Node中运行的多个Pod可以连接到存储并执行读写操作。

ReadWriteOncePod(RWOP)

在此模式下,卷可以通过单个Pod以读写方式挂载。如果您希望确保整个集群中只有一个pod可以读取或写入该PVC,请使用ReadWriteOncePod访问模式。仅支持CSI卷和Kubernetes版本1.22+。
请参阅文档以获得更多信息。

相关问题