本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Kubernetes 1.25:CSI 内联卷已进阶至 GA
CSI 内联卷(CSI Inline Volumes)在 Kubernetes 1.15 中作为 Alpha 特性引入,自 1.16 版本起进入 Beta 阶段。我们很高兴地宣布,此特性在 Kubernetes 1.25 中已进入正式发布(GA)阶段。
CSI 内联卷类似于其他临时卷类型,如 configMap
、downwardAPI
和 secret
。重要的区别在于其存储由 CSI 驱动提供,这允许使用第三方供应商提供的临时存储。这种卷被定义为 Pod 规约的一部分,并遵循 Pod 的生命周期,意味着卷在 Pod 被调度时创建,在 Pod 被销毁时销毁。
1.25 版本有哪些新变化?
在 1.25 版本中,有几个与此特性相关的新 Bug 修复,并且随着其进入 GA 阶段,CSIInlineVolume 特性门控已被锁定为 True
。没有新的 API 变更,因此在 Beta 阶段使用此特性的用户除了这些 Bug 修复外,应该不会注意到任何重大变化。
何时使用此特性
CSI 内联卷适用于需要遵循 Pod 生命周期的简单本地卷。它们可用于从 CSI 驱动为 Pod 提供 Secret、配置数据或其他特殊用途的存储。
当出现以下情况时,CSI 驱动不适合内联使用:
- 卷的生命周期需要比 Pod 更长
- 需要卷快照、克隆或卷扩展功能
- CSI 驱动需要应限制为管理员才能使用的
volumeAttributes
如何使用此特性
要使用此特性,CSIDriver
规约必须明确将 Ephemeral
列为支持的 volumeLifecycleModes
之一。以下是来自 Secrets Store CSI Driver 的一个简单示例。
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 Driver 和 Cert-Manager CSI Driver。
Secrets Store CSI Driver 允许用户将来自外部 Secret 存储的 Secret 作为内联卷挂载到 Pod 中。当 Secret 存储在外部托管服务或 Vault 实例中时,这非常有用。
Cert-Manager CSI Driver 与 cert-manager 协同工作,无缝地请求证书密钥对并将其挂载到 Pod 中。这使得证书可以在应用程序 Pod 中自动续订和更新。
安全注意事项
应特别考虑哪些 CSI 驱动可用作内联卷。volumeAttributes
通常通过 StorageClass
进行控制,并且可能包含应限制为集群管理员才能使用的属性。允许 CSI 驱动用于内联临时卷意味着任何有权限创建 Pod 的用户也可以通过 Pod 规约为驱动提供 volumeAttributes
。
集群管理员可以选择从 CSIDriver 规约的 volumeLifecycleModes
中省略(或移除)Ephemeral
,以防止该驱动被用作内联临时卷,或者使用准入 Webhook 来限制该驱动的使用方式。
参考资料
有关此特性的更多信息,请参阅: