Configuration de Block Storage for VPC

Block Storage for VPC fournit un stockage de données hautes performances monté sur hyperviseur pour les instances de serveur virtuel que vous mettez à disposition dans un VPC.

Vous pouvez choisir entre des niveaux de stockage prédéfinis avec des tailles en gigaoctets (Go) et un nombre d'opérations d'entrée-sortie par seconde (IOPS) répondant aux exigences de vos charges de travail. Pour déterminer si Block Storage for VPC est l'option de stockage qui vous convient le mieux, voir Choix d'une solution de stockage. Pour plus d'informations sur la tarification, voir Pricing for Block Storage for VPC.

  • Le module complémentaire de cluster Block Storage for VPC est activé par défaut sur les clusters de VPC.
  • Si vous désactivez le Block Storage for VPC module complémentaire, il restera désactivé jusqu'à ce que vous le réactiviez. Il n'est pas activé lorsque vous actualisez ou mettez à jour le maître du cluster.

Démarrage rapide pour IBM Cloud Block Storage for VPC

Dans ce guide de démarrage rapide, vous créez un volume 10Gi 5IOPS tier Block Storage for VPC dans votre cluster en créant un PVC pour provisionner dynamiquement le volume. Ensuite, vous créez un déploiement d'application qui monte votre PVC.

Désormais disponible, vous pouvez choisir une classe de stockage de deuxième génération.

Vos volumes Block Storage for VPC peuvent être montés par plusieurs pods à condition que ces pods soient planifiés sur le même nœud.

  1. Créez un fichier pour votre PVC et nommez-le pvc.yaml. Choisissez entre une classe de stockage de première et de deuxième génération.

    Exemple de première génération utilisant la classe de stockage 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
    

    Exemple de deuxième génération utilisant la classe de stockage 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. Créez la PVC dans votre cluster.

    kubectl apply -f pvc.yaml
    
  3. Une fois la réservation de volume persistant liée, créez un déploiement d'application qui utilise votre PVC. Créez un fichier pour votre déploiement et nommez-le 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. Créez le déploiement dans votre cluster.

    kubectl apply -f deployment.yaml
    

Pour plus d'informations, voir les liens suivants.

Ajout de Block Storage for VPC à vos applications

Choisissez votre profil Block Storage for VPC et créez une réservation de volume persistant afin de mettre à disposition de façon dynamique Block Storage for VPC pour votre cluster. La mise à disposition dynamique crée automatiquement le volume persistant (PV) correspondant et commande l'unité de stockage physique dans votre compte IBM Cloud.

  1. Déterminez le profil Block Storage for VPC qui répond le mieux à vos exigences en termes de capacité et de performances.

  2. Sélectionnez la classe de stockage correspondante pour votre profil Block Storage for VPC.

    Toutes les classes de stockage prédéfinies par IBM configurent Block Storage for VPC avec un système de fichiers ext4 par défaut. Si vous souhaitez utiliser un autre système de fichiers, tel que xfs ou ext3, créez une classe de stockage personnalisée.

    • 10 IOPS/Go : ibmc-vpc-block-10iops-tier ou ibmc-vpc-block-retain-10iops-tier
    • 5 IOPS/Go : ibmc-vpc-block-5iops-tier ou ibmc-vpc-block-retain-5iops-tier
    • 3 IOPS/Go : ibmc-vpc-block-general-purpose ou ibmc-vpc-block-retain-general-purpose
    • Custom : ibmc-vpc-block-custom ou ibmc-vpc-block-retain-custom
  3. Déterminez la configuration à adopter pour Block Storage for VPC.

    1. Choisissez une taille pour votre stockage. Vérifiez que la taille est prise en charge par le profil Block Storage for VPC que vous avez choisi.
    2. Déterminez si vous souhaitez conserver vos données après la suppression du cluster ou de la réservation de volume persistant (PVC).
      • Pour conserver vos données, choisissez une classe de stockage retain. Lorsque vous supprimez la PVC, seule la réservation de volume persistant est supprimée. Le volume persistant (PV), l'unité de stockage physique dans votre compte IBM Cloud, ainsi que vos données existent toujours. Pour récupérer le stockage et l'utiliser à nouveau dans votre cluster, vous devez retirer le volume persistant et suivre les étapes d'utilisation de l'unité Block Storage for VPC existante.
      • Si vous souhaitez que le volume persistant, les données et votre unité Block Storage for VPC physique soient supprimés en même temps que la PVC, choisissez une classe de stockage sans retain.
  4. Créez un fichier de configuration pour définir votre réservation de volume persistant (PVC) et sauvegardez la configuration sous forme de fichier 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. Créez la PVC dans votre cluster.

    kubectl apply -f pvc.yaml
    
  6. Vérifiez que votre PVC est créée et liée au volume persistant (PV). Ce processus peut prendre quelques minutes.

    kubectl describe pvc <pvc_name>
    

    Exemple de sortie

    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. Créez un fichier de configuration de déploiement pour votre application et montez la PVC sur votre application.

    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
    Dans la section metadata, entrez un libellé pour le déploiement.
    matchLabels.app et labels.app
    Dans les sections spec.selector et template.metadata, entrez un libellé pour votre application.
    image
    Indiquez le nom de l'image de conteneur que vous souhaitez utiliser. Pour répertorier les images disponibles dans votre compte IBM Cloud Container Registry, exécutez la commande ibmcloud cr image-list.
    name
    Indiquez le nom du conteneur que vous souhaitez déployer dans votre pod.
    mountPath
    Dans la section container.volume.mounts, entrez le chemin d'accès absolu du répertoire où est monté le PVC dans le conteneur.
    name
    Dans la section container.volume.mounts, entrez le nom du volume à monter sur votre pod. Vous pouvez entrer n'importe quel nom.
    name
    Dans la section volumes, entrez le nom du volume à monter sur votre pod. Généralement, ce nom est identique à volumeMounts.name.
    claimName
    Dans la section volumes.persistent.volume.claim, entrez le nom de la PVC que vous avez créée précédemment.
  8. Créez le déploiement dans votre cluster.

    kubectl apply -f deployment.yaml
    
  9. Vérifiez que la réservation de volume persistant est bien montée sur votre application. Le passage de vos pods à l'état En cours d'exécution peut prendre quelques minutes.

    Durant le déploiement de votre application, il se peut qu'un message d'erreur Unable to mount volumes s'affiche pas intermittence dans la section Evénements de votre sortie CLI. Le module complémentaire de cluster Block Storage for VPC réessaie automatiquement de monter le stockage pour vos applications. Quelques minutes supplémentaires sont nécessaires avant que le stockage ne soit monté sur votre application.

    kubectl describe deployment <deployment_name>
    

    Exemple de sortie

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

