Configuración de Block Storage for VPC

Block Storage for VPC proporciona almacenamiento de datos de alto rendimiento montados en hipervisor para instancias de servidor virtual que puede suministrar dentro de una VPC.

Puede elegir los niveles de almacenamiento predefinidos con tamaños de GB e IOPS que cumplan los requisitos de sus cargas de trabajo. Para averiguar si Block Storage for VPC es la opción de almacenamiento adecuada para usted, consulte Elección de una solución de almacenamiento. Para obtener información sobre precios, consulte Fijación de precios para Block Storage for VPC.

  • El complemento de clúster Block Storage for VPC está habilitado de forma predeterminada en los clústeres de VPC.
  • Si desactiva el Block Storage for VPC complemento, permanecerá desactivado hasta que lo vuelva a activar. No se habilita cuando se actualiza o se renueva el maestro del clúster.

Inicio rápido para IBM Cloud Block Storage for VPC

En esta guía de inicio rápido, se crea un volumen 10Gi 5IOPS tier Block Storage for VPC en el clúster mediante la creación de un PVC para aprovisionar dinámicamente el volumen. A continuación, se crea un despliegue de app que monta la PVC.

Ahora puedes elegir una clase de almacenamiento de segunda generación.

Sus volúmenes de Block Storage for VPC pueden ser montados por múltiples pods siempre y cuando esos pods estén programados en el mismo nodo.

  1. Cree un archivo para la PVC y llámelo pvc.yaml. Elija entre una clase de almacenamiento de primera generación y una de segunda generación.

    Ejemplo de primera generación que utiliza la clase de almacenamiento ibmc-vpc-block-5iops-tier:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: ibmc-vpc-block-5iops-tier
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    

    Ejemplo de segunda generación que utiliza la clase de almacenamiento ibmc-vpc-block-sdp:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: ibmc-vpc-block-sdp
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Cree la PVC en el clúster.

    kubectl apply -f pvc.yaml
    
  3. Cuando la PVC esté enlazada, cree un despliegue de app que utilice la PVC. Cree un archivo para el despliegue y llámelo deployment.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
        name: my-deployment
        labels:
          app: my-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - image: ngnix # Your containerized app image.
            name: my-container
            volumeMounts:
            - name: my-volume
              mountPath: /mount-path
          volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: my-pvc
    
  4. Cree el despliegue en el clúster.

    kubectl apply -f deployment.yaml
    

Para obtener más información, consulte los siguientes enlaces.

Adición de Block Storage for VPC a sus apps

