本文发布时间超过一年。较早的文章可能包含过时的内容。请检查页面中的信息自发布以来是否仍然正确。
Kubernetes 1.25: CSI 内联卷已达到 GA
CSI 内联卷作为 Alpha 特性在 Kubernetes 1.15 中引入,并自 1.16 起进入 Beta 阶段。我们很高兴宣布此特性在 Kubernetes 1.25 中已正式可用 (GA)。
CSI 内联卷与其他临时卷类型相似,例如 configMap
、downwardAPI
和 secret
。重要的区别在于存储由 CSI 驱动程序提供,这允许使用第三方供应商提供的临时存储。该卷被定义为 Pod 规约的一部分,并遵循 Pod 的生命周期,这意味着一旦 Pod 被调度,卷就会被创建,并在 Pod 被销毁时被销毁。
1.25 版本有什么新内容?
1.25 版本中针对此特性有一些新的 bug 修复,并且 CSIInlineVolume feature gate 已随着升级到 GA 被锁定为 True
。没有新的 API 变更,因此 Beta 阶段此特性的用户除了这些 bug 修复外,应该不会注意到任何重大变化。
何时使用此特性
CSI 内联卷适用于应遵循 Pod 生命周期、简单的本地卷。它们对于通过 CSI 驱动程序向 Pod 提供 Secret、配置数据或其他特殊用途存储可能很有用。
在以下情况下,CSI 驱动程序不适合用作内联卷
- 卷需要比 Pod 的生命周期更长久
- 需要卷快照、卷克隆或卷扩容
- CSI 驱动程序需要应限于管理员使用的
volumeAttributes
如何使用此特性
为了使用此特性,CSIDriver
规约必须显式将 Ephemeral
列为受支持的 volumeLifecycleModes
之一。以下是 Secrets Store CSI 驱动程序中的一个简单示例。
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
name: secrets-store.csi.k8s.io
spec:
podInfoOnMount: true
attachRequired: false
volumeLifecycleModes:
- Ephemeral
任何 Pod 规约都可以引用该 CSI 驱动程序来创建内联卷,如以下示例所示。
kind: Pod
apiVersion: v1
metadata:
name: my-csi-app-inline
spec:
containers:
- name: my-frontend
image: busybox
volumeMounts:
- name: secrets-store-inline
mountPath: "/mnt/secrets-store"
readOnly: true
command: [ "sleep", "1000000" ]
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "my-provider"
如果驱动程序支持任何卷属性,你也可以将其作为 Pod 的 spec
的一部分提供
csi:
driver: block.csi.vendor.example
volumeAttributes:
foo: bar
示例用例
目前支持 Ephemeral
卷生命周期模式的两个现有 CSI 驱动程序是 Secrets Store CSI 驱动程序和 Cert-Manager CSI 驱动程序。
Secrets Store CSI 驱动程序允许用户将外部 Secret Store 中的 Secret 作为内联卷挂载到 Pod 中。当 Secret 存储在外部托管服务或 Vault 实例中时,这会非常有用。
Cert-Manager CSI 驱动程序与 cert-manager 一起工作,可以无缝地请求证书密钥对并将其挂载到 Pod 中。这使得应用程序 Pod 中的证书可以自动续订和更新。
安全考量
应特别考虑哪些 CSI 驱动程序可以用作内联卷。volumeAttributes
通常通过 StorageClass
控制,并且可能包含应仅限于集群管理员使用的属性。允许 CSI 驱动程序用于内联临时卷意味着任何有权创建 Pod 的用户也可以通过 Pod 规约为驱动程序提供 volumeAttributes
。
集群管理员可以选择在 CSIDriver 规约中省略(或移除)volumeLifecycleModes
中的 Ephemeral
,以防止驱动程序被用作内联临时卷,或者使用 Admission Webhook 来限制驱动程序的使用方式。
参考资料
有关此特性的更多信息,请参阅