Utilisation d'une instance Block Storage for VPC existante

Si vous disposez déjà d'une unité Block Storage for VPC physique que vous souhaitez utiliser dans votre cluster, vous pouvez créer le volume persistant (PV) et la réservation de volume persistant (PVC) manuellement pour une mise à disposition statique du stockage.

Vous pouvez connecter un volume à un noeud worker uniquement. Assurez-vous que le volume se trouve dans la même zone que le noeud worker pour parvenir à établir la connexion.

  1. Déterminez le volume que vous souhaitez connecter à un noeud worker dans votre cluster de VPC. Notez l'ID du volume.

    ibmcloud is volumes
    
  2. Affichez les détails de votre volume. Notez les valeurs de Taille, Zone et ES/s. Ces valeurs sont utilisées pour créer votre volume persistant (PV).

    ibmcloud is volume <volume_id>
    
  3. Procurez-vous la liste des noeuds worker figurant dans votre cluster de VPC. Notez la zone du noeud worker qui se trouve dans la même zone que votre volume de stockage.

    ibmcloud ks worker ls -c <cluster_name>
    
  4. Facultatif : si vous avez mis à disposition votre instance Block Storage for VPC physique à l'aide d'une classe de stockage retain, le volume persistant (PV) et l'unité de stockage physique ne sont pas retirés en même temps que la PVC. Pour utiliser votre unité Block Storage for VPC physique dans votre cluster, vous devez d'abord retirer d'abord le volume persistant existant.

    1. Répertoriez les volumes persistants de votre cluster et recherchez celui qui appartient à votre unité Block Storage for VPC. Ce PV est à l'état released.

      kubectl get pv
      
    2. Supprimez le volume persistant.

      kubectl delete pv <pv_name>
      
  5. Créez un fichier de configuration pour votre volume persistant. Incluez les valeurs ID, Taille, Zone et IOPS que vous avez extraites précédemment.

    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
    Dans la section metadata, entrez un nom pour votre volume persistant.
    storage
    Dans la section spec.capacity, entrez la taille de votre volume Block Storage for VPC en gigaoctets (Gi) que vous avez extrait précédemment. Par exemple, si la taille de votre unité est de 100 Go, entrez 100Gi.
    iops
    Dans la section spec.CSI.volume.attributes, entrez le nombre maximal d'IOPS du volume Block Storage for VPC que vous avez extrait précédemment.
    zone
    Dans la section spec.CSI.volume.attributes, entrez la zone de bloc VPC correspondant à l'emplacement que vous avez extrait précédemment. Par exemple, si votre emplacement est Washington DC-1, utilisez us-east-1 comme zone. Pour répertorier les zones disponibles, exécutez la commande ibmcloud is zones. Pour connaître les zones et régions VPC disponibles, voir Création d'un VPC dans une autre région. Indiquez le paramètre " région " lorsque la zone " zone " est spécifiée.
    region
    La région du noeud worker où vous souhaitez connecter le stockage.
    worker_node_primary_IP
    L'Adresse IP principale du noeud worker sur lequel vous souhaitez connecter le stockage. Vous pouvez trouver l'adresse IP principale de votre noeud de travail en exécutant ibmcloud ks worker ls.
    volumeId et spec.csi.volumeHandle
    Dans la section spec.CSI.volume.attributes, entrez l'ID du volume Block Storage for VPC que vous avez extrait précédemment.
    storageClassName
    Pour la spécification de nom de classe de stockage, entrez une chaîne vide.
    matchExpressions
    Dans la section spec.node.affinity, entrez les termes de sélecteur de noeud qui doivent correspondre à la zone. Pour la clé, entrez failure-domain.beta.kubernetes.io/zone. Pour la valeur, entrez la zone de votre noeud worker où vous souhaitez associer le stockage.
    matchExpressions
    Dans la section spec.node.affinity, entrez les termes de sélecteur de noeud qui doivent correspondre à la région. Pour la clé, entrez failure-domain.beta.kubernetes.io/region. Pour la valeur, entrez la région du noeud worker où vous souhaitez associer le stockage.
  6. Créez le volume persistant dans votre cluster.

    kubectl apply -f pv.yaml
    
  7. Vérifiez que le volume persistant (PV) est créé dans votre cluster.

    kubectl get pv
    
  8. Créez un autre fichier de configuration pour votre PVC. Pour que cette réservation corresponde au volume persistant que vous avez créé auparavant, vous devez sélectionner la même valeur pour la taille de stockage et le mode d'accès. Dans votre zone de classe de stockage, entrez une valeur de chaîne vide qui devra correspondre à votre volume persistant. Si l'un de ces champs ne correspond pas au PV, un nouveau PV et une instance Block Storage for VPC sont créés automatiquement via le provisionnement dynamique.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc_name>
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: <vpc_block_storage_size>
      storageClassName: ""
    
  9. Créez votre PVC.

    kubectl apply -f pvc.yaml
    
  10. Vérifiez que votre PVC est créée et liée au volume persistant que vous avez créé auparavant. Ce processus peut prendre quelques minutes.