Elija el perfil de Block Storage for VPC y cree una reclamación de volumen persistente para suministrar dinámicamente Block Storage for VPC para el clúster. El suministro dinámico crea automáticamente el volumen persistente adecuado y solicita el dispositivo de almacenamiento físico en la cuenta de IBM Cloud.

  1. Decida el perfil de Block Storage for VPC que mejor se ajuste a sus requisitos de capacidad y de rendimiento.

  2. Seleccione la clase de almacenamiento correspondiente para el perfil de Block Storage for VPC.

    De forma predeterminada, todas las clases de almacenamiento predefinidas de IBM configuran Block Storage for VPC con un sistema de archivos ext4. Si desea utilizar otro un sistema de archivos, como por ejemplo xfs o ext3, cree una clase de almacenamiento personalizada.

    • 10 IOPS/GB: ibmc-vpc-block-10iops-tier o ibmc-vpc-block-retain-10iops-tier
    • 5 IOPS/GB: ibmc-vpc-block-5iops-tier o ibmc-vpc-block-retain-5iops-tier
    • 3 IOPS/GB: ibmc-vpc-block-general-purpose o ibmc-vpc-block-retain-general-purpose
    • Personalizado: ibmc-vpc-block-custom o ibmc-vpc-block-retain-custom
  3. Decida la configuración de Block Storage for VPC que desea.

    1. Elija un tamaño para el almacenamiento. Asegúrese de que el tamaño reciba soporte del perfil de Block Storage for VPC que ha elegido.
    2. Decida si desea conservar los datos después de que se suprima el clúster o la reclamación de volumen persistente (PVC).
      • Si desea conservar los datos, seleccione la clase de almacenamiento retain. Cuando se suprime la PVC, únicamente ésta se suprime. El volumen persistente (PV), el dispositivo de almacenamiento físico de la cuenta de IBM Cloud y los datos siguen existiendo. Para reclamar el almacenamiento y volverlo a utilizar en el clúster, debe eliminar el PV y seguir los pasos de utilización de Block Storage for VPC existente.
      • Si desea que el PV, los datos y el dispositivo físico de Block Storage for VPC se supriman cuando suprima la PVC, elija una clase de almacenamiento sin la opción retain.
  4. Cree un archivo de configuración para definir su reclamación de volumen persistente y guarde la configuración como archivo YAML.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc_name> # Enter a name for your PVC.
    spec:
      accessModes:
      - <access-mode> # ReadWriteOnce or ReadWriteOncePod
      resources:
        requests:
          storage: 10Gi # Enter the size. Make sure that the size is supported in the profile that you chose.
      storageClassName: <storage_class> # Enter the storage class name that you selected earlier.
    
  5. Cree la PVC en el clúster.

    kubectl apply -f pvc.yaml
    
  6. Verifique que la PVC se ha creado y se ha vinculado al PV. Este proceso puede tardar unos minutos.

    kubectl describe pvc <pvc_name>
    

    Salida de ejemplo

    Name:          mypvv
    Namespace:     default
    StorageClass:  ibmc-vpc-block-5iops-tier
    Status:        Bound
    Volume:        
    Labels:        <none>
    Annotations:   kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"csi-block-pvc-good","namespace":"default"},"spec":{...
                volume.beta.kubernetes.io/storage-provisioner: vpc.block.csi.ibm.io
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity: 10Gi   
    Access Modes:  
    VolumeMode:    Filesystem
    Events:
        Type       Reason                Age               From                         Message
        ----       ------                ----              ----                         -------
        Normal     ExternalProvisioning  9s (x3 over 18s)  persistentvolume-controller  waiting for a volume to be created, either by external provisioner "vpc.block.csi.ibm.io" or manually created by system administrator
    Mounted By:  <none>
    
  7. Cree un archivo de configuración de despliegue para la app y monte la PVC en la app.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment_name>
      labels:
        app: <deployment_label>
    spec:
      selector:
        matchLabels:
          app: <app_name>
      template:
        metadata:
          labels:
            app: <app_name>
        spec:
          containers:
          - image: <image_name>
            name: <container_name>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    labels.app
    En la sección metadata, especifique una etiqueta para el despliegue.
    matchLabels.app y labels.app
    En el selector de especificación y en las secciones de metadatos de la plantilla, especifique una etiqueta para la app.
    image
    Especifique el nombre de la imagen de contenedor que desea utilizar. Para ver una lista de todas las imágenes disponibles en su cuenta de IBM Cloud Container Registry, ejecute ibmcloud cr image-list.
    name
    Especifique el nombre del contenedor que desea desplegar en el pod.
    mountPath
    En la sección de montajes de volúmenes de contenedor, especifique la vía de acceso absoluta del directorio en el que está montada la PVC dentro del contenedor.
    name
    En la sección de montajes de volúmenes de contenedor, especifique el nombre del volumen que se va a montar en el pod. Puede especificar el nombre que desee.
    name
    En la sección de volúmenes, especifique el nombre del volumen que se va a montar en el pod. Normalmente, este nombre es el mismo que volumeMounts.name.
    claimName
    En la sección de reclamación de volúmenes persistentes, especifique el nombre de la PVC que ha creado anteriormente.
  8. Cree el despliegue en el clúster.

    kubectl apply -f deployment.yaml
    
  9. Verifique que la PVC se ha montado correctamente en la app. Los pods pueden tardar unos minutos en pasar al estado Running.

    Durante el desarrollo de la app, es posible que reciba errores que indiquen que Unable to mount volumes en la sección Events de la salida de la CLI. El complemento de clúster Block Storage for VPC reintenta automáticamente montar el almacenamiento en sus aplicaciones. Espere unos minutos a que el almacenamiento se monte en la app.

    kubectl describe deployment <deployment_name>
    

    Salida de ejemplo

    ...
    Volumes:
    myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    

Utilización de una instancia de Block Storage for VPC existente

Si dispone de un dispositivo de Block Storage for VPC físico existente que desea utilizar en el clúster, puede crear manualmente el PV y la PVC para suministrar de forma estática el almacenamiento.

Solo puede conectar un volumen a un nodo trabajador. Asegúrese de que el volumen esté en la misma zona que el nodo trabajador para que la conexión se realice correctamente.

  1. Determine el volumen que desea conectar a un nodo trabajador en el clúster de VPC. Anote el ID de volumen.

    ibmcloud is volumes
    
  2. Obtenga una lista de los detalles del volumen. Anote los valores de Size, Zone e IOPS. Estos valores se utilizan para crear el PV.

    ibmcloud is volume <volume_id>
    
  3. Recupere una lista de nodos trabajadores en el clúster de VPC. Anote el valor de Zone del nodo trabajador que se encuentra en la misma zona que el volumen de almacenamiento.

    ibmcloud ks worker ls -c <cluster_name>
    
  4. Opcional: si ha suministrado la instancia física de Block Storage for VPC mediante una clase de almacenamiento retain, el PV y el almacenamiento físico no se eliminan cuando se elimina la PVC. Para utilizar el dispositivo físico de Block Storage for VPC en el clúster, primero debe eliminar el PV existente.

    1. Consulte los PV del clúster y busque el PV perteneciente al dispositivo de Block Storage for VPC. El PV está en el estado released.

      kubectl get pv
      
    2. Elimine el PV.

      kubectl delete pv <pv_name>
      
  5. Cree un archivo de configuración para el PV. Incluya el ID, el tamaño (Size) y la zona (Zone) y el valor de IOPS que ha recuperado anteriormente.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <pv_name> # Example: my-persistent-volume
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: <vpc_block_storage_size> # Example: 20Gi
      csi:
        driver: vpc.block.csi.ibm.io
        fsType: ext4
        volumeAttributes:
          iops: "<vpc_block_storage_iops>" # Example: "3000"
          volumeId: <vpc_block_storage_ID> # Example: a1a11a1a-a111-1111-1a11-1111a11a1a11
          zone: "<vpc_block_zone>" # Example: "eu-de-3"
          region: "<vpc_block_region>"
        volumeHandle: <vpc_block_storage_ID>
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: failure-domain.beta.kubernetes.io/zone
              operator: In
              values:
              - <worker_node_zone> # Example: eu-de-3
            - key: failure-domain.beta.kubernetes.io/region
              operator: In
              values:
              - <worker_node_region> # Example: eu-de
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <worker_node_primary_IP>
      persistentVolumeReclaimPolicy: Retain
      storageClassName: ""
      volumeMode: Filesystem
    
    name
    En la sección metadata, especifique un nombre para el PV.
    storage
    En la sección de capacidad de la especificación, especifique el tamaño del volumen de Block Storage for VPC en gigabytes (Gi) que ha recuperado anteriormente. Por ejemplo, si el tamaño del dispositivo es de 100 GB, especifique 100Gi.
    iops
    En la sección de atributos de volumen de CSI de la especificación, especifique el número máximo de IOPS del volumen de Block Storage for VPC que ha recuperado anteriormente.
    zone
    En la sección de atributos de volumen de CSI de la especificación, especifique la zona de bloque de VPC que coincida con la ubicación que ha recuperado anteriormente. Por ejemplo, si su ubicación es Washington DC-1, utilice us-east-1 como zona. Para consultar las zonas disponibles, ejecute ibmcloud is zones. Para ver las zonas y ubicaciones de VPC disponibles, consulte Creación de una VPC en otra región. Indique el parámetro "region" cuando se especifique "zone".
    region
    La región del nodo de trabajador a la que desea conectar el almacenamiento.
    worker_node_primary_IP
    La IP primaria del nodo de trabajador a la que desea conectar el almacenamiento. Puede consultar la IP primaria del nodo de trabajador ejecutando ibmcloud ks worker ls.
    volumeId y spec.csi.volumeHandle
    En la sección de atributos de volumen de CSI de la especificación, especifique el ID del volumen de Block Storage for VPC que ha recuperado anteriormente.
    storageClassName
    Como nombre de la clase de almacenamiento de la especificación, especifique una serie vacía.
    matchExpressions
    En la sección de afinidad de nodos de la especificación, especifique los términos del selector de nodo para que coincidan con la zona. Para la clave, especifique failure-domain.beta.kubernetes.io/zone. Para el valor, especifique la zona del nodo trabajador en la que desea adjuntar el almacenamiento.
    matchExpressions
    En la sección de afinidad de nodos de la especificación, especifique los términos del selector de nodo para que coincidan con la región. Para la clave, especifique failure-domain.beta.kubernetes.io/region. Para el valor, especifique la región del nodo trabajador en la que desea adjuntar el almacenamiento.
  6. Cree el PV en el clúster.

    kubectl apply -f pv.yaml
    
  7. Verifique que el PV se ha creado en el clúster.

    kubectl get pv
    
  8. Cree otro archivo de configuración para la PVC. Para que la PVC coincida con el PV que ha creado anteriormente, debe elegir el mismo valor para tamaño de almacenamiento y modalidad de acceso. En el campo de clase de almacenamiento, especifique un valor de serie vacío para que coincida con el PV. Si alguno de estos campos no coincide con el PV, se creará automáticamente un nuevo PV y una instancia de Block Storage for VPC a través del aprovisionamiento dinámico.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc_name>
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: <vpc_block_storage_size>
      storageClassName: ""
    
  9. Cree la PVC.

    kubectl apply -f pvc.yaml
    
  10. Verifique que la PVC se ha creado y se ha enlazado al PV que ha creado con anterioridad. Este proceso puede tardar unos minutos.

kubectl describe pvc <pvc_name>
  1. Cree un despliegue o un pod que utilice la PVC.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment_name>
  labels:
    app: <deployment_label>
spec:
  selector:
    matchLabels:
      app: <app_name>
  template:
    metadata:
      labels:
        app: <app_name>
    spec:
      containers:
      - image: <image_name>
        name: <container_name>
        volumeMounts:
        - name: <volume_name>
          mountPath: /<file_path>
      volumes:
      - name: <volume_name>
        persistentVolumeClaim:
          claimName: <pvc_name>
      nodeSelector:
        kubernetes.io/hostname: "<worker_node_primary_IP>"

Actualización del complemento de clúster Block Storage for VPC

Puede actualizar el complemento Block Storage for VPC del clúster utilizando el addon update comando.

Antes de actualizar el complemento, revise el registro de cambios.

Antes de actualizar a una versión " 5.x desde una versión anterior, no debe tener ninguna instantánea de volumen en estado " failure. Para obtener más información, consulte ¿Por qué no puedo eliminar mis recursos de Block Storage for VPC instantáneas de volumen?.

  1. Compruebe si hay una actualización disponible. Si hay una actualización disponible, la versión del plugin se marca con un asterisco y se muestra la versión más reciente. Anote la versión más reciente, ya que este valor se utiliza más tarde.

    ibmcloud ks cluster addons --cluster <cluster_name_or_ID>
    

    Salida de ejemplo

    Name                   Version                 Health State   Health Status   
    vpc-block-csi-driver   1.0.0* (2.0.0 latest)   normal         Addon Ready
    
  2. Actualice el complemento. Tenga en cuenta que los mandatos de actualización son diferentes en función de la versión que haya instalado.

    5.0 y posterior Ejecute el mandato addon update.

    ibmcloud ks cluster addon update vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
    

    Todas las versiones anteriores a la versión 5.0 Inhabilite y habilite el complemento.

    ibmcloud ks cluster addon disable vpc-block-csi-driver --cluster CLUSTER [-f] [-q]
    
    ibmcloud ks cluster addon enable vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
    
  3. Verifique que el complemento se encuentra en el estado Addon Ready. El complemento puede tardar unos minutos en estar preparado.

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    Salida de ejemplo

    Name                   Version   Health State   Health Status   
    vpc-block-csi-driver   2.0.0     normal         Addon Ready
    

    Si utiliza una clase de almacenamiento predeterminada que no sea ibmc-vpc-block-10iops-tier, debe cambiar los valores de clase de almacenamiento predeterminada en el mapa de configuración de addon-vpc-block-csi-driver-configmap. Para obtener más información, consulte Cambio de la clase de almacenamiento predeterminada.

  4. Si ha creado sus propias clases de almacenamiento basándose en las clases de almacenamiento predeterminadas de Block Storage for VPC, deberá volver a crear dichas clases de almacenamiento para actualizar los parámetros. Para obtener más información, consulte Recreación de sus propias clases de almacenamiento tras actualizar a la versión 4.2.

Volver a crear sus propias clases de almacenamiento después de actualizar a la versión 4.2

Con la versión 4.2, han cambiado los parámetros predeterminados para las clases de almacenamiento. Los parámetros sizeRange o iopsRange ya no se utilizan. Si creó alguna de sus propias clases de almacenamiento que utilizan estos parámetros, debe editar sus propias clases de almacenamiento para eliminar estos parámetros. Para cambiar los parámetros de sus propias clases de almacenamiento, debe borrarlas y volver a crearlas. Anteriormente, se proporcionaba a sizeRange y iopsRange cada clase de almacenamiento como información de referencia. Con la versión 4.2, estas referencias se han eliminado. Ahora, para obtener información sobre los perfiles de almacenamiento en bloque, los tamaños y las IOPs, consulte la referencia de perfiles de almacenamiento en bloque .

  1. Para encontrar los detalles de sus propias clases de almacenamiento, ejecute el siguiente comando.

    kubectl describe sc STORAGECLASS
    
  2. Si la clase de almacenamiento utiliza sizeRange o iopsRange, obtenga la clase de almacenamiento YAML y guárdela en un archivo.

    kubectl get sc STORAGECLASS -o yaml
    
  3. En el archivo que ha guardado de la salida del mandato anterior, elimine los parámetros sizeRange o iopsRange.

  4. Suprima la clase de almacenamiento del clúster.

    kubectl delete sc STORAGECLASS
    
  5. Vuelva a crear la clase de almacenamiento en el clúster utilizando el archivo que ha creado anteriormente.

    kubectl apply -f custom-storage-class.yaml
    

Configuración del cifrado para Block Storage for VPC

Utilice un proveedor de servicio de gestión de claves (KMS), como por ejemplo IBM® Key Protect, para crear una clave raíz privada que utilice en la instancia de Block Storage for VPC para cifrar los datos a medida que se graban en el almacenamiento. Después de crear la clave raíz privada, cree su propia clase de almacenamiento o un secreto Kubernetes con su clave raíz y, a continuación, utilice esta clase de almacenamiento o secreto para aprovisionar su instancia Block Storage for VPC.

Habilitar el cifrado afecta Block Storage for VPC al rendimiento en aproximadamente un 20 %. Sin embargo, el impacto exacto depende del nodo trabajador y de la configuración del volumen de almacenamiento. Considere la posibilidad de permitir impactos en el rendimiento al habilitar el cifrado.

  1. Cree una instancia del proveedor KMS que desee utilizar.

  2. Cree una clave raíz en su instancia de KMS.

  3. Configurar la autorización de servicio a servicio. Autorice a Block Storage for VPC a que acceda a IBM® Key Protect. Asegúrese de dar Block Storage for VPC al menos Reader acceso a su instancia KMS.

  4. Decida si desea almacenar el CRN de clave raíz de Key Protect en una clase de almacenamiento personalizada o en un secreto de Kubernetes. A continuación, siga los pasos para crear una clase de almacenamiento personalizada o un secreto de Kubernetes.

    Ejemplo de clase de almacenamiento personalizada.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name> # Enter a name for your storage class.
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "5iops-tier"
      csi.storage.k8s.io/fstype: "ext4"
      billingType: "hourly"
      encrypted: "true"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: ""
      tags: ""
      generation: "gc"
      classVersion: "1"
    reclaimPolicy: "Delete"
    
    encrypted
    En los parámetros, introduzca true para crear una clase de almacenamiento que configure el cifrado para sus volúmenes Block Storage for VPC. Si establece esta opción en true, deberá proporcionar el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar en parameters.encryptionKey.
    encryptionKey
    En los parámetros, especifique el CRN de la clave raíz que ha recuperado antes.

    Ejemplo de secreto Kubernetes.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
    data
      encryptionKey: <encryption_key>
    
    name
    Especifique un nombre para el secreto.
    namespace
    Especifique el espacio de nombres en el que desea crear el secreto.
    encrypted
    En los parámetros, introduzca true para configurar el cifrado de sus volúmenes Block Storage for VPC.
    encryptionKey
    En los parámetros, especifique el CRN de la clave raíz de la instancia de servicio de Key Protect que desea utilizar para cifrar el volumen de Block Storage for VPC. Para utilizar el CRN de clave raíz en un secreto, primero debe convertirlo a base64 ejecutando echo -n "<root_key_CRN>" | base64.
  5. Siga los pasos 4-9 de Adición de Block Storage for VPC a sus apps para crear una PVC con la clase de almacenamiento personalizada para suministrar Block Storage for VPC configurado para el cifrado con la clave raíz de Key Protect. A continuación, monte este almacenamiento en un pod de app.

    La app puede tardar unos minutos en montar el almacenamiento y entrar en el estado Running.

  6. Verifique que los datos están cifrados. Consulte los volúmenes de Block Storage for VPC y anote el ID de la instancia que ha creado. El Nombre de la instancia de almacenamiento es igual que el nombre del PV que se ha creado automáticamente al crear la PVC.

    ibmcloud is vols
    

    Salida de ejemplo

    ID                                     Name                                       Status      Capacity   IOPS   Profile           Attachment type   Created                     Zone         Resource group
    a395b603-74bf-4703-8fcb-b68e0b4d6960   pvc-479d590f-ca72-4df2-a30a-0941fceeca42   available   10         3000   5iops-tier        data              2019-08-17T12:29:18-05:00   us-south-1   a8a12accd63b437bbd6d58fb6a462ca7
    
  7. Utilizando el ID del volumen, consulte los detalles de la instancia de Block Storage for VPC para asegurarse de que la clave raíz de Key Protect está almacenada en la instancia de almacenamiento. Encontrará la clave raíz en el campo Encryption key de la información de salida de la CLI.

    ibmcloud is vol <volume_ID>
    

    Salida de ejemplo

    ID                                     a395b603-74bf-4703-8fcb-b68e0b4d6960   
    Name                                   pvc-479d590f-ca72-4df2-a30a-0941fceeca42   
    Status                                 available   
    Capacity                               10   
    IOPS                                   3000   
    Profile                                5iops-tier   
    Encryption key                         crn:v1:bluemix:public:kms:us-south:a/6ef045fd2b43266cfe8e6388dd2ec098:53369322-958b-421c-911a-c9ae8d5156d1:key:47a985d1-5f5e-4477-93fc-12ce9bae343f   
    Encryption                             user_managed   
    Resource group                         a8a12accd63b437bbd6d58fb6a462ca7
    Created                                2019-08-17T12:29:18-05:00
    Zone                                   us-south-1   
    Volume Attachment Instance Reference
    

Personalización de los valores de almacenamiento predeterminados

Puede cambiar algunos valores de PVC predeterminados utilizando una clase de almacenamiento personalizada o un secreto de Kubernetes para crear Block Storage for VPC con valores personalizados.

¿Cuál es la ventaja de utilizar un secreto y especificar mis parámetros en una clase de almacenamiento personalizada?
Como administrador de clúster, cree una clase de almacenamiento personalizada cuando desee que todas las PVC que creen los usuarios de clúster se suministren con una configuración específica y no desee permitir que los usuarios de clúster alteren temporalmente la configuración predeterminada.
Sin embargo, si se necesitan varias configuraciones y no desea crear una clase de almacenamiento personalizada para cada configuración de PVC posible, puede crear una clase de almacenamiento personalizado con los valores de PVC predeterminados y una referencia a un secreto de Kubernetes genérico. Si los usuarios del clúster deben modificar los valores predeterminados de la clase de almacenamiento personalizada, pueden hacerlo creando un secreto de Kubernetes que contenga sus valores personalizados.

Cuando desee configurar el cifrado para la instancia de Block Storage for VPC, también puede utilizar un secreto de Kubernetes si desea codificar el CRN de clave raíz de Key Protect en base64 en lugar de proporcionar la clave directamente en la clase de almacenamiento personalizada.

Modificación de la clase de almacenamiento predeterminada

Con la versión 4.2 el complemento Block Storage for VPC de clúster establece la clase de almacenamiento predeterminada en la ibmc-vpc-block-10iops-tier clase. Si tiene una clase de almacenamiento predeterminada que no sea ibmc-vpc-block-10iops-tier y las PVC utilizan la clase de almacenamiento predeterminada, se pueden generar varias clases de almacenamiento predeterminadas y llegar a provocar errores de creación de PVC. Para utilizar una clase de almacenamiento predeterminada que no sea ibmc-vpc-block-10iops-tier, puede actualizar addon-vpc-block-csi-driver-configmap para cambiar el valor IsStorageClassDefault a false.

La clase de almacenamiento predeterminada para el complemento de clúster Block Storage for VPC es la clase de almacenamiento ibmc-vpc-block-10iops-tier.

  1. Edite addon-vpc-block-csi-driver-configmap

    kubectl edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. Cambie el valor de IsStorageClassDefault a false.

  3. Guardar y salir.

  4. Espere 15 minutos y verifique el cambio obteniendo los detalles de la clase de almacenamiento ibmc-vpc-block-10iops-tier.

    kubectl get sc ibmc-vpc-block-10iops-tier -o yaml
    

Creación de su propia clase de almacenamiento

Cree su propia clase de almacenamiento personalizada con los valores que desee para la instancia de Block Storage for VPC. Mediante el perfil SDP, puede especificar la capacidad y el límite máximo de rendimiento.

Los perfiles de rendimiento definidos por SSD (SDP) están disponibles en Dallas, Fráncfort, Londres, Madrid, Osaka, São Paulo, Sídney, Tokio, Toronto y Washington D.C. La creación de instantáneas para perfiles de rendimiento definidos para SSD está disponible en Dallas, Fráncfort, Tokio y Washington. D.C

Si lo deseas, puedes crear tu propia clase de almacenamiento:

  • Configurar un valor de IOPs personalizado.
  • Configurar Block Storage for VPC con un tipo de sistema de archivos distinto de ext4.
  • Configurar el cifrado.
  • Configurar el rendimiento definido por SSD.

Antes de empezar

  • Revise la información de referencia de clase de almacenamiento para determinar el profile que desea utilizar para la clase de almacenamiento.

  • También puede revisar los perfiles personalizados si desea especificar IOPs personalizados para Block Storage for VPC.

  • Si desea utilizar un perfil de rendimiento definido por SSD (SDP), revise el rango de capacidad y los detalles de IOPs. Tenga en cuenta que cuando se utiliza un rendimiento definido por SSD, la capacidad del volumen viene determinada por las IOP y el rendimiento que especifique.

  • Puede utilizar una clase de almacenamiento existente como punto de partida para crear su propia clase. Guarde los detalles de una clase de almacenamiento existente utilizando el comando kubectl get sc <storageclass> -o yaml.

  • Para mantener los costes bajos, puede aprovisionar inicialmente un PVC con baja capacidad, IOPS mínimo y rendimiento mínimo utilizando la clase de almacenamiento ibmc-vpc-block-sdp, que tiene un mínimo de 3000 IOPS y 1000 Throughput (Mbps). Tras el aprovisionamiento, puede acceder al PVC y ajustar las IOPS y el rendimiento a medida que se definan mejor las necesidades.

Para crear una clase de almacenamiento personalizada:

  1. Cree un archivo de configuración de clase de almacenamiento personalizado con el siguiente formato. Elija entre una clase de almacenamiento de primera generación y una de segunda generación.

    Ejemplo de primera generación:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name>
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "<profile>" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom
      csi.storage.k8s.io/fstype: "<file_system_type>" # xfs, ext3, or ext4
      billingType: "hourly"
      encrypted: "<encrypted_true_false>"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: "<zone>"
      region: "<region>"
      tags: "<tags>"
      generation: "gc"
      throughput: "<throughput>" # Example: 2000
      classVersion: "1"
      iops: "<iops>" # Only specify this parameter if you are using a "custom" profile.
    allowVolumeExpansion: (true|false) # Select true or false. Only supported on version 3.0.1 and later
    volumeBindingMode: <volume_binding_mode>
      # csi.storage.k8s.io/provisioner-secret-name: # Uncomment and add secret parameters to enforce encryption.
      # csi.storage.k8s.io/provisioner-secret-namespace:
    reclaimPolicy: "<reclaim_policy>"
    
    name
    Especifique un nombre para la clase de almacenamiento.
    profile
    Introduzca el perfil que ha seleccionado en el paso anterior. Elija general-purpose, sdp, 5iops-tier, 10iops-tier, o personalizado utilice un valor IOPs personalizado. Para encontrar los tamaños de almacenamiento admitidos para un perfil específico, consulte Perfil de IOPS por niveles. Cualquier PVC que utilice esta clase de almacenamiento debe especificar un valor de tamaño que esté dentro de este rango.
    csi.storage.k8s.io/fstype
    En los parámetros, especifique el sistema de archivos de la instancia de Block Storage for VPC. Elija xfs, ext3 o ext4. Si desea modificar la propiedad o los permisos de su volumen, debe especificar csi.storage.k8s.io/fstype en su propia clase de almacenamiento y su PVC debe tener ReadWriteOnce como accessMode. El controlador Block Storage for VPC utiliza la dirección ReadWriteOnceWithFSType fsGroupPolicy. Para más información, consulte la documentación del controlador CSI.
    encrypted
    En los parámetros, introduzca true para crear una clase de almacenamiento que configure el cifrado para su volumen Block Storage for VPC. Si establece esta opción en true, deberá proporcionar el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar en parameterencryptionKey. Para obtener más información sobre el cifrado de datos, consulte Configuración del cifrado para Block Storage for VPC.
    encryptionKey
    Si ha introducido true para parameters.encrypted, introduzca el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar para cifrar su volumen Block Storage for VPC. Para obtener más información sobre el cifrado de datos, consulte Configuración del cifrado para Block Storage for VPC.
    zone
    En los parámetros, especifique la zona de VPC en la que desea crear la instancia de Block Storage for VPC. Asegúrese de utilizar una zona a la que estén conectados los nodos trabajadores. Para listar las zonas VPC que utilizan sus nodos de trabajo, ejecute ibmcloud ks cluster get --cluster <cluster_name_or_ID> y mire el campo Worker Zones en la salida CLI. Si no especifica una zona, se selecciona automáticamente una de las zonas de nodo de trabajador para la instancia de Block Storage for VPC.
    region
    La región del nodo de trabajador a la que desea conectar el almacenamiento.
    tags
    En los parámetros, introduzca una lista de etiquetas separadas por espacios para aplicarlas a su instancia de Block Storage for VPC. Las etiquetas pueden ayudarle a encontrar instancias más fácilmente o a agrupar sus instancias en función de características comunes, como la app o el entorno para el que se utilizan.
    iops
    Si ha introducido custom o sdp para profile, introduzca un valor para los IOP que desea que utilice Block Storage for VPC. Consulte la tabla de perfil de IOPs personalizado de Block Storage for VPC para obtener una lista de los rangos de IOPs soportados por tamaño de volumen.
    throughput
    Introduzca este valor si utiliza un perfil sdp. Para más información, consulte los detalles de IOP y rendimiento del perfil SDP
    reclaimPolicy
    Especifique la política de reclamación para la clase de almacenamiento. Si desea conservar el PV, el dispositivo de almacenamiento físico y los datos cuando elimine la PVC, escriba Retain. Si desea suprimir el PV, el dispositivo de almacenamiento físico y los datos cuando elimine la PVC, escriba Delete.
    allowVolumeExpansion
    Especifique la política de ampliación de volumen para la clase de almacenamiento. Si no desea permitir la ampliación del volumen, especifique true. Si no desea permitir la expansión del volumen, especifique false.
    volumeBindingMode
    Elija si desea retrasar la creación de la instancia de Block Storage for VPC hasta que el primer pod que utiliza este almacenamiento esté listo para planificarse. Para retrasar la creación, especifique WaitForFirstConsumer. Para crear la instancia al crear la PVC, especifique Immediate.

    Ejemplo de segunda generación:

    Si aprovisiona un PVC de 9.6TB utilizando la clase de almacenamiento de primera generación ibmc-vpc-block-5iops-tier, la IOPS máxima es de 48.000 y el rendimiento máximo es de 6144 Mbps. Sin embargo, con la segunda generación de la clase de almacenamiento ibmc-vpc-block-sdp-max-bandwidth, la IOPS máxima es de 64.000 y el rendimiento máximo es de 8192 Mbps.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-vpc-block-sdp-max-bandwidth
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "sdp" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom
      csi.storage.k8s.io/fstype: "ext4" # xfs, ext3, or ext4
      billingType: "hourly"
      encrypted: "false"
      encryptionKey: ""
      resourceGroup: ""
      zone: "us-east"
      region: "tor01"
      tags: "tag"
      generation: "gc"
      throughput: "8192" # Example: 2000
      classVersion: "1"
      iops: "64000" # Only specify this parameter if you are using a "custom" profile.
    allowVolumeExpansion: true # Select true or false. Only supported on version 3.0.1 and later
    volumeBindingMode: Immediate
    reclaimPolicy: "Delete"
    
  2. Cree la clase de almacenamiento personalizada en su clúster.

    kubectl apply -f custom-storageclass.yaml
    
  3. Verifique que la clase de almacenamiento está disponible en el clúster.

    kubectl get sc
    

    Salida de ejemplo

    NAME                                    PROVISIONER            AGE
    <custom-storageclass>             vpc.block.csi.ibm.io   4m26s
    
  4. Siga los pasos de Adición de Block Storage for VPC a las apps para crear una PVC con la clase de almacenamiento personalizada para suministrar Block Storage for VPC. A continuación, monte este almacenamiento en una app de ejemplo.

  5. Opcional: Verifique el tipo de sistema de archivos de Block Storage for VPC.

Verificación del sistema de archivos de Block Storage for VPC

Puede crear una clase de almacenamiento personalizada para suministrar Block Storage for VPC con otro sistema de archivos, como por ejemplo xfs o ext3. De forma predeterminada, todas las instancias de Block Storage for VPC se suministran con un sistema de archivos ext4.

  1. Siga los pasos para crear una clase de almacenamiento personalizada con el sistema de archivos que desee utilizar.

  2. Siga los pasos 4-9 de Adición de Block Storage for VPC a las apps para crear una PVC con la clase de almacenamiento personalizada para suministrar Block Storage for VPC. A continuación, monte este almacenamiento en un pod de app.

    La app puede tardar unos minutos en montar el almacenamiento y entrar en el estado Running.

  3. Verifique que el almacenamiento se ha montado con el sistema de archivos correcto. Consulte los pods del y anote el Nombre del pod que ha utilizado para montar el almacenamiento.

    kubectl get pods
    
  4. Inicie una sesión en el pod.

    kubectl exec <pod_name> -it bash
    
  5. Consulte las vías de acceso de montaje dentro de su pod.

    mount | grep /dev/xvdg
    

    Salida de ejemplo para xfs.

    /dev/xvdg on /test type xfs (rw,relatime,attr2,inode64,noquota)
    
  6. Salga del pod.

    exit
    

actualizar

la VolumeAttachLimit

En las versiones 5.2 y posteriores del complemento de clúster Block Storage for VPC, puede editar el número máximo de volúmenes que se pueden adjuntar a cada nodo editando el mapa de configuración. El valor predeterminado es 12.

Su cuenta debe estar aprobada para utilizar esta característica.

  1. Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.

  2. Edite el mapa de configuración. Sustituya VALUE por el límite de conexión de volumen que desea establecer.

    kubectl patch configmap/addon-vpc-block-csi-driver-configmap \       
    -n kube-system \
    --type merge \
    -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
    
  3. Espere a que se reinicien los pods de ibm-vpc-block-csi-node en el espacio de nombres kube-system. Verifique que los pods se han reiniciado.

    kubectl get pods -n kube-system -w| grep block-csi
    
  4. Ahora puede adjuntar volúmenes a los nodos trabajadores utilizando el suministro dinámico o creando manualmente los adjuntos. Para obtener más información, consulte Adición de Block Storage for VPC a sus apps o Utilización de una instancia existente de Block Storage for VPC.

Almacenamiento de los valores de PVC personalizados en un secreto de Kubernetes

Especifique los valores de PVC en un secreto de Kubernetes y haga referencia a este secreto en una clase de almacenamiento personalizada. A continuación, utilice la clase de almacenamiento personalizada para crear una PVC con los parámetros personalizados que establezca en el secreto.

¿Qué opciones tengo para utilizar el secreto de Kubernetes?
Como administrador del clúster, puede elegir si desea permitir que cada usuario del clúster modifique los valores predeterminados de una clase de almacenamiento, o si desea crear un secreto que todos los usuarios del clúster deban utilizar y que imponga la codificación base64 para el CRN de la clave raíz de Key Protect.
Cualquier usuario puede personalizar los valores predeterminados
En este escenario, el administrador del clúster crea una clase de almacenamiento personalizada con los valores predeterminados de la PVC y una referencia a un secreto de Kubernetes genérico. Los usuarios de clúster pueden modificar los valores predeterminados de la clase de almacenamiento creando un secreto de Kubernetes con los valores de PVC que deseen. Para que los valores personalizados del secreto se apliquen a su instancia de Block Storage for VPC, debe crear una PVC con el mismo nombre que el secreto de Kubernetes.
Imponer una codificación base64 para la clave raíz de Key Protect
En este escenario, se crea una clase de almacenamiento personalizada con los valores predeterminados de la PVC y una referencia a un secreto de Kubernetes estático que sustituye o mejora los valores predeterminados de la clase de almacenamiento personalizada. Los usuarios de clúster no pueden alterar temporalmente los valores predeterminados creando su propio secreto de Kubernetes. En su lugar, los usuarios del clúster deben suministrar Block Storage for VPC con la configuración que haya elegido en la clase de almacenamiento personalizada y en el secreto. La ventaja de utilizar este método con respecto a crear únicamente una clase de almacenamiento personalizada es que puede imponer la codificación base64 para el CRN de la clave raíz de la instancia de servicio de Key Protect cuando desea cifrar los datos en la instancia de Block Storage for VPC.
¿Qué debo tener en cuenta antes de empezar a utilizar el secreto Kubernetes para la configuración de mi PVC?
Algunos ajustes de PVC, como reclaimPolicy, fstype, o volumeBindingMode no pueden establecerse en el secreto Kubernetes y deben establecerse en la clase de almacenamiento. Como administrador del clúster, si desea permitir que los usuarios del clúster modifiquen los valores predeterminados, debe asegurarse de que ha configurado suficientes clases de almacenamiento personalizadas que hagan referencia a un secreto de Kubernetes genérico para que los usuarios puedan suministrar Block Storage for VPC con distintos valores de reclaimPolicy, fstype y volumeBindingMode.

Cómo permitir que todos los usuarios puedan personalizar los valores de PVC predeterminados

  1. Como administrador del clúster, siga los pasos para crear una clase de almacenamiento personalizada. En el archivo YAML de la clase de almacenamiento personalizada, haga referencia al secreto de Kubernetes en la sección metadata.parameters de la manera siguiente. Asegúrese de añadir el código tal cual y de no cambiar los nombres de las variables.

    csi.storage.k8s.io/provisioner-secret-name: ${pvc.name}
    csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
    
  2. Como usuario del clúster, cree un secreto de Kubernetes que personalice los valores predeterminados de la clase de almacenamiento.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      iops: "<IOPS_value>"
      zone: "<zone>"
      tags: "<tags>"
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data
      encryptionKey: <encryption_key>
    
    name
    Especifique un nombre para el secreto de Kubernetes.
    namespace
    Especifique el espacio de nombres en el que desea crear el secreto. Para hacer referencia al secreto en la PVC, la PVC debe crearse en el mismo espacio de nombres.
    iops
    En la sección de datos de serie, especifique el rango de IOPS que desea permitir para la instancia de Block Storage for VPC. El rango que especifique debe coincidir con el nivel de Block Storage for VPC que tiene previsto utilizar.
    zone
    En la sección de datos de serie, especifique la zona de VPC en la que desea crear la instancia de Block Storage for VPC. Asegúrese de utilizar una zona a la que estén conectados los nodos trabajadores. Para listar las zonas VPC que utilizan sus nodos de trabajo, ejecute ibmcloud ks cluster get --cluster <cluster_name_or_ID> y mire el campo Worker Zones en la salida CLI. Si no especifica una zona, se selecciona automáticamente una de las zonas de nodo de trabajador para la instancia de Block Storage for VPC.
    tags
    En la sección de datos de serie, especifique una lista de etiquetas separadas por comas que se utilizarán cuando se cree la PVC. Las etiquetas pueden ayudarle a encontrar su instancia de almacenamiento una vez creada.
    resourceGroup
    En la sección de datos de cadena, introduzca el ID del grupo de recursos al que desea que acceda su instancia Block Storage for VPC. Si no especifica un grupo de recursos, la instancia se autoriza automáticamente para acceder al grupo de recursos al que pertenece el clúster.
    encrypted
    En la sección de datos de cadena, introduzca true para crear un secreto que configure el cifrado de los volúmenes de Block Storage for VPC. Si establece esta opción en true, deberá proporcionar el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar en parameters.encryptionKey. Para obtener más información sobre el cifrado de los datos, consulte Configuración del cifrado para Block Storage for VPC.
    encryptionKey
    En la sección de datos, si ha introducido true para parameters.encrypted, introduzca el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar para cifrar sus volúmenes Block Storage for VPC. Para utilizar el CRN de clave raíz en un secreto, primero debe convertirlo a base64 ejecutando echo -n "<root_key_CRN>" | base64. Para obtener más información sobre el cifrado de datos, consulte Configuración del cifrado para Block Storage for VPC.
  3. Cree su secreto de Kubernetes.

    kubectl apply -f secret.yaml
    
  4. Siga los pasos del tema sobre Adición de Block Storage for VPC a las apps para crear una PVC con los valores personalizados. Asegúrese de crear la PVC con la clase de almacenamiento personalizada que ha creado el administrador del clúster y de utilizar el mismo nombre para la PVC que ha utilizado para el secreto. Al utilizar el mismo nombre para el secreto y para la PVC, se indica al proveedor de almacenamiento que aplique los valores del secreto a la PVC.

Cómo forzar la codificación base64 para el CRN de clave raíz de Key Protect

  1. Como administrador del clúster, cree un secreto de Kubernetes que incluya el valor codificado en base64 para el CRN de clave raíz de Key Protect. Para recuperar el CRN de la clave raíz, consulte Configuración del cifrado para Block Storage for VPC.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data:
      encryptionKey: <encryption_key>
    
    name
    Especifique un nombre para el secreto de Kubernetes.
    namespace
    Especifique el espacio de nombres en el que desea crear el secreto. Para hacer referencia al secreto en la PVC, la PVC debe crearse en el mismo espacio de nombres.
    encrypted
    En la sección de datos de cadena, introduzca true para crear un secreto que configure el cifrado de los volúmenes de Block Storage for VPC. Si establece esta opción en true, deberá proporcionar el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar en parameters.encryptionKey. Para obtener más información sobre el cifrado de los datos, consulte Configuración del cifrado para Block Storage for VPC.
    encryptionKey
    En la sección de datos, si ha introducido true para parameters.encrypted, introduzca el CRN de la clave raíz de su instancia de servicio Key Protect que desea utilizar para cifrar su volumen Block Storage for VPC. Para utilizar el CRN de clave raíz en un secreto, primero debe convertirlo a base64 ejecutando echo -n "<root_key_CRN>" | base64. Para obtener más información sobre el cifrado de datos, consulte Configuración del cifrado para Block Storage for VPC.
  2. Cree el secreto de Kubernetes.

    kubectl apply -f secret.yaml
    
  3. Siga los pasos para crear una clase de almacenamiento personalizada. En el archivo YAML de la clase de almacenamiento personalizada, haga referencia al secreto de Kubernetes en la sección metadata.parameters de la manera siguiente. Asegúrese de especificar el nombre del secreto de Kubernetes que ha creado anteriormente y el espacio de nombres en el que ha creado el secreto.

    csi.storage.k8s.io/provisioner-secret-name: <secret_name>
    csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
    
  4. Como usuario del clúster, siga los pasos del tema sobre Adición de Block Storage for VPC a las apps para crear una PVC a partir de la clase de almacenamiento personalizada.

Configuración de la expansión del volumen

Para suministrar volúmenes que admitan la expansión, debe utilizar la clase de almacenamiento que tiene allowVolumeExpansion establecido en true.

Solo puede ampliar volúmenes montados por un pod de app.

Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.

  1. Si no está utilizando la versión 4.2 o posterior del complemento, actualice el complemento de clúster Block Storage for VPC en su clúster.

  2. Cree una PVC que utilice una clase de almacenamiento que admita la expansión de volumen.

  3. Despliegue una app que utilice la PVC. Cuando cree la app, tome nota del mountPath que especifique.

  4. Después de montar la PVC mediante un pod de app, puede ampliar el volumen editando el valor del campo spec.resources.requests.storage de la PVC. Para ampliar el volumen, edite la PVC y aumente el valor del campo spec.resources.requests.storage.

    kubectl edit pvc <pvc-name>
    

    Ejemplo

    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  5. Guarde y cierre la PVC.

  6. Opcional: compruebe que el volumen se ha ampliado. Obtenga los detalles de la PVC y tome nota del nombre de PV.

    kubectl get pvc <pvc-name>
    
  7. Describa el PV y anote el ID de volumen.

    kubectl describe PV
    
  8. Obtenga los detalles del volumen de Block Storage for VPC y verifique la capacidad.

    ibmcloud is vol <volume-ID>
    

Ampliación manual de volúmenes antes de la versión complementaria 4.2

Complete los siguientes pasos para ampliar manualmente los volúmenes existentes de Block Storage for VPC que se crearon antes de la versión 4.2 del complemento.

Solo puede ampliar volúmenes montados por un pod de app.

  1. Obtenga los detalles de la app y apunte el nombre y la mountPath (ruta de montaje) de la PVC.

    kubectl get pod <pod-name> -n <pod-namespace> -o yaml
    
  2. Obtenga los detalles de la PVC y tome nota del nombre de PV.

    kubectl get pvc
    
  3. Describa el PV y obtenga el volumeId.

    kubectl describe pv `pv-name` | grep volumeId
    

    Salida de ejemplo para el ID de volumen r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.

    volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
    
  4. Redimensione el volumen con una petición PATCH. El ejemplo siguiente cambia el tamaño de un volumen a 250 GiB.

    curl -sS -X PATCH -H "Authorization: <iam_token>" "https://<region>.iaas.cloud.ibm.com/v1/volumes/<volumeId>?generation=2&version=2020-06-16" -d '{"capacity":250}'
    
    <iam_token>
    Su señal IAM. Para recuperar la señal de IAM, ejecute ibmcloud iam oauth-tokens.
    <region>
    La región en la que está el clúster, por ejemplo us-south.
    <volumeId>
    El ID de volumen que ha recuperado anteriormente. Por ejemplo, r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.
    <capacity>
    El aumento de capacidad en GiB, por ejemplo, 250.
  5. Inicie una sesión en el pod de app.

    kubectl exec <pod-name> -it -- bash
    
  6. Ejecute el mandato siguiente para utilizar los binarios de host.

    chroot /host
    
  7. Obtenga los detalles del sistema de archivos y anote la vía de acceso de Filesystem que desea actualizar. También puede ejecutar grep para la vía de acceso de montaje especificada en el pod de la aplicación.df -h | grep <mount-path>

    df -h
    

    Salida de ejemplo

    Filesystem      Size  Used Avail Use% Mounted on
    overlay          98G   64G   29G  70% /
    tmpfs            64M     0   64M   0% /dev
    tmpfs            32G     0   32G   0% /sys/fs/cgroup
    shm              64M     0   64M   0% /dev/shm
    /dev/vda2        98G   64G   29G  70% /etc/hosts
    /dev/vdg        9.8G   37M  9.8G   1% /mount-path # Note the Filesystem path that corresponds to the mountPath that you specified in your app.
    tmpfs            32G   40K   32G   1% /run/secrets/kubernetes.io/serviceaccount
    tmpfs            32G     0   32G   0% /proc/acpi
    tmpfs            32G     0   32G   0% /proc/scsi
    tmpfs            32G     0   32G   0% /sys/firmware
    
  8. Redimensione el sistema de archivos.

    sudo resize2fs <filesystem-path>
    

    Mandato de ejemplo

    sudo resize2fs /dev/vdg
    
  9. Verifique que el sistema de archivos se ha redimensionado.

    df -h
    

Copia de seguridad y restauración de datos

Los datos de Block Storage for VPC están protegidos en las zonas de error redundantes de la región. Para realizar una copia de seguridad manual de los datos, utilice el mandato Kubernetes kubectl cp.

Puede utilizar kubectl cp comando para copiar archivos y directorios desde y hacia pods o contenedores específicos de su cluster

Antes de empezar: Inicie una sesión en su cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster.

Para hacer una copia de seguridad o para restaurar datos, elija entre las opciones siguientes:

Copie los datos de la máquina local en un pod del clúster.

kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>

Copie los datos de un pod del clúster en la máquina local.

kubectl cp <namespace>/<pod>:<pod_filepath>/<filename> <local_filepath>/<filename>

Copie los datos de la máquina local en un contenedor concreto que ejecute en un pod del clúster.

kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER

Descripción de la capacidad de solicitud de volumen

El controlador CSI de bloque de VPC calcula la capacidad de volumen utilizando la fórmula siguiente.

  • Si se proporciona el valor en Gi: rBytes(requestedBytes) = X * 1024^3

  • Si se proporciona el valor en G: rBytes(requestedBytes) = X * 10^9

El valor solicitado es igual a (((rBytes+ GiB - 1) / GiB) * GiB) / GiB.

Por ejemplo:

  • Si se proporciona un valor de 20Gi, aplicando la fórmula anterior, el volumen que se crea es 20GB.
  • Si se proporciona un valor de 20G, el volumen que se crea es 19GB.

A veces, la capacidad del volumen que se crea es menor que el valor solicitado. Tenga en cuenta que la facturación se aplica al volumen que se crea, no al volumen solicitado.

Asignación de perfiles de confianza al almacenamiento en bloque

Debido a un problema conocido, es posible que las actualizaciones de las etiquetas de usuario en los Block Storage volúmenes VPC no se muestren cuando se implementa un perfil de confianza. Este problema no se presenta en los clusters que no utilizan perfiles de confianza.

Puede utilizar perfiles de confianza para conceder a diferentes identidades de IBM Cloud acceso a los recursos de su cuenta, incluidas sus soluciones de almacenamiento. Los perfiles de confianza centralizan el control de acceso, eliminan la necesidad de claves API de larga duración y permiten limitar los permisos al mínimo necesario para una tarea específica. Para obtener más información, consulte Configuración de un perfil de confianza para componentes de almacenamiento.