本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。

Kubernetes 1.27:PersistentVolumes 的单 Pod 访问模式进阶至 Beta

随着 Kubernetes v1.27 的发布,ReadWriteOncePod 特性已进入 Beta 阶段。在本博文中,我们将深入探讨该特性、其功能以及它在 Beta 版本中的演进。

什么是 ReadWriteOncePod?

ReadWriteOncePod 是 Kubernetes v1.22 中引入的一种用于持久卷 (PersistentVolumes) (PV) 和持久卷申领 (PersistentVolumeClaims) (PVC) 的新访问模式。此访问模式使你能够将卷访问限制为集群中的单个 Pod,确保一次只有一个 Pod 可以写入该卷。这对于需要对存储进行单写入器访问的有状态工作负载特别有用。

有关访问模式以及 ReadWriteOncePod 工作原理的更多背景信息,请阅读 2021 年文章《为 PersistentVolumes 引入单 Pod 访问模式》中的什么是访问模式以及它们为何重要?

ReadWriteOncePod Beta 版的变化

ReadWriteOncePod Beta 版增加了对使用 ReadWriteOncePod PVC 的 Pod 进行调度器抢占的支持。

调度器抢占允许较高优先级的 Pod 抢占较低优先级的 Pod,以便它们可以在同一节点上开始运行。在此版本中,如果较高优先级的 Pod 需要相同的 PVC,使用 ReadWriteOncePod PVC 的 Pod 也可以被抢占。

如何开始使用 ReadWriteOncePod?

随着 ReadWriteOncePod 进入 Beta 阶段,它将在 v1.27 及更高版本的集群中默认启用。

请注意,ReadWriteOncePod 仅支持 CSI 卷。在使用此功能之前,你需要将以下 CSI sidecar 更新到这些版本或更高版本:

要开始使用 ReadWriteOncePod,请创建一个具有 ReadWriteOncePod 访问模式的 PVC:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: single-writer-only
spec:
  accessModes:
  - ReadWriteOncePod # Allow only a single pod to access single-writer-only.
  resources:
    requests:
      storage: 1Gi

如果你的存储插件支持动态制备,新的 PersistentVolume 将在创建时应用 ReadWriteOncePod 访问模式。

有关迁移现有卷以使用 ReadWriteOncePod 的详细信息,请阅读迁移现有 PersistentVolume

我如何了解更多信息?

有关 ReadWriteOncePod 访问模式以及 CSI 规范更改动机的更多详细信息,请参阅 Alpha 版博文KEP-2485

我如何参与?

若要联系 SIG Storage 和 CSI 团队,Kubernetes #csi Slack 频道以及任何标准的 SIG Storage 沟通渠道都是很好的媒介。

特别感谢以下人员,他们的深思熟虑的评审和反馈帮助塑造了此功能:

  • Abdullah Gharaibeh (ahg-g)
  • Aldo Culquicondor (alculquicondor)
  • Antonio Ojea (aojea)
  • David Eads (deads2k)
  • Jan Šafránek (jsafrane)
  • Joe Betz (jpbetz)
  • Kante Yin (kerthcet)
  • Michelle Au (msau42)
  • Tim Bannister (sftim)
  • Xing Yang (xing-yang)

如果你有兴趣参与 CSI 或 Kubernetes 存储系统任何部分的设计和开发,请加入 Kubernetes 存储特别兴趣小组 (SIG)。我们正在迅速发展,并随时欢迎新的贡献者。