9. 容器存储接口(CSI)
容器存储接口(CSI)
容器存储接口(Container Storage Interface
csi
卷类型是一种csi
作为卷类型来挂载驱动提供的存储。
--feature-gates =
” 标志中加上 “CSIPersistentVolume = true
”。
driver
:一个字符串值,指定要使用的卷驱动程序的名称。必须少于63 个字符,并以一个字符开头。驱动程序名称可以包含 “。 ”、 “ - ”、 “_” 或数字。volumeHandle
:一个字符串值,唯一标识从CSI 卷插件的CreateVolume
调用返回的卷名。随后在卷驱动程序的所有后续调用中使用卷句柄来引用该卷。readOnly
:一个可选的布尔值,指示卷是否被发布为只读。默认是false 。
使用说明
下面将介绍如何使用
动态配置
可以通过为StorageClass
来支持动态配置的
例如,以下 StorageClass
允许通过名为 com.example.team/csi-driver
的
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: fast-storage
provisioner: com.example.team/csi-driver
parameters:
type: pd-ssd
要触发动态配置,请创建一个 PersistentVolumeClaim
对象。例如,下面的
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-request-for-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: fast-storage
当动态创建type:pd-ssd
传递给com.example.team/csi-driver
。作为响应,外部PersistentVolume
对象来对应前面的PersistentVolume
对象绑定到 PersistentVolumeClaim
,使其可以使用。
如果fast-storage
PersistentVolumeClaim
中包含
预配置Volume
您可以通过手动创建一个 PersistentVolume
对象来展示现有com.example.team/csi-driver
这个existingVolumeName Volume
:
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-manually-created-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
csi:
driver: com.example.team/csi-driver
volumeHandle: existingVolumeName
readOnly: false
附着和挂载
您可以在任何的PersistentVolumeClaim
。
kind: Pod
apiVersion: v1
metadata:
name: my-pod
spec:
containers:
- name: my-frontend
image: dockerfile/nginx
volumeMounts:
- mountPath: "/var/www/html"
name: my-csi-volume
volumes:
- name: my-csi-volume
persistentVolumeClaim:
claimName: my-request-for-storage
当一个引用了
关于
创建CSI 驱动
最低要求文件还包含概述部分,提供了在
作为推荐部署的一部分,
-
可监听
Kubernetes VolumeAttachment 对象并触发ControllerPublish 和ControllerUnPublish 操作的sidecar 容器,通过CSI endpoint 触发 ; -
监听
Kubernetes PersistentVolumeClaim 对象的sidecar 容器,并触发对CSI 端点的CreateVolume 和DeleteVolume 操作; -
Driver-registrar(DEPRECATED)
使用
Kubelet (将来)注册CSI 驱动程序的sidecar 容器,并将NodeId
(通过GetNodeID
调用检索到CSI endpoint )添加到Kubernetes Node API 对象的annotation 里面。 -
创建
CSIDriver 这个集群范围的CRD 对象。 -
替代
Driver-registrar 。
存储供应商完全可以使用这些组件来为其插件构建
另外