kubectl describe pvc <pvc_name>
  1. Créez un déploiement ou un pod qui utilise votre 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>"

Mise à jour du module complémentaire de cluster Block Storage for VPC

Vous pouvez mettre à jour le module complémentaire Block Storage for VPC de cluster à l'aide de la addon update commande.

Avant de mettre à jour le module complémentaire, consultez le fichier Journal des modifications.

Avant de passer à une version " 5.x à partir d'une version précédente, vous ne devez pas avoir d'instantanés de volume en état " failure Pour plus d'informations, consultez Pourquoi ne puis-je pas supprimer mes ressources Block Storage for VPC d'instantané de volume?.

  1. Vérifiez si une mise à jour est disponible. Si tel est le cas, un astérisque apparaît en regard de la version de plug-in et la version la plus récente est affichée. Notez cette valeur car elle sera utilisée ultérieurement.

    ibmcloud ks cluster addons --cluster <cluster_name_or_ID>
    

    Exemple de sortie

    Name                   Version                 Health State   Health Status   
    vpc-block-csi-driver   1.0.0* (2.0.0 latest)   normal         Addon Ready
    
  2. Mettez à jour le module complémentaire. Notez que les commandes de mise à jour sont différentes selon la version que vous avez installée.

    5.0 et versions ultérieures Exécutez la commande addon update.

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

    Toutes les versions antérieures à la version 5.0 Désactivez et activez le module complémentaire.

    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. Vérifiez que le module complémentaire est à l'état Addon Ready. Quelques minutes peuvent s'écouler avant que le module complémentaire ne soit prêt.

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    Exemple de sortie

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

    Si vous utilisez une classe de stockage par défaut autre que la classe de stockage ibmc-vpc-block-10iops-tier, vous devez modifier les paramètres de classe de stockage par défaut dans la mappe de configuration addon-vpc-block-csi-driver-configmap. Pour plus d'informations, voir Modification de la classe de stockage par défaut.

  4. Si vous avez créé vos propres classes de stockage sur la base des classes de stockage par défaut de Block Storage for VPC, vous devez recréer ces classes de stockage pour mettre à jour les paramètres. Pour plus d'informations, voir Recréer vos propres classes de stockage après une mise à jour vers la version 4.2.

Recréation de vos propres classes de stockage après la mise à jour vers la version 4.2

Avec la version 4.2, les paramètres par défaut des classes de stockage ont changé. Les paramètres sizeRange ou iopsRange ne sont plus utilisés. Si vous avez créé vos propres classes de stockage qui utilisent ces paramètres, vous devez les modifier pour les supprimer. Pour modifier les paramètres de vos propres classes de stockage, vous devez les supprimer et les recréer. Auparavant, sizeRange et iopsRange étaient fournis à chaque classe de stockage en tant qu'informations de référence. Avec la version 4.2, ces références ont été supprimées. Pour plus d'informations sur les profils de stockage de blocs, les tailles et les IOP, reportez-vous à la référence Profils de stockage de bloc.

  1. Pour connaître les détails de vos propres classes de stockage, exécutez la commande suivante.

    kubectl describe sc STORAGECLASS
    
  2. Si la classe de stockage utilise sizeRange ou iopsRange, obtenez la classe de stockage YAML et sauvegardez la dans un fichier.

    kubectl get sc STORAGECLASS -o yaml
    
  3. Dans le fichier que vous avez sauvegardé à partir de la sortie de la commande précédente, supprimez les paramètres sizeRange ou iopsRange.

  4. Supprimez la classe de stockage de votre cluster.

    kubectl delete sc STORAGECLASS
    
  5. Recréez la classe de stockage dans votre cluster à l'aide du fichier que vous avez créé précédemment.

    kubectl apply -f custom-storage-class.yaml
    

Configuration du chiffrement pour Block Storage for VPC

Utilisez un fournisseur de service de gestion de clés (KMS), tel que IBM® Key Protect, pour créer une clé racine privée que vous utilisez dans votre instance Block Storage for VPC pour chiffrer les données telles qu'elles sont écrites dans le stockage. Après avoir créé la clé racine privée, créez votre propre classe de stockage ou un secret Kubernetes avec votre clé racine, puis utilisez cette classe de stockage ou ce secret pour provisionner votre instance Block Storage for VPC.

