

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de controladores CSI SMB
<a name="use-smb-csi"></a>

Siga los procedimientos indicados en esta sección para instalar, configurar o eliminar los controladores CSI que son necesarios para usar un recurso compartido de archivos SMB en una puerta de enlace de archivo de Amazon S3 para su almacenamiento en su clúster de Kubernetes. Para obtener más información, consulte la documentación de código abierto sobre el controlador SMB CSI en. GitHub [https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md](https://github.com/kubernetes-csi/csi-driver-smb/blob/master/docs/install-csi-driver-master.md)

**nota**  
Cuando se crea un objeto `PersistentVolume` o un objeto `StorageClass`, es posible especificar un parámetro `ReclaimPolicy` para determinar qué ocurre con el almacenamiento externo cuando se eliminan los objetos. El controlador CSI SMB admite las opciones `Retain` y `Recycle`, pero actualmente no admite la opción `Delete`.

## Instalar controladores
<a name="install-smb-csi"></a>

**Para instalar controladores CSI SMB de Kubernetes:**

1. Desde un terminal de línea de comandos con acceso a `kubectl` para el clúster de Kubernetes, ejecute el siguiente comando:

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

1. Espere a que finalice el comando anterior y, a continuación, utilice los siguientes comandos para asegurarse de que los pods del controlador CSI se estén ejecutando:

   **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**

   El resultado debería tener un aspecto similar al siguiente:

   ```
   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
   ```

## Cree un objeto SMB StorageClass
<a name="create-storageclass-smb-csi"></a>

**Para crear un nuevo StorageClass objeto SMB para tu clúster de Kubernetes:**

1. Cree un archivo de configuración denominado `storageclass.yaml` con un contenido similar al del siguiente ejemplo. Sustituya la que se muestra por su propia información específica de la implementación. {{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
   ```

1. Desde un terminal de línea de comandos con acceso a `kubectl` y`storageclass.yaml`, ejecute el siguiente comando:

   **kubectl apply -f storageclass.yaml**
**nota**  
También puedes crearlo StorageClass proporcionando el texto de `.yaml` configuración del paso anterior a la mayoría de las plataformas de administración y contenedorización de Kubernetes de terceros.

1. Configura los pods de tu clúster de Kubernetes para que usen los nuevos que has creado. StorageClass Para obtener más información, consulte la documentación en línea de Kubernetes en [https://kubernetes.io/docs/concepts/storage/](https://kubernetes.io/docs/concepts/storage/).

## Crea SMB y objetos PersistentVolume PersistentVolumeClaim
<a name="create-persistentvolume-volumeclaim-smb-csi"></a>

**Para crear nuevos PersistentVolumeClaim objetos PersistentVolume y SMB:**

1. Crear dos archivos de configuración. Uno denominado `persistentvolume.yaml` y otro denominado `persistentvolumeclaim.yaml`.

1. Para `persistentvolume.yaml`, agregue contenido similar al del siguiente ejemplo. Sustituya la que se muestra por su propia información específica de la implementación. {{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}}
   ```

1. Para `persistentvolumeclaim.yaml`, agregue contenido similar al del siguiente ejemplo. Sustituya la información específica de la implementación por la que se muestra. {{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: ""
   ```

1. Desde un terminal de línea de comandos con acceso a `kubectl` y los dos archivos `.yaml` que ha creado, ejecute los siguientes comandos:

   **kubectl apply -f persistentvolume.yaml**

   **kubectl apply -f persistentvolumeclaim.yaml**
**nota**  
También puede crear los PersistentVolumeClaim objetos PersistentVolume y proporcionando el texto de `.yaml` configuración del paso anterior a la mayoría de las plataformas de administración y contenedorización de Kubernetes de terceros.

1. Configura los pods de tu clúster de Kubernetes para que usen los nuevos que has creado. PersistentVolumeClaim Para obtener más información, consulte la documentación en línea de Kubernetes en [https://kubernetes.io/docs/concepts/storage/](https://kubernetes.io/docs/concepts/storage/).

## Desinstalar controladores
<a name="uninstall-smb-csi"></a>

**Para desinstalar controladores CSI SMB de Kubernetes:**
+ Desde un terminal de línea de comandos con acceso a `kubectl` para el clúster de Kubernetes, ejecute el siguiente comando:

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