使用 SMB CSI 驱动程序 - AWS Storage Gatewa

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 SMB CSI 驱动程序

按照本节中的步骤安装、配置或删除使用 Amazon S3 文件网关上的 SMB 文件共享在 Kubernetes 集群中存储所需的 CSI 驱动程序。有关更多信息,请参阅上的开源 SMB CSI 驱动程序文档,网址 GitHub 为https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md

注意

创建PersistentVolume对象或对象时,可以指定一个ReclaimPolicy参数来确定删除对象后外部存储会发生什么。StorageClassSMB CSI 驱动程序支持RetainRecycle选项,但目前不支持任何Delete选项。

安装驱动程序

要安装 Kubernetes SMB CSI 驱动程序,请执行以下操作:
  1. 在可以访问您的 Kubernetes 集群kubectl的命令行终端上,运行以下命令:

    curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/deploy/install-driver.sh | bash -s master --

  2. 等待上一个命令完成,然后使用以下命令确保 CSI 驱动程序 pod 正在运行:

    kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-controller

    kubectl -n kube-system get pod -o wide --watch -l app=csi-smb-node

    该输出值应该类似于以下内容:

    NAME READY STATUS RESTARTS AGE IP NODE csi-smb-controller-56bfddd689-dh5tk 4/4 Running 0 35s 10.240.0.19 k8s-agentpool-22533604-0 csi-smb-controller-56bfddd689-8pgr4 4/4 Running 0 35s 10.240.0.35 k8s-agentpool-22533604-1 csi-smb-node-cvgbs 3/3 Running 0 35s 10.240.0.35 k8s-agentpool-22533604-1 csi-smb-node-dr4s4 3/3 Running 0 35s 10.240.0.4 k8s-agentpool-22533604-0

创建 SMB 对象 StorageClass

要为您的 Kubernetes 集群创建新的 SMB StorageClass 对象,请执行以下操作:
  1. 创建一个名为的配置文件,其内容storageclass.yaml与以下示例类似。用您自己的部署特定信息代替显示的内容。ExampleValues

    --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ExampleStorageClassName provisioner: smb.csi.k8s.io parameters: source: "//gateway-dns-name-or-ip-address/example-share-name" # if csi.storage.k8s.io/provisioner-secret is provided, will create a sub directory # with PV name under source csi.storage.k8s.io/provisioner-secret-name: "examplesmbcreds" csi.storage.k8s.io/provisioner-secret-namespace: "examplenamespace" csi.storage.k8s.io/node-stage-secret-name: "examplesmbcreds" csi.storage.k8s.io/node-stage-secret-namespace: "examplenamespace" volumeBindingMode: Immediate reclaimPolicy: Retain mountOptions: - dir_mode=0777 - file_mode=0777 - uid=1001 - gid=1001
  2. 在可以访问和的命令行终端上 kubectlstorageclass.yaml,运行以下命令:

    kubectl apply -f storageclass.yaml

    注意

    您还可以 StorageClass 通过向大多数第三方 Kubernetes 管理和容器化平台提供上一步中的.yaml配置文本来创建。

  3. 将 Kubernetes 集群中的容器配置为使用您创建的新 StorageClass容器。有关更多信息,请参阅 Kubernetes 在线文档,网址为。https://kubernetes.io/docs/concepts/storage/

创建 SMB PersistentVolume 和对象 PersistentVolumeClaim

要创建新的 SMB PersistentVolume 和 PersistentVolumeClaim 对象,请执行以下操作:
  1. 创建两个配置文件。一个名字persistentvolume.yaml,一个名字persistentvolumeclaim.yaml

  2. 对于persistentvolume.yaml,添加与以下示例类似的内容。用您自己的部署特定信息代替显示的内容。ExampleValues

    --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-smb-example-name namespace: smb-example-namespace # PersistentVolume and PersistentVolumeClaim must use the same namespace parameter spec: capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain mountOptions: - dir_mode=0777 - file_mode=0777 - vers=3.0 csi: driver: smb.csi.k8s.io readOnly: false volumeHandle: examplehandle # make sure it's a unique id in the cluster volumeAttributes: source: "//gateway-dns-name-or-ip-address/example-share-name" nodeStageSecretRef: name: example-smbcreds namespace: smb-example-namespace
  3. 对于persistentvolumeclaim.yaml,添加与以下示例类似的内容。用您自己的部署特定信息代替显示的内容。ExampleValues

    --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: examplename-pvc-smb-static namespace: smb-example-namespace # PersistentVolume and PersistentVolumeClaim must use the same namespace parameter spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-smb-example-name # make sure specfied volumeName matches the name of the PersistentVolume you created storageClassName: ""
  4. 在可以访问您创建的两个.yaml文件的命令行终端上,运行以下命令:kubectl

    kubectl apply -f persistentvolume.yaml

    kubectl apply -f persistentvolumeclaim.yaml

    注意

    您还可以通过向大多数第三方 Kubernetes 管理和容器化平台提供上一步中的.yaml配置文本来创建和 PersistentVolumeClaim对象。 PersistentVolume

  5. 将 Kubernetes 集群中的容器配置为使用您创建的新 PersistentVolumeClaim 容器。有关更多信息,请参阅 Kubernetes 在线文档,网址为。https://kubernetes.io/docs/concepts/storage/

卸载驱动程序

要卸载 Kubernetes SMB CSI 驱动程序,请执行以下操作:
  • 在可以访问您的 Kubernetes 集群kubectl的命令行终端上,运行以下命令:

    curl -skSL https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/deploy/uninstall-driver.sh | bash -s --