L'activation du chiffrement Block Storage for VPC a un impact sur les performances d'environ 20 %. Toutefois, l'impact exact dépend de la configuration de votre noeud worker et de votre volume de stockage. Pensez à prendre en compte les impacts sur les performances lors de l'activation du chiffrement.

  1. Créez une instance du fournisseur KMS que vous souhaitez utiliser.

  2. Créez une clé racine dans votre instance KMS.

  3. Mettre en place l'autorisation de service à service. Autorisez Block Storage for VPC à accéder à IBM® Key Protect. Veillez à donner à Block Storage for VPC au moins Reader l'accès à votre instance KMS.

  4. Décidez si vous souhaitez stocker le CRN de clé racine Key Protect dans une classe de stockage personnalisée ou dans un secret Kubernetes. Ensuite, suivez la procédure de création d'une classe de stockage personnalisée ou d'un secret Kubernetes.

    Exemple de classe de stockage personnalisée.

    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
    Dans les paramètres, entrez true pour créer une classe de stockage qui configure le chiffrement de vos volumes Block Storage for VPC. Si vous définissez cette option sur true, vous devez fournir la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser dans parameters.encryptionKey.
    encryptionKey
    Dans les paramètres, entrez le CRN de clé racine que vous avez extrait précédemment.

    Exemple de secret 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
    Entrez un nom pour votre secret.
    namespace
    Entrez l'espace de noms dans lequel vous désirez créer votre secret.
    encrypted
    Dans les paramètres, entrez true pour configurer le cryptage de vos volumes Block Storage for VPC.
    encryptionKey
    Dans les paramètres, entrez le CRN de clé racine de votre instance de service Key Protect que vous souhaitez utiliser pour chiffrer votre volume Block Storage for VPC. Pour utiliser votre CRN de clé racine dans un secret, vous devez d'abord le convertir en base64 en exécutant echo -n "<root_key_CRN>" | base64.
  5. Suivez les étapes 4 à 9 de la rubrique Ajout d'une instance Block Storage for VPC à vos applications pour créer une PVC avec votre classe de stockage personnalisée afin de mettre à disposition une instance Block Storage for VPC qui est configurée pour chiffrement avec votre clé racine Key Protect. Ensuite, montez ce stockage sur un pod d'application.

    Le montage du stockage par votre application et le passage de celle-ci à l'état En cours d'exécution peuvent prendre quelques minutes.

  6. Vérifiez que vos données sont chiffrées. Répertoriez vos volumes Block Storage for VPC et notez l'ID de l'instance que vous avez créée. Le nom (Name) de l'instance de stockage correspond au nom du volume persistant qui a été automatiquement créé en même temps que la réservation de volume persistant.

    ibmcloud is vols
    

    Exemple de sortie

    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. A l'aide de l'ID du volume, répertoriez les détails de votre instance Block Storage for VPC afin de vous assurer que votre clé racine Key Protect est stockée dans l'instance de stockage. La clé racine se trouve dans la zone Encryption key de la sortie de votre interface de ligne de commande.

    ibmcloud is vol <volume_ID>
    

    Exemple de sortie

    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
    

Personnalisation des paramètres de stockage par défaut

Vous pouvez modifier certains paramètres de PVC par défaut à l'aide d'une classe de stockage personnalisée ou d'un secret Kubernetes pour créer Block Storage for VPC avec vos paramètres personnalisés.

Quel est l'avantage d'utiliser un secret et de spécifier mes paramètres dans une classe de stockage personnalisée?
En tant qu'administrateur de cluster, créez une classe de stockage personnalisée lorsque vous souhaitez que tous les PVC que vos utilisateurs de cluster créent pour être mis à disposition avec une configuration spécifique et que vous ne souhaitez pas permettre à vos utilisateurs de cluster de remplacer la configuration par défaut.
Toutefois, lorsque plusieurs configurations sont requises et que vous ne souhaitez pas créer de classe de stockage personnalisée pour chaque configuration PVC possible, vous pouvez créer une classe de stockage personnalisée avec les paramètres PVC par défaut et une référence à un secret Kubernetes générique. Si vos utilisateurs de cluster doivent remplacer les paramètres par défaut de votre classe de stockage personnalisée, ils peuvent le faire en créant un secret Kubernetes qui contient leurs paramètres personnalisés.

Lorsque vous souhaitez configurer le chiffrement pour votre instance Block Storage for VPC, vous pouvez également utiliser un secret Kubernetes si vous souhaitez coder le CRN de clé racine Key Protect en base64 au lieu de fournir la clé directement dans la classe de stockage personnalisée.

Modification de la classe de stockage par défaut

Avec la version, le 4.2 module complémentaire Block Storage for VPC de cluster définit la classe de stockage par défaut sur la ibmc-vpc-block-10iops-tier classe. Si vous disposez d'une classe de stockage par défaut autre que ibmc-vpc-block-10iops-tier et que vos PVC utilisent la classe de stockage par défaut, cela peut entraîner plusieurs classes de stockage par défaut qui peuvent entraîner des échecs de création de PVC. Pour utiliser une classe de stockage par défaut autre que ibmc-vpc-block-10iops-tier, vous pouvez mettre à jour addon-vpc-block-csi-driver-configmap pour remplacer IsStorageClassDefault par false.

La classe de stockage par défaut du module complémentaire de cluster Block Storage for VPC est la classe de stockage ibmc-vpc-block-10iops-tier.

  1. Éditez le addon-vpc-block-csi-driver-configmap

    kubectl edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. Remplacez le paramètre IsStorageClassDefault par false.

  3. Sauvegardez et quittez.

  4. Attendez 15 minutes et vérifiez la modification en obtenant les détails de la classe de stockage ibmc-vpc-block-10iops-tier.

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

Création de votre propre classe de stockage

Créez votre propre classe de stockage personnalisée avec les paramètres préférés pour votre instance Block Storage for VPC. En utilisant le profil SDP, vous pouvez spécifier la capacité et la limite maximale de débit.

Les profils de performance SSD (SDP) sont disponibles à Dallas, Francfort, Londres, Madrid, Osaka, São Paulo, Sydney, Tokyo, Toronto et Washington D.C. La création d'instantanés pour les profils de performances définis pour les SSD est disponible à Dallas, Francfort, Tokyo et Washington. D.C

Vous pouvez créer votre propre classe de stockage si vous le souhaitez :

  • définir une valeur IOPS personnalisée ;
  • configurer Block Storage for VPC avec un autre type de système de fichiers que ext4 ;
  • configurer le chiffrement ;
  • Mise en place d'une performance définie par le SSD.

Avant de commencer

  • Consultez la Référence des classes de stockage afin de déterminer le profile que vous voulez utiliser pour votre classe de stockage.

  • Vous pouvez également consulter les profils personnalisés si vous voulez spécifier une valeur IOPs personnalisée pour votre Block Storage for VPC.

  • Si vous souhaitez utiliser un profil de performance défini par le SSD (SDP), examinez la plage de capacité et les détails des IOP. Notez que lors de l'utilisation d'une performance définie par un SSD, la capacité du volume est déterminée par les IOP et le débit que vous spécifiez.

  • Vous pouvez utiliser une classe de stockage existante comme point de départ pour créer votre propre classe. Enregistrez les détails d'une classe de stockage existante à l'aide de la commande kubectl get sc <storageclass> -o yaml.

  • Pour maintenir les coûts bas, vous pouvez initialement provisionner un PVC avec une faible capacité, un IOPS minimum et un débit minimum en utilisant la classe de stockage ibmc-vpc-block-sdp, qui a un minimum de 3000 IOPS et 1000 Throughput (Mbps). Après le provisionnement, vous pouvez accéder au PVC et ajuster l'IOPS et le débit au fur et à mesure que les besoins sont mieux définis.

Pour créer une classe de stockage personnalisée :

  1. Créez un fichier de configuration de classe de stockage personnalisé au format suivant. Choisissez entre une classe de stockage de première et de deuxième génération.

    Exemple de première génération :

    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
    Entrez un nom pour votre classe de stockage.
    profile
    Saisissez le profil que vous avez sélectionné à l'étape précédente. Choisissez general-purpose, sdp, 5iops-tier, 10iops-tier, ou custom utilisez une valeur IOPs personnalisée. Pour connaître les tailles de stockage prises en charge pour un profil spécifique, voir Profil Tiered IOPS. Toute PVC qui utilise cette classe de stockage doit spécifier une valeur de taille comprise dans cette plage.
    csi.storage.k8s.io/fstype
    Dans les paramètres, entrez le système de fichiers pour votre instance Block Storage for VPC. Choisissez xfs, ext3 ou ext4. Si vous souhaitez modifier la propriété ou les autorisations de votre volume, vous devez spécifier csi.storage.k8s.io/fstype dans votre propre classe de stockage et votre PVC doit avoir ReadWriteOnce comme accessMode. Le pilote Block Storage for VPC utilise le pilote ReadWriteOnceWithFSType fsGroupPolicy. Pour plus d'informations, voir la documentation du pilote CSI.
    encrypted
    Dans les paramètres, entrez true pour créer une classe de stockage qui configure le chiffrement pour votre volume Block Storage for VPC. Si vous définissez cette option sur true, vous devez fournir la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser dans parameterencryptionKey. Pour plus d'informations sur le chiffrement de vos données, voir Configuration d'un chiffrement pour votre instance Block Storage for VPC.
    encryptionKey
    Si vous avez saisi true pour parameters.encrypted, saisissez la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser pour crypter votre volume Block Storage for VPC. Pour plus d'informations sur le chiffrement de vos données, voir Configuration d'un chiffrement pour votre instance Block Storage for VPC.
    zone
    Dans les paramètres, entrez la zone VPC dans laquelle vous souhaitez créer l'instance Block Storage for VPC. Prenez soin d'utiliser une zone à laquelle vos noeuds worker sont connectés. Pour répertorier les zones VPC utilisées par vos nœuds de travail, exécutez ibmcloud ks cluster get --cluster <cluster_name_or_ID> et consultez le champ Worker Zones (Zones de travail ) dans les résultats de l'interface CLI. Si vous ne spécifiez pas de zone, l'une des zones de noeud worker est automatiquement sélectionnée pour votre instance Block Storage for VPC.
    region
    La région du noeud worker où vous souhaitez connecter le stockage.
    tags
    Dans les paramètres, entrez une liste de balises séparées par des espaces à appliquer à votre instance Block Storage for VPC. Les étiquettes peuvent vous aider à trouver plus facilement des instances ou à regrouper vos instances en fonction de caractéristiques communes, telles que l'application ou l'environnement pour lesquels elles sont utilisées.
    iops
    Si vous avez saisi custom ou sdp pour profile, saisissez une valeur pour les IOP que vous voulez que Block Storage for VPC utilise. Reportez-vous au tableau des profils IOPS personnalisés de Block Storage for VPC pour la liste des plages d'IOPS prises en charge par taille de volume.
    throughput
    Entrez cette valeur si vous utilisez un profil sdp. Pour plus d'informations, voir les détails des IOP et du débit pour le profil SDP
    reclaimPolicy
    Entrez la politique de récupération pour votre classe de stockage. Si vous voulez conserver supprimer le volume persistant (PV), l'unité de stockage physique et vos données lorsque vous supprimez la PVC, entrez Retain. Si vous souhaitez supprimer le volume persistant (PV), l'unité de stockage physique et vos données lorsque vous retirez la PVC, entrez Delete.
    allowVolumeExpansion
    Entrez la règle d'extension de volume pour votre classe de stockage. Si vous souhaitez autoriser l'extension de volume, entrez true. Si vous ne souhaitez pas autoriser l'extension de volume, entrez false.
    volumeBindingMode
    Choisissez de retarder la création de l'instance Block Storage for VPC jusqu'à ce que le premier pod utilisant ce stockage soit prêt à être planifié. Pour retarder la création, entrez WaitForFirstConsumer. Pour créer l'instance en même temps que la réservation de volume persistant, entrez Immediate.

    Exemple de deuxième génération :

    Si vous provisionnez un PVC 9.6TB en utilisant la classe de stockage ibmc-vpc-block-5iops-tier de première génération, l'IOPS maximum est de 48 000 et le débit maximum est de 6144 Mbps. Cependant, avec la classe de stockage de deuxième génération ibmc-vpc-block-sdp-max-bandwidth, l'IOPS maximum est de 64 000 et le débit maximum est 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. Créez la classe de stockage personnalisée dans votre cluster.

    kubectl apply -f custom-storageclass.yaml
    
  3. Vérifiez que votre classe de stockage est disponible dans le cluster.

    kubectl get sc
    

    Exemple de sortie

    NAME                                    PROVISIONER            AGE
    <custom-storageclass>             vpc.block.csi.ibm.io   4m26s
    
  4. Suivez les étapes de la rubrique Ajout d'une instance Block Storage for VPC à vos applications pour créer une PVC avec votre classe de stockage personnalisée afin de mettre à disposition Block Storage for VPC. Ensuite, montez ce stockage sur un modèle d'application.

  5. Facultatif : Vérifiez votre type de système de fichiers Block Storage for VPC.

Vérification de votre système de fichiers Block Storage for VPC

Vous pouvez créer une classe de stockage personnalisée pour mettre à disposition Block Storage for VPC avec un autre système de fichiers, tel que xfs ou ext3. Par défaut, toutes les instances Block Storage for VPC sont mises à disposition avec un système de fichiers ext4.

  1. Suivez la procédure de création d'une classe de stockage personnalisée avec le système de fichiers que vous souhaitez utiliser.

  2. Suivez les étapes 4 à 9 de la rubrique Ajout d'une instance Block Storage for VPC à vos applications pour créer une PVC avec votre classe de stockage personnalisée afin de mettre à disposition une instance Block Storage for VPC avec un autre système de fichiers. Ensuite, montez ce stockage sur un pod d'application.

    Le montage du stockage par votre application et le passage de celle-ci à l'état En cours d'exécution peuvent prendre quelques minutes.

  3. Vérifiez que votre stockage est monté avec le système de fichiers approprié. Répertoriez les pods dans votre cluster et notez le nom du pod que vous avez utilisé pour monter votre stockage.

    kubectl get pods
    
  4. Connectez-vous à votre pod.

    kubectl exec <pod_name> -it bash
    
  5. Répertoriez les chemins de montage au sein de votre pod.

    mount | grep /dev/xvdg
    

    Exemple de sortie pour xfs.

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

    exit
    

mise à jour VolumeAttachLimit

Dans les versions 5.2 et ultérieures du module complémentaire de cluster Block Storage for VPC, vous pouvez éditer le nombre maximal de volumes pouvant être connectés à chaque noeud en éditant la mappe de configuration. La valeur par défaut est 12.

Votre compte doit être approuvé pour utiliser cette fonction.

  1. Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.

  2. Editez la ressource configmap. Remplacez VALUE par la limite de connexion de volume que vous souhaitez définir.

    kubectl patch configmap/addon-vpc-block-csi-driver-configmap \       
    -n kube-system \
    --type merge \
    -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
    
  3. Attendez que les pods ibm-vpc-block-csi-node de l'espace de nom kube-system soient redémarrés. Vérifiez que les pods ont redémarré.

    kubectl get pods -n kube-system -w| grep block-csi
    
  4. Vous pouvez désormais connecter des volumes à vos noeuds worker à l'aide de la mise à disposition dynamique ou en créant manuellement les pièces jointes. Pour plus d'informations, voir Ajout de Block Storage for VPC à vos applications ou Utilisation d'une instance Block Storage for VPC existante.

Stockage de vos paramètres PVC personnalisés dans un secret Kubernetes

Spécifiez vos paramètres PVC dans un secret Kubernetes et référencez ce secret dans une classe de stockage personnalisée. Ensuite, utilisez la classe de stockage personnalisée pour créer une PVC avec les paramètres personnalisés que vous avez définis dans votre secret.

Quelles sont les options dont je dispose pour utiliser le secret Kubernetes?
En tant qu'administrateur de cluster, vous pouvez choisir si vous souhaitez autoriser chaque utilisateur de cluster à remplacer les paramètres par défaut d'une classe de stockage, ou si vous souhaitez créer un secret que tous les utilisateurs dans votre cluster doivent utiliser et qui applique le codage base64 pour votre CRN de clé racine Key Protect.
Tous les utilisateurs peuvent personnaliser les paramètres par défaut
Dans ce scénario, l'administrateur de cluster crée une classe de stockage personnalisée avec les paramètres PVC par défaut et une référence à un secret Kubernetes générique. Les utilisateurs de cluster peuvent remplacer les paramètres par défaut de la classe de stockage en créant un secret Kubernetes avec les paramètres PVC de leur choix. Pour que les paramètres personnalisés définis dans le secret soient appliqués à votre instance Block Storage for VPC, vous devez créer une PVC portant le même nom que votre secret Kubernetes.
Appliquer le codage en base64 pour la clé racine Key Protect
Dans ce scénario, vous créez une classe de stockage personnalisée avec les paramètres PVC par défaut et une référence à un secret Kubernetes statique qui remplace ou améliore les paramètres par défaut de la classe de stockage personnalisée. Vos utilisateurs de cluster ne peuvent pas remplacer les paramètres par défaut en créant leur propre secret Kubernetes. A la place, vos utilisateurs de cluster doivent mettre à disposition Block Storage for VPC avec la configuration que vous avez choisie dans votre classe de stockage personnalisée et votre secret. Contrairement à la création d'une classe de stockage personnalisée uniquement, l'utilisation de cette méthode vous permet d'imposer le codage en base64 pour le CRN de clé racine de votre instance de service Key Protect lorsque vous souhaitez chiffrer les données dans votre instance Block Storage for VPC.
Que dois-je savoir avant d'utiliser le secret Kubernetes pour mes paramètres PVC?
Certains paramètres PVC, tels que reclaimPolicy, fstype ou volumeBindingMode, ne peuvent pas être définis dans le secret Kubernetes et doivent l'être dans la classe de stockage. En tant qu'administrateur du cluster, si vous souhaitez permettre à vos utilisateurs de cluster de remplacer vos paramètres par défaut, vous devez prendre soin de configurer suffisamment de classes de stockage personnalisées qui font référence à un secret Kubernetes générique afin que vos utilisateurs puissent mettre à disposition Block Storage for VPC avec différents paramètres reclaimPolicy, fstype et volumeBindingMode.

Procédure visant à autoriser chaque utilisateur à personnaliser les paramètres PVC par défaut

  1. En tant qu'administrateur de cluster, suivez la procédure de création d'une classe de stockage personnalisée. Dans le fichier YAML de classe de stockage personnalisée, référencez le secret Kubernetes dans la section metadata.parameters comme indiqué ci-après. Prenez soin d'ajouter le code tel qu'il est et de ne pas modifier les noms de variable.

    csi.storage.k8s.io/provisioner-secret-name: ${pvc.name}
    csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
    
  2. En tant qu'utilisateur du cluster, créez un secret Kubernetes qui personnalise les paramètres par défaut de la classe de stockage.

    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
    Entrez un nom pour votre secret Kubernetes.
    namespace
    Entrez l'espace de noms dans lequel vous désirez créer votre secret. Pour que le secret puisse être référencé dans votre PVC, celle-ci doit être créée dans le même espace de noms.
    iops
    Dans la section string.data, entrez la plage d'IOPS que vous souhaitez autoriser pour votre instance Block Storage for VPC. La plage que vous entrez doit correspondre au niveau Block Storage for VPC que vous prévoyez d'utiliser.
    zone
    Dans la section string.data, entrez la zone VPC dans laquelle vous souhaitez créer l'instance Block Storage for VPC. Prenez soin d'utiliser une zone à laquelle vos noeuds worker sont connectés. Pour répertorier les zones VPC utilisées par vos nœuds de travail, exécutez ibmcloud ks cluster get --cluster <cluster_name_or_ID> et consultez le champ Worker Zones (Zones de travail ) dans les résultats de l'interface CLI. Si vous ne spécifiez pas de zone, l'une des zones de noeud worker est automatiquement sélectionnée pour votre instance Block Storage for VPC.
    tags
    Dans la section string.data, entrez une liste de balises séparées par des virgules à utiliser lorsque votre PVC est créée. Les étiquettes peuvent vous aider à retrouver votre instance de stockage après sa création.
    resourceGroup
    Dans la section des données de la chaîne, saisissez l'ID du groupe de ressources auquel vous souhaitez que votre instance Block Storage for VPC ait accès. Si vous n'entrez pas de groupe de ressources, l'instance est automatiquement autorisée à accéder aux ressources du groupe de ressources auquel votre cluster appartient.
    encrypted
    Dans la section des données de la chaîne, entrez true pour créer un secret qui configure le cryptage des volumes Block Storage for VPC. Si vous définissez cette option sur true, vous devez fournir la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser dans parameters.encryptionKey. Pour plus d'informations sur le chiffrement de vos données, voir Configuration du chiffrement pour votre instance Block Storage for VPC.
    encryptionKey
    Dans la section des données, si vous avez saisi true pour parameters.encrypted, saisissez la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser pour crypter vos volumes Block Storage for VPC. Pour utiliser votre CRN de clé racine dans un secret, vous devez d'abord le convertir en base64 en exécutant echo -n "<root_key_CRN>" | base64. Pour plus d'informations sur le chiffrement de vos données, voir Configuration d'un chiffrement pour votre instance Block Storage for VPC.
  3. Créez votre secret Kubernetes.

    kubectl apply -f secret.yaml
    
  4. Suivez les étapes de la rubrique Ajout d'une instance Block Storage for VPC à vos applications pour créer une PVC avec vos paramètres personnalisés. Prenez soin de créer la PVC avec la classe de stockage personnalisée que l'administrateur de cluster a créée et d'utiliser pour votre PVC le même nom que celui que vous avez affecté à votre secret. Le fait d'utiliser le même nom pour le secret et la PVC déclenche l'application des paramètres du secret dans votre PVC par le fournisseur de stockage.

Mise en application du codage en base64 pour le CRN de clé racine Key Protect

  1. En tant qu'administrateur du cluster, créez un secret Kubernetes qui inclut la valeur codée en base64 pour votre CRN de clé racine Key Protect. Pour extraire le CRN de clé racine, voir Configuration d'un chiffrement pour votre instance 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
    Entrez un nom pour votre secret Kubernetes.
    namespace
    Entrez l'espace de noms dans lequel vous désirez créer votre secret. Pour que le secret puisse être référencé dans votre PVC, celle-ci doit être créée dans le même espace de noms.
    encrypted
    Dans la section des données de la chaîne, entrez true pour créer un secret qui configure le cryptage des volumes Block Storage for VPC. Si vous définissez cette option sur true, vous devez fournir la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser dans parameters.encryptionKey. Pour plus d'informations sur le chiffrement de vos données, voir Configuration du chiffrement pour votre instance Block Storage for VPC.
    encryptionKey
    Dans la section des données, si vous avez saisi true pour parameters.encrypted, saisissez la clé racine CRN de votre instance de service Key Protect que vous souhaitez utiliser pour crypter votre volume Block Storage for VPC. Pour utiliser votre CRN de clé racine dans un secret, vous devez d'abord le convertir en base 64 en exécutant echo -n "<root_key_CRN>" | base64. Pour plus d'informations sur le chiffrement de vos données, voir Configuration d'un chiffrement pour votre instance Block Storage for VPC.
  2. Vérifiez le secret Kubernetes.

    kubectl apply -f secret.yaml
    
  3. Suivez la procédure de création d'une classe de stockage personnalisée. Dans le fichier YAML de classe de stockage personnalisée, référencez le secret Kubernetes dans la section metadata.parameters comme indiqué ci-après. Prenez soin d'entrer le nom du secret Kubernetes que vous avez créé précédemment et l'espace de noms dans lequel vous avez créé le secret.

    csi.storage.k8s.io/provisioner-secret-name: <secret_name>
    csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
    
  4. En tant qu'utilisateur de cluster, suivez les étapes décrites dans la rubrique Ajout d'une instance Block Storage for VPC à vos applications pour créer une PVC à partir de votre classe de stockage personnalisée.

Configuration de l'extension de volume

Pour fournir des volumes qui prennent en charge l'extension, vous devez utiliser la classe de stockage ayant allowVolumeExpansion définie sur true.

Vous pouvez étendre uniquement des volumes montés par un pod d'application.

Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.

  1. Si vous n'utilisez pas la version 4.2 ou une version ultérieure du module complémentaire, mettez à jour le module complémentaire Block Storage for VPC cluster dans votre cluster.

  2. Création d'un PVC qui utilise une classe de stockage qui prend en charge l'extension de volume.

  3. Déployez une application qui utilise votre réservation de volume persistant (PVC). Lorsque vous créez votre application, notez la valeur spécifiée pourmountPath.

  4. Une fois la PVC montée par un pod d'application, vous pouvez étendre le volume en modifiant la valeur de la zone spec.resources.requests.storage dans votre PVC. Pour étendre le volume, modifiez la PVC et augmentez la valeur indiquée dans la zone spec.resources.requests.storage.

    kubectl edit pvc <pvc-name>
    

    Exemple

    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  5. Enregistrez et fermez le PVC.

  6. Facultatif : vérifiez que le volume est étendu. Obtenez les détails de votre PVC et notez le nom du volume persistant (PV).

    kubectl get pvc <pvc-name>
    
  7. Décrivez votre PV et notez l'ID de volume.

    kubectl describe PV
    
  8. Obtenez les détails du volume Block Storage for VPC et vérifiez la capacité.

    ibmcloud is vol <volume-ID>
    

Extension manuelle des volumes avant la version complémentaire 4.2

Effectuez les étapes suivantes pour étendre manuellement vos volumes Block Storage for VPC existants qui ont été créés avant la version 4.2 du module complémentaire.

Vous pouvez étendre uniquement des volumes montés par un pod d'application.

  1. Obtenez les détails de votre application et notez le nom de la PVC ainsi que le chemin de montage (mountPath).

    kubectl get pod <pod-name> -n <pod-namespace> -o yaml
    
  2. Obtenez les détails de votre PVC et notez le nom du volume persistant (PV).

    kubectl get pvc
    
  3. Décrivez votre PV et obtenez l'ID volume (volumeId).

    kubectl describe pv `pv-name` | grep volumeId
    

    Exemple de sortie pour l'ID volume r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.

    volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
    
  4. Redimensionnez le volume à l'aide d'une demande PATCH. L'exemple suivant redimensionne un volume à 250 Gio.

    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>
    Votre jeton IAM. Pour extraire votre jeton IAM, exécutez la commande ibmcloud iam oauth-tokens.
    <region>
    La région dans votre cluster, par exemple us-south.
    <volumeId>
    L'ID du volume que vous avez extrait précédemment. Par exemple,r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.
    <capacity>
    Capacité accrue dans Gio, par exemple250.
  5. Connectez-vous à votre pod d'application.

    kubectl exec <pod-name> -it -- bash
    
  6. Exécutez la commande suivante pour utiliser les fichiers binaires de l'hôte.

    chroot /host
    
  7. Extrayez les détails du système de fichiers et notez le chemin de Filesystem à mettre à jour. Vous pouvez également grep pour le chemin de montage tel que spécifié dans votre pod d'application. df -h | grep <mount-path>.

    df -h
    

    Exemple de sortie

    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. Redimensionnez le système de fichiers.

    sudo resize2fs <filesystem-path>
    

    Exemple de commande

    sudo resize2fs /dev/vdg
    
  9. Vérifiez que le système de fichiers est redimensionné.

    df -h
    

Sauvegarde et restauration de données

Les données sur Block Storage for VPC sont sécurisées dans les zones d'erreur redondantes de votre région. Pour sauvegarder manuellement vos données, utilisez la commande Kubernetes kubectl cp.

Vous pouvez utiliser la commande kubectl cp pour copier des fichiers et des répertoires vers et depuis des pods ou des conteneurs spécifiques dans votre cluster

Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.

Pour sauvegarder ou restaurer des données, choisissez l'une des options suivantes :

Copiez les données de votre machine locale vers un pod de votre cluster.

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

Copiez les données d'un pod de votre cluster vers votre machine locale.

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

Copiez les données de votre machine locale vers un conteneur spécifique qui s'exécute dans un pod de votre cluster.

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

Description de la capacité de demande de volume

Le pilote VPC Block CSI calcule la capacité du volume à l'aide de la formule suivante.

  • Si la valeur est fournie dans Gi: rBytes(requestedBytes) = X * 1024^3

  • Si la valeur est fournie dans G: rBytes(requestedBytes) = X * 10^9

La valeur demandée est égale à (((rBytes+ GiB - 1) / GiB) * GiB) / GiB.

Exemple :

  • Si la valeur 20Gi est fournie, en appliquant la formule ci-dessus, le volume créé est 20GB.
  • Si la valeur 20G est fournie, le volume créé est 19GB.

Parfois, la capacité du volume créé est inférieure à la valeur demandée. Notez que la facturation s'applique au volume créé, et non au volume demandé.

Attribution de profils de confiance au stockage en bloc

En raison d'un problème connu, les mises à jour des balises utilisateur sur les Block Storage volumes VPC peuvent ne pas s'afficher lorsqu'un profil de confiance est implémenté. Ce problème n'est pas présent dans les clusters qui n'utilisent pas de profils de confiance.

Vous pouvez utiliser des profils de confiance pour accorder à différentes identités IBM Cloud l'accès aux ressources de votre compte, y compris à vos solutions de stockage. Les profils de confiance centralisent le contrôle d'accès, éliminent le besoin de clés API à longue durée de vie et vous permettent de limiter les autorisations au strict minimum requis pour une tâche spécifique. Pour plus d'informations, voir Configuration d'un profil de confiance pour les composants de stockage.