Configuration de Block Storage for Classic

IBM Cloud Block Storage for Classic est une solution de stockage iSCSI persistant hautes performances que vous pouvez ajouter à vos applications en utilisant des volumes persistants (PV) Kubernetes. 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 savoir si IBM Cloud Block Storage for Classic est l'option de stockage qui vous convient, voir Choisir une solution de stockage.

Tenez compte des exigences suivantes lorsque vous utilisez le plug-in IBM Cloud Block Storage for Classic.

Le plug-in IBM Cloud Block Storage for Classic est disponible uniquement pour les clusters IBM Cloud Kubernetes Service standard mis à disposition sur une infrastructure classique. Si vous disposez d'un cluster VPC, voir Configuration de Block Storage for Classic.

Si votre cluster ne peut pas accéder au réseau public, tel qu'un cluster privé derrière un pare-feu ou un cluster avec uniquement le nœud final de service de cloud privé activé, vérifiez que vous avez installé le plug-in IBM Cloud Block Storage for Classic version 1.3.0 ou ultérieure pour vous connecter à votre instance Block Storage for Classic sur le réseau privé.

Les instances Block Storage for Classic sont spécifiques à une région multizone d'un seul campus. Si vous disposez d'un cluster multizone, tenez compte des options de stockage persistant dans les zones multiples.

Infrastructure classique

Les étapes de cette page s'appliquent uniquement aux clusters classiques. Sur les clusters VPC, le module complémentaire « Block Storage for VPC » est installé par défaut. Pour plus d'informations, voir Configuration Configuration Block Storage for VPC.

Démarrage rapide pour IBM Cloud Block Storage for Classic

24Gi Dans ce guide de démarrage rapide, vous allez créer un volume « Block Storage for Classic » de niveau Silver dans votre cluster en créant un PVC afin de provisionner dynamiquement ce volume. Ensuite, vous créez un déploiement d'application qui monte votre PVC.

Vous utilisez Block Storage for Classic dans votre cluster pour la première fois ? Revenez ici après avoir installé le plug-in Block Storage for Classic.

  1. Sauvegardez la configuration de réclamation de volume persistant (PVC) suivante dans un fichier appelé pvc.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: block-storage-pvc
      labels:
        billingType: "hourly"
        region: us-east
        zone: wdc07
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 45Gi
      storageClassName: ibmc-block-silver
    
  2. Appliquez la configuration à votre cluster pour créer le circuit virtuel permanent (PVC).

    kubectl apply -f pvc.yaml
    
  3. Attendez que votre circuit virtuel permanent soit à l'état Bound. Vous pouvez vérifier l'état en exécutant la commande suivante.

    kubectl get pvc
    
  4. Une fois que le circuit virtuel permanent (PVC) Bound, créez un déploiement d'application qui utilise votre PVC. Sauvegardez la configuration de déploiement suivante dans un fichier appelé deployment.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
      labels:
        app: my-app
    spec:
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - image: nginx # Use the nginx image, or your own containerized app image.
            name: my-container
            command: ["/bin/sh"]
            args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"] # This app prints the timestamp, then sleeps.
            workingDir: /home
            imagePullPolicy: Always
            ports:
              - containerPort: 80
            volumeMounts:
            - name: my-volume
              mountPath: /mount-path
          volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: block-storage-pvc
    
  5. Créez le déploiement dans votre cluster.

    kubectl apply -f deployment.yaml
    
  6. Attendez que le déploiement soit Ready. Vérifiez l'état du déploiement en exécutant la commande suivante.

    kubectl get deployments
    

    Exemple de sortie

    NAME            READY   UP-TO-DATE   AVAILABLE   AGE
    my-deployment   1/1     1            1           3m19s
    
  7. Listez vos pods et vérifiez que le pod my-deployment est en cours d'exécution.

    kubectl get pods
    

    Exemple de sortie

    NAME                            READY   STATUS    RESTARTS   AGE
    my-deployment-ccdf87dfb-vzn95   1/1     Running   0          5m27s
    
  8. Récupérez les journaux des pods pour vérifier que l'horodatage soit écrit.

    kubectl logs
    

    Exemple de sortie

    2022-01-21 14:18:59
    

Vous avez créé un déploiement qui utilise Block Storage for Classic! Pour plus d'informations, voir les liens suivants.

Installation du plug-in IBM Cloud Block Storage for Classic dans votre cluster

Installez le plug-in IBM Cloud Block Storage for Classic avec une charte Helm pour configurer des classes de stockage prédéfinies pour Block Storage for Classic. Vous pouvez utiliser ces classes de stockage pour créer une réservation de volume persistant afin de mettre à disposition Block Storage for Classic pour vos applications.

Les clusters classiques qui utilisent IBM Cloud Kubernetes Service version 1.24 ou ultérieure ne doivent pas installer le plug-in IBM Cloud Block Storage for Classic. Le pilote et le plug-in sont installés sur ces clusters par défaut.

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

  1. Vérifiez que votre noeud worker applique le dernier correctif pour votre version secondaire afin d'exécuter votre noeud worker avec les paramètres de sécurité les plus récents. La version de correctif garantit également le renouvellement du mot de passe root sur le noeud worker.

    Si vous n'avez pas appliqué des mises à jour ni rechargé votre noeud worker au cours des 90 derniers jours, votre mot de passe root sur le noeud worker expire et l'installation du plug-in de stockage est susceptible d'échouer.

    1. Répertoriez la version de correctif en cours pour vos noeuds worker.
        ibmcloud ks worker ls --cluster CLUSTER_NAME_OR_ID
        ```
        Exemple de sortie
        ```sh {: screen}
        OK
        ID                                                  Public IP        Private IP     Machine Type           State    Status   Zone    Version
        kube-dal10-crb1a23b456789ac1b20b2nc1e12b345ab-w26   169.xx.xxx.xxx    10.xxx.xx.xxx   b3c.4x16.encrypted     normal   Ready    dal10   1.35_1523*
        ```
        Si votre noeud worker n'applique pas la dernière version de correctif, un astérisque (`*`) apparaît dans la colonne **Version** de votre sortie d'interface de ligne de commande.
    
    2. Passez en revue les [informations de version deKubernetes](/docs/containers?topic=containers-cs_versions) pour trouver les dernières modifications.
    
    3. Appliquez la dernière version de correctif en rechargeant votre noeud worker. Suivez les instructions fournies dans la [commande « ibmcloud ks worker reload](/docs/containers?topic=containers-kubernetes-service-cli#worker-reload-cli) » pour replanifier en toute sécurité les pods en cours d'exécution sur votre nœud de travail avant de recharger ce dernier. Notez que durant le rechargement, la machine de votre noeud worker est mise à jour avec l'image la plus récente et les données sont supprimées si elles ne sont pas [stockées hors du noeud worker](/docs/containers?topic=containers-storage-plan).
    
    
  2. Suivez les instructions pour installer le client Helm version 3 sur votre machine locale.

  3. Ajoutez le référentiel de la charte Helm IBM Cloud au cluster dans lequel vous souhaitez utiliser le plug-in IBM Cloud Block Storage for Classic.

    Si vous avez activé VRF et des noeuds finaux de service dans votre compte IBM Cloud, vous pouvez utiliser le référentiel Helm d'IBM Cloud privé pour conserver votre trafic d'extraction d'image sur le réseau privé. Si vous ne pouvez pas activer VRF ou les noeuds finaux de service dans votre compte, utilisez le domaine de registre public : helm repo add iks-charts https://icr.io/helm/iks-charts.

    helm repo add iks-charts https://icr.io/helm/iks-charts
    
  4. Mettez à jour le référentiel Helm pour extraire la dernière version de toutes les chartes Helm figurant dans ce référentiel.

    helm repo update
    
  5. Installez le plug-in IBM Cloud Block Storage for Classic et donnez un nom à votre installation, par exemple, block-storage-plugin. Lors de l'installation de ce plug-in, des classes de stockage par blocs prédéfinies sont ajoutées dans votre cluster.

    helm install <name> iks-charts/ibmcloud-block-storage-plugin -n <namespace>
    

    Exemple de sortie

    NAME:   <name>
    LAST DEPLOYED: Wed Apr 18 10:02:55 2018
    NAMESPACE: default
    STATUS: DEPLOYED
    RESOURCES:
    ==> v1beta1/DaemonSet
    NAME                           DESIRED  CURRENT  READY  UP-TO-DATE  AVAILABLE  NODE SELECTOR  AGE
    ibmcloud-block-storage-driver  0        0        0      0           0          <none>         0s
    ==> v1beta1/Deployment
    NAME                           DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE
    ibmcloud-block-storage-plugin  1        0        0           0          0s
    ==> v1/StorageClass
    NAME                      PROVISIONER        AGE
    ibmc-block-bronze         ibm.io/ibmc-block  0s
    ibmc-block-custom         ibm.io/ibmc-block  0s
    ibmc-block-gold           ibm.io/ibmc-block  0s
    ibmc-block-retain-bronze  ibm.io/ibmc-block  0s
    ibmc-block-retain-custom  ibm.io/ibmc-block  0s
    ibmc-block-retain-gold    ibm.io/ibmc-block  0s
    ibmc-block-retain-silver  ibm.io/ibmc-block  0s
    ibmc-block-silver         ibm.io/ibmc-block  0s
    ==> v1/ServiceAccount
    NAME                           SECRETS  AGE
    ibmcloud-block-storage-plugin  1        0s
    ==> v1beta1/ClusterRole
    NAME                           AGE
    ibmcloud-block-storage-plugin  0s
    ==> v1beta1/ClusterRoleBinding
    NAME                           AGE
    ibmcloud-block-storage-plugin  0s
    NOTES:
    Thank you for installing: ibmcloud-block-storage-plugin.   Your release is named: <name>
    
  6. Vérification de l'installation.

    kubectl get pod -n <namespace> | grep block
    

    Exemple de sortie

    ibmcloud-block-storage-driver-kh4mt                              1/1       Running   0          27d       10.118.98.19   10.118.98.19
    ibmcloud-block-storage-plugin-58c5f9dc86-pbl4t                   1/1       Running   0          14d       172.21.0.204   10.118.98.19
    

    L'installation réussit lorsque vous voyez un pod ibmcloud-block-storage-plugin et un ou plusieurs pods ibmcloud-block-storage-driver. Le nombre de pods ibmcloud-block-storage-driver est égal au nombre de noeuds worker dans votre cluster. Tous les pods doivent être à l'état Running.

  7. Vérifiez que les classes de stockage pour Block Storage for Classic ont été ajoutées à votre cluster.

    kubectl get sc | grep block
    

    Exemple de sortie

    ibmc-block-bronze                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-custom                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-gold                        ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-retain-bronze               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-custom               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-gold                 ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-silver               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-silver                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    
  8. Répétez ces étapes pour chaque cluster sur lequel vous souhaitez fournir du stockage par blocs.

Vous pouvez maintenant passer à la création d'une réservation de volume persistant (PVC) pour mettre à disposition du stockage par blocs pour votre application.

Mise à jour du plug-in IBM Cloud Block Storage

Vous pouvez mettre à niveau le plug-in IBM Cloud Block Storage existant à la version la plus récente.

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

  1. Mettez à jour le référentiel Helm pour extraire la dernière version de toutes les chartes Helm figurant dans ce référentiel.

    helm repo update
    
  2. Facultatif : téléchargez la charte Helm la plus récente sur votre machine locale. Ensuite, extrayez le package et consultez le fichier release.md pour trouver les informations relatives à la dernière édition.

    helm pull iks-charts/ibmcloud-block-storage-plugin --untar
    
  3. Recherchez le nom d'édition et l'espace de noms de la charte Helm de stockage par blocs que vous avez installée dans votre cluster.

    helm ls -A
    

    Exemple de sortie

    NAME            NAMESPACE   REVISION    UPDATED                             STATUS      CHART                                   APP VERSION
    block-plugin    default     1           2022-01-21 09:02:46.11622 -0500 EST deployed        bmcloud-block-storage-plugin-v2.1.5
    
  4. Mettez à niveau le plug-in IBM Cloud Block Storage à la version la plus récente. Incluez le nom de l'édition et l'espace de nom que vous avez extrait précédemment.

    helm upgrade RELEASE-NAME iks-charts/ibmcloud-block-storage-plugin -n NAMESPACE
    
  5. Facultatif : lorsque vous mettez à jour le plug-in, la classe de stockage default n'est pas définie. Pour définir la classe de stockage par défaut par une classe de stockage de votre choix, exécutez la commande suivante.

    kubectl patch storageclass STORAGECLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    

Retrait du plug-in IBM Cloud Block Storage

Si vous ne souhaitez pas fournir et utiliser IBM Cloud Block Storage dans votre cluster, vous pouvez désinstaller le graphique Helm.

Le retrait du plug-in ne retire pas les réservations de volume persistant (PVC), les volumes persistants (PV) ou les données. Lorsque vous retirez le plug-in, tous les pods associés et les ensembles de démons sont retirés de votre cluster. Vous ne pouvez pas fournir de nouvelles unités de stockage de blocs pour votre cluster ou utiliser des PVC et des PV de stockage de blocs existants après avoir supprimé le plug-in.

Avant de commencer :

Pour supprimer le plug-in :

  1. Recherchez le nom d'édition et l'espace de noms de la charte Helm de stockage par blocs que vous avez installée dans votre cluster.

    helm ls -A
    

    Exemple de sortie

    NAME            NAMESPACE   REVISION    UPDATED                             STATUS   CHART                                  APP VERSION
    block-plugin    default     1           2022-01-21 09:02:46.11622 -0500 EST deployed    ibmcloud-block-storage-plugin-v2.1.5
    
  2. Supprimez le plug-in IBM Cloud Block Storage.

    helm uninstall NAME -n kube-system
    
  3. Vérifiez que les pods de stockage par blocs sont retirés.

    kubectl get pods -n kube-system | grep block
    

    Le retrait des pods a abouti lorsqu'aucun pod n'est affiché dans la sortie de votre interface de ligne de commande.

  4. Vérifiez que les classes de stockage par blocs sont retirées. Le retrait des classes de stockage a abouti lorsqu'aucune classe de stockage n'est affichée dans la sortie de votre interface de ligne de commande.

    kubectl get sc | grep block
    

Détermination de la configuration de stockage par blocs

IBM Cloud Kubernetes Service fournit des classes de stockage prédéfinies pour le stockage par blocs que vous pouvez utiliser pour mettre à disposition du stockage par blocs avec une configuration spécifique.

Toutes les classes de stockage indiquent le type de stockage par blocs à mettre à disposition, y compris la taille disponible, les opérations d'entrée-sortie par seconde (IOPS), le système de fichiers, ainsi que la règle de conservation.

Choisissez votre configuration de stockage avec précaution afin de disposer d'une capacité suffisante pour stocker vos données. Une fois que vous avez utilisé un type de stockage spécifique à l'aide d'une classe de stockage, vous ne pouvez pas modifier le type ou la règle de conservation de l'unité de stockage. Vous pouvez toutefois modifier la taille et le nombre d'IOPS si vous souhaitez augmenter la capacité de stockage ou les performances. Pour modifier le type et la politique de conservation de votre espace de stockage, vous devez créer une nouvelle instance de stockage et copier les données de l'ancienne instance vers la nouvelle.

  1. Répertoriez les classes de stockage disponibles dans IBM Cloud® Kubernetes Service.

    kubectl get sc | grep block
    

    Exemple de sortie

    ibmc-block-bronze                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-custom                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-gold                        ibm.io/ibmc-block   Delete          Immediate           true                   148m
    ibmc-block-retain-bronze               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-custom               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-gold                 ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-retain-silver               ibm.io/ibmc-block   Retain          Immediate           true                   148m
    ibmc-block-silver                      ibm.io/ibmc-block   Delete          Immediate           true                   148m
    
  2. Examinez la configuration d'une classe de stockage.

    kubectl describe storageclass STORAGECLASS
    

    Pour plus d'informations sur chaque classe de stockage, voir Référence des classes de stockage. Si vous ne trouvez pas ce que vous recherchez, pensez à créer votre propre classe de stockage personnalisée. Pour commencer, consultez les exemples de classes de stockage personnalisées.

  3. Sélectionnez le type de stockage par blocs que vous désirez mettre à disposition.

    • Classes de stockage Bronze, silver et Gold : ces classes de stockage mettent à disposition du stockage Endurance. Le stockage Endurance vous permet de choisir la taille de stockage en gigaoctets à des niveaux d'opérations d'entrée-sortie par seconde prédéfinis.
    • Classe de stockage personnalisée : cette classe de stockage met à disposition du stockage Performance. Avec le stockage Performance, vous disposez d'un contrôle accru sur la taille de stockage et les opérations d'entrée-sortie par seconde.
  4. Choisissez la taille et le nombre d'IOPS de votre stockage par blocs. La taille et le nombre d'IOPS définissent le nombre total d'IOPS (opérations d'entrée-sortie par seconde) qui sert d'indicateur pour mesurer la rapidité de votre stockage. Plus votre stockage comporte d'IOPS, plus il traite rapidement les opérations de lecture/écriture.

    • Classes de stockage Bronze, Silver et Gold : ces classes de stockage sont fournies avec un nombre fixe d'IOPS par gigaoctet et sont mises à disposition sur des disques durs SSD. Le nombre total d'IOPS dépend de la taille de stockage que vous choisissez. Vous pouvez sélectionner tout nombre entier représentant la taille en gigaoctets dans la plage de taille autorisée, par exemple 20 Gi, 256 Gi ou 11854 Gi. Pour déterminer le nombre total d'IOPS, vous devez multiplier les IOPS par la taille sélectionnée. Par exemple, si vous sélectionnez la taille de stockage 1000Gi dans la classe de stockage Silver fournie avec 4 IOPS par Go, vous disposerez d'un stockage avec au total 4000 IOPS.
    Tableau des plages de tailles de classe de stockage et nombre d'opérations d'entrée-sortie par seconde (IOPS) par gigaoctet
    Classe de stockage IOPS par gigaoctet Plage de tailles en gigaoctets
    Bronze 2 IOPS/Go 20 - 12000 Gi
    Silver 4 IOPS/Go 20 - 12000 Gi
    Gold 10 IOPS/Go 20 - 4000 Gi
    • Classe de stockage personnalisée : lorsque vous choisissez cette classe de stockage, vous disposez d'un contrôle accru sur la taille et les IOPS que vous souhaitez. Pour la taille, vous pouvez sélectionner un nombre entier de gigaoctets dans la plage de taille autorisée. La taille que vous choisissez détermine la plage d'IOPS dont vous pourrez bénéficier. Vous pouvez choisir une IOPS qui soit un multiple de 100 dans la plage spécifiée. Le nombre d'IOPS que vous choisissez est statique et ne s'adapte pas à la taille du stockage. Par exemple, si vous choisissez 40Gi avec 100 IOPS, le nombre total d'IOPS restera 100. Le rapport IOPS/gigaoctet détermine le type de disque dur mis à votre disposition. Par exemple, si vous utilisez 500Gi à 100 IOPS, votre rapport IOPS sur gigabyte est de 0,2. Un stockage avec un rapport inférieur ou égal à 0,3 est fourni sur des disques durs SATA. Si votre rapport est supérieur à 0,3, votre stockage est fourni sur des disques durs SSD.
    Table class size ranges and IOPS
    Plage de tailles en gigaoctets Plage d'IOPS en multiples de 100
    20 - 39 Gi 100 - 1000 IOPS
    40 - 79 Gi 100 - 2000 IOPS
    80 - 99 Gi 100 - 4000 IOPS
    100 - 499 Gi 100 - 6000 IOPS
    500 - 999 Gi 100 - 10000 IOPS
    1000 - 1999 Gi 100 - 20000 IOPS
    2000 - 2999 Gi 200 - 40000 IOPS
    3000 - 3999 Gi 200 - 48000 IOPS
    4000 - 7999 Gi 300 - 48000 IOPS
    8000 - 9999 Gi 500 - 48000 IOPS
    10000 - 12000 Gi 1000 - 48000 IOPS
  5. 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 d'infrastructure IBM Cloud, ainsi que vos données existent toujours. Pour récupérer le stockage et l'utiliser à nouveau dans votre cluster, vous devez supprimer le volume persistant et suivre les étapes pour utiliser du stockage par blocs existant.
    • Si vous souhaitez que le volume persistant, les données et votre unité physique de stockage par blocs soient supprimés en même temps que la PVC, choisissez une classe de stockage sans retain.
  6. Choisissez une facturation à l'heure ou mensuelle. Le paramètre par défaut est la facturation à l'heure.

Configuration du chiffrement pour Block Storage for Classic

Vous pouvez configurer le chiffrement pour Block Storage for Classic à l'aide d'IBM Key Protect.

L'exemple ci-après montre comment créer un ID de service avec les rôles d'accès requis pour Key Protect et votre cluster. Les données d'identification de cet ID de service sont utilisées afin d'activer le chiffrement pour vos volumes Block Storage for Classic.

Vous pouvez activer le chiffrement en créant un secret Kubernetes qui utilise votre clé d'API personnelle tant que vous disposez du rôle d'accès au service Lecteur pour votre instance Key Protect ainsi que du rôle d'accès à la plateforme Afficheur et du rôle d'accès au service Auteur pour votre cluster.

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

  1. Assurez-vous que le rôle d'accès à la plateforme Editeur et que le rôle d'accès au service Auteur vous ont été affectés pour Key Protect afin de vous permettre de créer votre propre clé racine et de l'utiliser pour chiffrer votre instance Block Storage for Classic. Vous pouvez consulter vos rôles d'accès IAM dans la console IAM. Pour plus d'informations sur les rôles IAM, voir Accès IAM.

  2. Si vous ne disposez pas d'une instance Key Protect, fournissez un.

  3. Créez une clé racine. Par défaut, la clé racine est créée sans date d'expiration.

  4. Créez un ID de service IAM. Remplacez <service_ID_name> par le nom que vous souhaitez attribuer à votre ID de service. Cet ID de service est utilisé pour accéder à votre instance Key Protect à partir de votre volume Block Storage for Classic.

    ibmcloud iam service-id-create <service_ID_name>
    

    Exemple de sortie

    OK
    Service ID test-id is created successfully
    ID            ServiceId-a1a11111-bb11-1111-a11b-1111111a11ba   
    Name          test-id   
    Description      
    CRN           crn:v1:bluemix:public:iam-identity::a/1a1111aa2b11111aaa1a1111aa2aa111::serviceid:ServiceId-a1a11111-bb11-1111-a11b-1111111a11bb   
    Version       1-bb11aa11a0aa1a11a011a1aaaa11a1bb   
    Locked        false
    
  5. Créez une clé d'API pour votre ID de service. Remplacez <api-key-name> par un nom pour votre clé d'interface de programmation et remplacez <service_ID_name> par le nom de l'ID de service que vous avez créé. Assurez-vous d'enregistrer votre clé d'interface de programmation car elle ne peut pas être extraite ultérieurement. Cette clé d'API sera stockée dans un secret Kubernetes dans votre cluster au cours d'une étape ultérieure.

    ibmcloud iam service-api-key-create <api_key_name> <service_ID_name>
    
  6. Extrayez une liste de services activés pour IAM dans votre compte et notez le nom de l'instance Key Protect que vous avez créée.

    ibmcloud resource service-instances
    
  7. Récupérez l'identificateur global unique (GUID) de votre instance Key Protect. L'ID est utilisé afin de créer une stratégie de service IAM pour votre ID de service.

    ibmcloud resource service-instance "<instance_name>" | grep GUID
    
  8. Créez une stratégie de service IAM pour accorder à votre ID de service l'accès à votre instance Key Protect. La commande ci-après permet d'accorder à votre ID de service Reader l'accès à votre instance Key Protect. Le rôle d'accès Lecteur est le rôle d'accès au service minimal que votre ID de service doit avoir pour extraire les clés Key Protect. Pour plus d'informations, voir Gestion de l'accès utilisateur pour Key Protect.

    ibmcloud iam service-policy-create <service_ID_name> --roles Reader --service-name kms --service-instance <service_instance_GUID>
    
  9. Créez une autre stratégie de service IAM pour accorder à votre ID de service l'accès à votre cluster. La commande ci-après accorde le rôle d'accès à la plateforme Afficheur et le rôle d'accès au service Auteur à votre ID de service pour votre cluster. Vous pouvez extraire votre ID de cluster en exécutant ibmcloud ks cluster get <cluster_name>.

    ibmcloud iam service-policy-create <service_ID_name> --roles Writer,Viewer --service-name containers-kubernetes --service-instance <cluster_ID>
    
  10. Si la charte Helm ibmcloud-block-storage-plugin est déjà installée, vous devez la retirer et installer une nouvelle version.

    Si vous avez installé le plug-in sans utiliser Helm, vous devez retirer manuellement le déploiement du plug-in de stockage par blocs et toutes les ressources associées avant d'installer une nouvelle version.

    helm uninstall <name> <namespace>
    
  11. Installez la charte Helm ibmcloud-block-storage-plugin.

    helm install <name> iks-charts/ibmcloud-block-storage-plugin
    
  12. Créez un espace de noms ibm-block-secrets.

    kubectl create ns ibm-block-secrets
    
  13. Créez une liaison de rôle dans l'espace de noms ibm-block-secrets pour le plug-in de stockage par blocs.

    kubectl create rolebinding ibmcloud-block-storage-plugin-byok --clusterrole=ibmcloud-block-storage-plugin-byok --serviceaccount=kube-system:ibmcloud-block-storage-plugin --group system:nodes --namespace=ibm-block-secrets
    
  14. Créez un secret Kubernetes appelé secret.yaml et qui inclut les données d'identification permettant d'accéder à votre clé racine dans votre instance de service Key Protect.

    1. Créez un fichier de configuration pour le secret.
        apiVersion: v1
        kind: Secret
        metadata:
          labels:
            kmsConfig: kpc-secretLabel
          name: <secret_name> # Enter a name for your secret. Example: my_secret
          namespace: <namespace> # Enter the name of the namespace where you want to create the secret. The secret must be in same namespace where your app is deployed. Example: default
        stringData:
        config: |-
            {
                "api_key":"<service_id_api_key>", # Enter the API key for the service ID that you created. Example: "AA1aAAaA1a21AAaA1aAAaAa-AA-1AAaaA1aA1aAaaaAA"
                "iam_endpoint":"https://iam.cloud.ibm.com",
                "key_protect_endpoint":"https://<region>.kms.cloud.ibm.com", # Example: "https://us-east.kms.cloud.ibm.com"
                "root_key_crn":"<rook_key_crn>", # Example: "crn:v1:bluemix:public:kms:<region>:a/1ab011ab2b11111aaa1a1111aa1aa111:11aa111a-1111-11a1-a111-a11a111aa111:key:11a11111-1a1a-111a-111a-11111a1a1aa1",
                "version":""
            }
        type: ibm.io/kms-config
        ```
        `stringData.config.key_protect_endpoint`
        :   Entrez le noeud final régional de votre instance Key Protect. Pour obtenir une liste de noeuds finaux Key Protect, voir [Régions et noeuds finaux](/docs/key-protect?topic=key-protect-regions).
    
        `stringData.config.root_key_crn`
        :   Entrez le nom de ressource de cloud (CRN) de la clé racine que vous avez créée. Pour extraire le CRN de votre clé racine, procédez comme suit.
            1. Accédez à la liste de ressources dans la [console IBM Cloud](https://cloud.ibm.com/resources){: external}.
            2. Cliquez sur **Services**, puis sur votre instance Key Protect.
            3. Recherchez votre clé racine dans le **menu Actions**, puis cliquez sur le bouton d'**affichage de CRN**.
            4. Clique sur le bouton **Copier** pour copier le CRN.
    
    1. Créez le secret dans votre cluster.
    
    ```sh {: pre}
        kubectl apply -f secret.yaml
        ```
    1. Vérifiez que votre secret a été créé.
    
    ```sh {: pre}
        kubectl get secrets
        ```
    
  15. Choisissez l'une des options suivantes pour créer une instance d' Block Storage for Classic qui chiffre les données à l'aide de votre clé racine.

Chiffrement des données d'un volume à l'aide de votre propre classe de stockage

Vous pouvez déployer des applications qui utilisent des volumes chiffrés en créant au préalable votre propre classe de stockage.

Les étapes ci-après montrent comment créer une classe de stockage chiffrée personnalisée que vous pouvez utiliser pour créer plusieurs instances de stockage par blocs chiffrées avec la même configuration. Si vous souhaitez créer une PVC chiffrée en utilisant l'une des classes de stockage fournies par IBM, vous pouvez le faire en faisant directement référence aux données d'identification Key Protect dans votre PVC.

  1. Déterminez la configuration de stockage à adopter.

  2. Créez votre propre classe de stockage qui provisionne une instance de stockage en blocs chiffrée en vous basant sur l'une des classes de stockage fournies par IBM. Vous pouvez extraire les détails d'une classe de stockage en exécutant kubectl get sc <storageclass_name> -o yaml. L'exemple suivant est basé sur la classe de stockage ibmc-block-retain-bronze.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <name> # Enter the name of the storage class. Example: my_custom_storageclass
    parameters:
      billingType: hourly
      classVersion: "2"
      fsType: ext4
      iopsPerGB: "2"
      sizeRange: '[20-12000]Gi'
      type: Endurance
      encrypted: "true" # Enter "true" to enable encryption.
      encryptionKeySecret: <secret_name> # # #nter the name of the secret that you created earlier.Example: my_secret
      encryptionKeyNamespace: <namespace> # # #nter the namespace where you created your secret. Example: default
    provisioner: ibm.io/ibmc-block
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    
  3. Créez la classe de stockage dans votre cluster.

    kubectl apply -f storageclass.yaml
    
  4. Ajoutez « Block Storage for Classic » à votre application en utilisant votre propre classe de stockage pour créer un PVC.

  5. Vérifiez le chiffrement de vos volumes Block Storage for Classic.

Création d'une PVC qui fait référence à votre secret Block Storage for Classic

Vous pouvez mettre à disposition une instance Block Storage for Classic chiffrée en créant une PVC qui spécifie le secret Kubernetes contenant vos données d'identification Key Protect.

Les étapes ci-après montrent comment faire référence à vos données d'identification Key Protect dans votre PVC pour créer une instance Block Storage for Classic chiffrée. Pour créer plusieurs volumes chiffrés sans spécifier les données d'identification Key Protect dans chaque PVC, vous pouvez créer une classe de stockage chiffrée personnalisée.

  1. Passez en revue les classes de stockage Block Storage for Classic fournies afin de déterminer celle qui répond le mieux aux exigences de votre application. Si les classes de stockage fournies ne répondent pas aux exigences de votre application, vous pouvez créer votre propre classe de stockage personnalisée.

  2. Créez un fichier de configuration de PVC nommé pvc.yaml faisant référence au secret Kubernetes dans lequel vous avez stocké les données d'identification du service Key Protect. Pour créer ce secret, voir Configuration du chiffrement pour Block Storage for Classic.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: <pvc_name> # Enter a name for your PVC.
      annotations:
      volume.beta.kubernetes.io/storage-class: "<storage_class>" # Enter a storage class. To see a list of storageclasses run `kubectl get storageclasses`.
      labels:
        encrypted: "true"
        encryptionKeyNamespace: <namespace> # Enter the namespace where your secret was created.
        encryptionKeySecret: <secret_name> # Enter the name of the secret you created.
    spec:
      accessModes:
        - ReadWriteOnce
        resources:
        requests:
            storage: 20Gi
    
  3. Créez la PVC dans votre cluster.

    kubectl apply -f pvc.yaml
    
  4. Vérifiez le statut de votre PVC.

    kubectl get pvc
    
  5. Attendez que votre PVC soit liée, puis créez un déploiement qui utilise votre PVC.

  6. Vérifiez le chiffrement de vos volumes Block Storage for Classic.

Vérification du chiffrement de vos volumes Block Storage for Classic

Vous pouvez contrôler le chiffrement de vos volumes en vérifiant le chemin de montage du volume.

  1. Connectez-vous à votre pod d'application. Remplacez <pod_name> par le nom du pod qui monte votre volume Block Storage for Classic chiffré.

    kubectl exec <pod_name> -it bash
    
  2. Répertoriez le système de fichiers de votre pod.

    df -h
    
  3. Passez en revue le chemin du système de fichiers pour votre volume Block Storage for Classic chiffré.

    • Les volumes chiffrés ont une structure de chemin d'accès /dev/mapper/<pvc-ID_encrypted>. Dans cet exemple, le volume chiffré est monté sur le chemin de fichier /test dans le pod.
        Filesystem                                            Size  Used Avail Use% Mounted on
        overlay                                                98G  8.2G   85G   9% /
        tmpfs                                                  64M     0   64M   0% /dev
        tmpfs                                                 2.0G     0  2.0G   0% /sys/fs/cgroup
        /dev/mapper/pvc-a011a111-1111-1111-111a-aaa1a1111a11_encrypted   20G   45M   20G   1% /test
        ```
    * Les volumes non chiffrés possèdent une structure de chemin d'accès `dev/mapper/<random_string>`.
    
    ```sh {: screen}
        Filesystem                                     Size  Used Avail Use% Mounted on
        overlay                                         98G   16G   78G  17% /
        tmpfs                                           64M     0   64M   0% /dev
        tmpfs                                          7.9G     0  7.9G   0% /sys/fs/cgroup
        /dev/mapper/3600a09803830476e733f4e477370716e   24G   45M   24G   1% /test
        ```
    

La suppression de votre secret Kubernetes ne révoque pas l'accès aux données de volume. Si vous avez créé un déploiement qui ne comprend qu'un pod, vous devez supprimer le pod. Si vous avez créé un déploiement, vous devez le supprimer.

Ajout de stockage par blocs à des applications

Créez une revendication de volume persistant (PVC) afin de provisionner dynamiquement du stockage en blocs pour votre cluster. La mise à disposition dynamique crée automatiquement le volume persistant (PV) correspondant et commande l'unité de stockage réelle dans votre compte d'infrastructure IBM Cloud.

Le stockage par blocs est fourni avec un mode d'accès de type ReadWriteOnce. Vous ne pouvez le monter que sur un seul pod dans un seul noeud worker du cluster à la fois.

Avant de commencer :

Vous cherchez à déployer du stockage par blocs dans un ensemble avec état (StatefulSet) ? Pour plus d'informations, voir Utilisation de stockage par blocs dans un ensemble avec état (StatefulSet).

Pour ajouter du stockage par blocs :

  1. Créez un fichier de configuration pour définir votre PVC et sauvegardez la configuration sous forme de fichier .yaml.

    • Exemple pour les classes de bronze, d'argent et d'or : Le fichier .yaml suivant crée une réclamation nommée block-storage-pvc de la classe de stockage "ibmc-block-silver", facturée de manière horaire, avec une taille de gigaoctet de 24Gi.
        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          name: block-storage-pvc
          labels:
            billingType: "hourly"
            region: us-south
            zone: dal13
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 24Gi
          storageClassName: ibmc-block-silver
        ```
    -  **Exemple d'utilisation de votre propre classe de stockage**:
            Le fichier `.yaml` suivant crée une réclamation nommée `block-storage-pvc` de la classe de stockage `ibmc-block-retain-custom`, facturée de manière horaire, avec une taille de gigaoctet `45Gi` et IOPS de `"300"`.
    
    ```yaml {: codeblock}
        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          name: block-storage-pvc
          labels:
            billingType: "hourly"
            region: us-south
            zone: dal13
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 45Gi
              iops: "300"
          storageClassName: ibmc-block-retain-custom
        ```
    
        `name`
        :   Entrez le nom de la réservation de volume persistant (PVC).
    
        `billingType`
        :   Dans la section metadata.labels, indiquez la fréquence de calcul de votre facture de stockage, au mois ("monthly") ou à l'heure ("hourly"). La valeur par défaut est "hourly".
    
        `region`
        :   Dans la section metadata.labels, indiquez la région dans laquelle vous souhaitez mettre à disposition votre stockage par blocs. Si vous spécifiez la région, vous devez également indiquer une zone. Si vous ne spécifiez pas de région ou que la région spécifiée est introuvable, le stockage est créé dans la même région que votre cluster. Cette option est uniquement prise en charge avec le plug-in IBM Cloud Block Storage version 1.0.1 ou supérieure. Pour les versions antérieures du plug-in, si vous disposez d'un cluster multizone, la zone dans laquelle votre stockage est mis à disposition est sélectionnée en mode circulaire pour équilibrer les demandes de volume uniformément dans toutes les zones. Pour indiquer la zone destinée à votre stockage, vous pouvez d'abord créer une [classe de stockage personnalisée](#block_multizone_yaml). Créez ensuite une réservation de volume persistant (PVC) avec votre classe de stockage personnalisée.
    
        `zone`
        :   Dans la section metadata.labels, indiquez la zone dans laquelle vous souhaitez mettre à disposition votre stockage par blocs. Si vous spécifiez la zone, vous devez également indiquer une région. Si vous ne spécifiez pas de zone ou que la zone spécifiée n'est pas trouvée dans un cluster à zones multiples, la zone est sélectionnée sur une base de permutation circulaire. Cette option est uniquement prise en charge avec le plug-in IBM Cloud Block Storage version 1.0.1 ou supérieure. Pour les versions antérieures du plug-in, si vous disposez d'un cluster multizone, la zone dans laquelle votre stockage est mis à disposition est sélectionnée en mode circulaire pour équilibrer les demandes de volume uniformément dans toutes les zones. Pour indiquer la zone destinée à votre stockage, vous pouvez d'abord créer une [classe de stockage personnalisée](#block_multizone_yaml). Créez ensuite une réservation de volume persistant (PVC) avec votre classe de stockage personnalisée.
    
        `storage`
        :   Dans la section spec.resources.requests, entrez la taille du stockage par blocs en gigaoctets (Go). Une fois que votre stockage est mis à disposition, vous ne pouvez pas modifier la taille de votre espace de stockage. Veillez à indiquer une taille correspondant à la quantité de données que vous envisagez de stocker.
    
        `iops`
        :   Cette option n'est disponible que pour vos propres classes de stockage personnalisées (`ibmc-block-custom / ibmc-block-retain-custom`). Dans la section « Requêtes de ressources » de la spécification, indiquez le nombre total d'IOPS pour le stockage, en choisissant un multiple de 100 compris dans la plage autorisée. Si vous choisissez une valeur IOPS autre que celle répertoriée, la valeur IOPS est arrondie à la valeur supérieure.
    
        `storageClassName`
        :   Dans la section spec, entrez le nom de la classe de stockage que vous souhaitez utiliser pour mettre à disposition le stockage par blocs. Vous pouvez choisir l'une des [classes de stockage fournies par IBM](#block_storageclass_reference) ou [créer votre propre classe de stockage](#block_custom_storageclass). Si vous ne spécifiez pas de classe de stockage, le PV est créé avec la classe de stockage par défaut `ibmc-file-bronze`.
    
    Si vous souhaitez utiliser une classe de stockage personnalisée, créez votre PVC avec le nom de classe de stockage correspondant, un nombre d'IOPS et une taille valides.
    {: tip}
    
    
  2. Créez le PVC (circuit virtuel permanent).

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

    kubectl get pvc
    

    Exemple de sortie

    NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    block-storage-pvc              Bound    pvc-1aa1aaaa-11a1-48d1-ab11-11b11111f3bc   45Gi       RWO            ibmc-block-silver   150m
    
  4. Pour monter la PV dans votre déploiement, créez un fichier .yaml de configuration et spécifiez le PVC qui lie la PV.

    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>
    
    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
    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
    Nom du conteneur que vous désirez déployer dans votre cluster.
    mountPath
    Dans la section container.volume.mounts, entrez le chemin d'accès absolu du répertoire où est monté le volume dans le conteneur. Les données écrites dans le chemin de montage sont stockées sous le répertoire racine de votre instance de stockage de bloc physique. Si vous souhaitez partager un volume entre différentes applications, vous pouvez définir des sous-chemins d'accès au volume pour chacune de vos applications.
    name
    Dans la section container.volume.mounts, entrez le nom du volume à monter sur votre pod.
    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 qui lie le volume persistant que vous souhaitez utiliser.
  5. Créez le déploiement.

    kubectl apply -f <local_yaml_path>
    
  6. Vérifiez que le montage du volume persistant (PV) a abouti.

    kubectl describe deployment <deployment_name>
    

    Le point de montage est indiqué dans la zone Volume Mounts et le volume est indiqué dans la zone Volumes.

    Volume Mounts:
        /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
        /volumemount from myvol (rw)
    ...
    Volumes:
    myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    block-storage-pvc
        ReadOnly:    false
    

Utilisation de stockage par blocs existant dans votre cluster

Si vous disposez déjà d'un périphérique de stockage physique que vous souhaitez utiliser dans votre cluster, vous pouvez créer manuellement le PV et le PVC afin de provisionner le stockage de manière statique.

Avant de commencer à monter votre stockage existant sur une application, vous devez obtenir toutes les informations nécessaires pour votre volume persistant.

Récupération des informations de votre stockage de bloc existant

  1. Récupérez ou générez une clé d'API pour votre compte d'infrastructure IBM Cloud.

    1. Connectez-vous au portail de l'infrastructure « IBM Cloud ».
    2. Sélectionnez Compte, puis Utilisateurs et ensuite Liste d'utilisateurs.
    3. Recherchez votre ID utilisateur.
    4. Dans la colonne Clé d'API, cliquez sur Générer pour générer la clé d'API ou sur Afficher pour afficher votre clé d'API existante.
  2. Récupérez le nom d'utilisateur de l'API pour votre compte d'infrastructure IBM Cloud.

    1. Dans le menu Liste d'utilisateurs, sélectionnez votre ID utilisateur.
    2. Dans la section Informations d'accès à l'API, retrouvez votre Nom d'utilisateur de l'API.
  3. Connectez-vous au plug-in d'interface de ligne de commande (CLI) de l'infrastructure IBM Cloud.

    ibmcloud sl init
    
  4. Optez pour l'authentification à l'aide du nom d'utilisateur et de la clé d'API de votre compte d'infrastructure IBM Cloud.

  5. Entrez le nom d'utilisateur et la clé d'API que vous avez récupérés dans les étapes précédentes.

  6. Affichez la liste des unités de stockage par blocs.

    ibmcloud sl block volume-list
    

    Exemple de sortie

    id          username              datacenter   storage_type                capacity_gb   bytes_used   lunId   
    11111111    IBM01AAA1111111-1     wdc07        endurance_block_storage     45            -            2      
    
  7. Récupérez les détails du volume. Remplacez <volume_ID> par l'ID du volume de stockage de bloc que vous avez extrait lors de l'étape 6.

    ibmcloud sl block volume-detail <volume_ID>
    

    Exemple de sortie

    ID                         11111111
    User name                  IBM01AAA1111111-1   
    Type                       endurance_block_storage   
    Capacity (GB)              45   
    LUN Id                     2   
    IOPs                       100   
    Datacenter                 wdc07   
    Target IP                  10.XXX.XX.XXX  
    # of Active Transactions   0   
    Replicant Count            0
    
  8. Notez les ID, Capacity, LUN Id, Datacenteret Target IP du volume que vous souhaitez monter sur votre cluster. Remarque : pour monter du stockage existant sur un cluster, vous devez disposer d'un noeud worker dans la même zone que votre stockage. Pour vérifier la zone de votre nœud worker, exécutez ibmcloud ks worker ls --cluster <cluster_name_or_ID>.

Création d'un volume persistant (PV) et d'une réclamation de volume persistant correspondante (PVC)

  1. Facultatif : si vous avez un stockage que vous avez mis à disposition avec une classe de stockage retain, lorsque vous supprimez le PVC, le PV et l'unité de stockage physique ne sont pas supprimés. Pour réutiliser le stockage dans votre cluster, vous devez d'abord supprimer le volume persistant. Répertoriez les volumes persistants appartenant à votre stockage persistant. Ce PV est à l'état released.

    kubectl get pv
    
  2. Supprimez le volume persistant.

    kubectl delete pv <pv_name>
    
  3. Vérifiez que le volume persistant est supprimé.

    kubectl get pv
    
  4. Créez un fichier de configuration pour votre volume persistant. Incluez les paramètres que vous avez extraits précédemment.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: "block-storage-pv" # Enter a name for your PV. For example, my-static-pv.
      labels:
         failure-domain.beta.kubernetes.io/region: "<region>" # Example us-east.
         failure-domain.beta.kubernetes.io/zone: "<zone>" # Example: wdc04. See /docs/containers?topic=containers-regions-and-zones#zones-sz
    spec:
      capacity:
        storage: "<storage>"
      accessModes:
        - ReadWriteOnce
      flexVolume:
        driver: "ibm/ibmc-block"
        fsType: "<fs_type>" # Enter ext or xfs
        options:
          "Lun": "<Lun_ID>"
          "TargetPortal": "<TargetPortal>"
          "VolumeID": "<VolumeID>"
          "volumeName": "block-storage-pv" # Enter the same value as your PV name from metadata.name
    
    name
    Donnez un nom à votre volume persistant. Par exemple, block-storage-pv. Notez que vous devez également entrer cette valeur dans spec.FlexVolume.options en tant que volumeName.
    labels
    Entrez la région et la zone que vous avez récupérées précédemment. Vous devez disposer d'au moins un noeud worker dans la même région et dans la même zone que votre stockage persistant pour monter le stockage sur votre cluster. Pour extraire vos détails de volume, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> pour obtenir les détails de votre volume.
    region
    Entrez la région où se trouve votre espace de stockage de blocs. Notez que votre cluster et votre espace de stockage doivent être dans la même région. Pour rechercher l'emplacement de votre cluster, exécutez ibmcloud ks cluster ls. Pour plus d'informations sur les régions et zones disponibles, voir Régions et zones. Par exemple, us-east.
    zone
    Entrez la zone dans laquelle se trouve votre volume de stockage. Pour extraire vos détails de volume, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> pour obtenir les détails de votre volume. Notez que pour connecter le stockage de bloc à votre cluster, vous devez disposer d'un poste de travail dans la même zone que le volume à joindre. Pour rechercher les zones de vos nœuds worker, exécutez ibmcloud ks worker ls -c <cluster>. Par exemple, wdc04.
    storage
    Entrez la taille de stockage du volume de stockage de bloc existant que vous souhaitez connecter à votre cluster. La taille de stockage doit être indiquée en gigaoctets, par exemple 20Gi (20 Go) ou 1000Gi (1 To). Pour extraire vos détails de volume, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> pour obtenir les détails de votre volume.
    fsType
    Entrez le type de système de fichiers configuré pour votre stockage par blocs existant. Choisissez entre ext4 ou xfs. Si vous ne spécifiez pas cette option, la valeur par défaut est ext4. Si le mauvais type fsType est défini, la création du volume persistant aboutit, mais le montage de ce volume sur un pod est voué à l'échec. Pour extraire vos détails de volume, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> pour obtenir les détails de votre volume.
    Lun
    Entrez l'ID du numéro d'unité logique de votre volume de stockage de bloc. Pour extraire vos détails de volume, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> pour obtenir les détails de votre volume.
    TargetPortal
    Entrez l'adresse IP de votre espace de stockage. Pour extraire le paramètre TargetPortal, exécutez ibmcloud sl block volume-list pour obtenir l'ID volume, puis exécutez ibmcloud sl block volume-detail <volume_ID> et notez le Target IP dans la sortie.
    VolumeId
    Entrez l'ID de votre espace de stockage. Pour extraire les détails de votre volume, exécutez ibmcloud sl block volume-list.
    volumeName
    Entrez la même valeur que votre nom de volume persistant. Par exemple, block-storage-pv.
  5. Créez le volume persistant dans votre cluster.

    kubectl apply -f pv.yaml
    
  6. Vérifiez que le volume persistant (PV) est créé.

    kubectl get pv
    
  7. Créez un autre fichier de configuration pour créer 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 storage et accessMode. La zone storage-class doit contenir une chaîne vide. Si l'un de ces champs ne correspond pas au volume persistant, alors un nouveau volume persistant est créé automatiquement.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: block-storage-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: "20Gi"
      storageClassName: ""
    
  8. Créez votre PVC.

    kubectl apply -f static-pvc.yaml
    
  9. 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 static-pvc
    

    Exemple de sortie

    Name:          static-pvc
    Namespace:     default
    StorageClass:  
    Status:        Bound
    
  10. Facultatif Sauvegardez l'exemple de configuration de pod suivant en tant que fichier appelé pod.yaml.

    apiVersion: v1
    kind: Pod
    metadata:
      name: block-storage
      labels:
        app: block-storage
    spec:
      containers:
        - name: block-storage
          image: nginx
          command: ["/bin/sh"]
          args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"]
          workingDir: /home
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          volumeMounts:
            - name: block-storage-pv
              mountPath: /home
      volumes:
        - name: block-storage-pv
          persistentVolumeClaim:
            claimName: block-storage-pvc
    
  11. Créez le pod dans votre cluster.

    kubectl create -f pod.yaml
    
  12. Une fois que le pod est à l'état Running, obtenez les journaux.

    kubectl logs
    

    Exemple de sortie

    2022-01-21 16:11:00
    

Vous venez de créer un volume persistant que vous avez lié à une PVC. Ensuite, vous avez déployé cette application qui utilise le stockage par bloc. Les utilisateurs de cluster peuvent désormais monter le circuit virtuel permanent à leurs déploiements et commencer à lire et à écrire dans le volume persistant.

Utilisation de stockage par blocs dans un ensemble avec état (StatefulSet)

Si vous disposez d'une application avec état, telle qu'une base de données, vous pouvez créer des ensembles avec état utilisant du stockage par blocs pour stocker les données de votre application. Sinon, vous pouvez utiliser IBM Cloud DaaS (Database-as-a-Service) et stocker vos données dans le cloud.

À quoi dois-je faire attention lorsque j'ajoute un stockage en blocs à un « stateful set »?
Pour ajouter du stockage dans un ensemble avec état, vous spécifiez la configuration de votre stockage dans la section volumeClaimTemplates du fichier YAML de l'ensemble avec état. La section volumeClaimTemplates constitue la base de votre PVC et peut inclure la classe de stockage et la taille ou le nombre d'opérations d'entrée-sortie par seconde (IOPS) du stockage par blocs que vous souhaitez mettre à disposition. Cependant, si vous prévoyez d'ajouter des libellés (labels) dans la section volumeClaimTemplates, Kubernetes n'inclut pas ces libellés en créant la PVC. Vous devez les ajouter directement dans l'ensemble avec état à la place.

Vous ne pouvez pas déployer deux ensembles avec état en même temps. Si vous essayez de créer un ensemble avec état avant le déploiement complet d'un autre ensemble, le déploiement de votre ensemble avec état peut entraîner des résultats imprévisibles.

Comment puis-je créer mon « stateful set » dans une zone spécifique?
Dans un cluster multizone, vous pouvez spécifier la zone et la région dans lesquelles créer votre ensemble avec état dans les sections spec.selector.matchLabels et spec.template.metadata.labels du fichier YAML de votre ensemble avec état. Sinon, vous pouvez ajouter ces libellés dans une classe de stockage personnalisée et utiliser cette classe de stockage dans la section volumeClaimTemplates de votre ensemble avec état.
Puis-je reporter l'association d'un PV à mon pod avec état jusqu'à ce que ce dernier soit prêt?
Oui, vous pouvez créer votre propre classe de stockage pour votre PVC qui inclut la zone volumeBindingMode: WaitForFirstConsumer.
Quelles sont les options dont je dispose pour ajouter un stockage en blocs à un « stateful set »?
Si vous souhaitez créer automatiquement votre PVC lorsque vous créez l'ensemble avec état, utilisez la mise à disposition dynamique. Vous pouvez également opter pour une mise à disposition anticipée de vos PVC ou utiliser des PVC existantes avec votre ensemble avec état.

Création du circuit virtuel permanent à l'aide de l'application des accès dynamique lorsque vous créez un ensemble avec état

Utilisez cette option pour créer automatiquement la PVC lorsque vous créez l'ensemble avec état.

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

Procédez comme suit pour vérifier que tous les ensembles avec état existants dans votre cluster sont entièrement déployés. Si un ensemble avec état est encore en cours de déploiement, vous ne pouvez pas commencer à créer votre ensemble avec état. Vous devez attendre jusqu'à ce que tous les ensembles avec état de votre cluster soient entièrement déployés pour éviter d'obtenir des résultats imprévisibles.

  1. Répertoriez les ensembles avec état existants dans votre cluster.

    kubectl get statefulset --all-namespaces
    

    Exemple de sortie

    NAME              DESIRED   CURRENT   AGE
    mystatefulset     3         3         6s
    
  2. Affichez le statut des pods de chaque ensemble avec état pour vérifier que le déploiement de tous les ensembles avec état est terminé.

    kubectl describe statefulset <statefulset_name>
    

    Exemple de sortie

    Name:               nginx
    Namespace:          default
    CreationTimestamp:  Fri, 05 Oct 2022 13:22:41 -0400
    Selector:           app=nginx,billingType=hourly,region=us-south,zone=dal10
    Labels:             app=nginx
    billingType=hourly
    region=us-south
    zone=dal10
    Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"podManagementPolicy":"Par..."
    Replicas:           3 desired | 3 total
    Pods Status:        0 Running / 3 Waiting / 0 Succeeded / 0 Failed
    Pod Template:
    Labels:  app=nginx
    billingType=hourly
    region=us-south
    zone=dal10
    ...
    

    Un ensemble avec état est entièrement déployé lorsque le nombre de répliques que vous trouvez dans la section Replicas de la sortie de l'interface de ligne de commande est égale au nombre de pods en cours d'exécution (Running) dans la section Pods Status. Si un ensemble avec état n'est pas tout à fait déployé, patientez jusqu'à ce que le déploiement soit terminé avant de poursuivre.

  3. Créez un fichier de configuration pour votre ensemble avec état et le service que vous utilisez pour exposer cet ensemble. L'exemple suivant montre comment déployer NGINX sous forme d'ensemble avec état avec trois répliques. Pour chaque réplique, une unité de stockage par blocs de 20 gigaoctets est mise à disposition en fonction des spécifications qui sont définies dans la classe de stockage ibmc-block-retain-bronze. Toutes les unités de stockage sont mises à disposition dans la zone dal10. Étant donné que l'espace de stockage de bloc n'est pas accessible à partir d'autres zones, toutes les répliques de l'ensemble avec état sont également déployées sur des nœuds worker situés dans dal10.

    apiVersion: v1
    kind: Service
    metadata:
     name: nginx
     labels:
    app: nginx
    spec:
    ports:
    - port: 80
        name: web
    clusterIP: None
    selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: nginx
    spec:
      serviceName: "nginx"
      replicas: 3
      podManagementPolicy: Parallel
      selector:
        matchLabels:
        app: nginx
        billingType: "hourly"
        region: "us-south" # Enter the region where your cluster is located.
        zone: "dal10"
    template:
      metadata:
      labels:
          app: nginx
          billingType: "hourly"
          region: "us-south"
          zone: "dal10"
      spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: myvol
        mountPath: /usr/share/nginx/html
    volumeClaimTemplates:
    - metadata:
        name: myvol
        spec:
        accessModes:
        - ReadWriteOnce
        resources:
            requests:
            storage: 20Gi
            iops: "300" #required only for performance storage
        storageClassName: ibmc-block-retain-bronze
    

    L'exemple suivant montre comment déployer NGINX sous forme d'ensemble avec état avec trois répliques. L'ensemble avec état n'indique pas la région et la zone où est créé le stockage par blocs. A la place, l'ensemble avec état utilise une règle d'anti-affinité pour garantir que les pods sont répartis sur les noeuds worker et les zones. En définissant topologykey: failure-domain.beta.kubernetes.io/zone, le planificateur de Kubernetes ne peut pas planifier un pod sur un nœud worker si celui-ci se trouve dans la même zone qu'un pod portant le libellé app: nginx. Pour chaque pod d'ensemble avec état, deux PVC sont créées selon la définition indiquée à la section volumeClaimTemplates, mais la création des instances de stockage par blocs est retardée jusqu'à ce qu'un pod d'ensemble avec état qui utilise le stockage soit planifié. Cette configuration est appelée « planification des volumes tenant compte de la topologie ».

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-block-bronze-delayed
    parameters:
      billingType: hourly
      classVersion: "2"
      fsType: ext4
      iopsPerGB: "2"
      sizeRange: '[20-12000]Gi'
      type: Endurance
    provisioner: ibm.io/ibmc-block
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      ports:
      - port: 80
        name: web
      clusterIP: None
      selector:
        app: nginx
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: web
    spec:
      serviceName: "nginx"
      replicas: 3
      podManagementPolicy: "Parallel"
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          affinity:
            podAntiAffinity:
              preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 100
                podAffinityTerm:
                  labelSelector:
                    matchExpressions:
                    - key: app
                      operator: In
                      values:
                      - nginx
                  topologyKey: failure-domain.beta.kubernetes.io/zone
          containers:
          - name: nginx
            image: registry.k8s.io/nginx-slim:0.8
            ports:
            - containerPort: 80
              name: web
            volumeMounts:
            - name: myvol1
              mountPath: /usr/share/nginx/html
            - name: myvol2
              mountPath: /tmp1
      volumeClaimTemplates:
      - metadata:
          name: myvol1
        spec:
          accessModes:
          - ReadWriteOnce # access mode
          resources:
            requests:
              storage: 20Gi
          storageClassName: ibmc-block-bronze-delayed
      - metadata:
          name: myvol2
        spec:
          accessModes:
          - ReadWriteOnce # access mode
          resources:
            requests:
              storage: 20Gi
          storageClassName: ibmc-block-bronze-delayed
    
    name
    Entrez un nom pour votre ensemble avec état. Le nom entré est utilisé pour créer le nom de votre PVC au format : <volume_name>-<statefulset_name>-<replica_number>.
    serviceName
    Entrez le nom du service que vous souhaitez utiliser pour exposer votre ensemble avec état.
    replicas
    Entrez le nombre de répliques de votre ensemble avec état.
    podManagementPolicy
    Entrez la règle de gestion de pod que vous souhaitez utiliser pour votre ensemble avec état.
    • OrderedReady : avec cette option, les répliques de l'ensemble avec état sont déployées l'une après l'autre. Par exemple, si vous avez spécifié trois répliques, Kubernetes crée la PVC pour la première réplique, attend jusqu'à ce que la PVC soit liée, déploie la réplique de l'ensemble avec état et monte la PVC sur la réplique. Une fois le déploiement terminé, la deuxième réplique est déployée. Pour plus d'informations sur cette option, consultez la section « Gestion des pods » sur OrderedReady
    • Parallel : avec cette option, le déploiement de toutes les répliques de l'ensemble avec état démarre en même temps. Si votre application prend en charge le déploiement parallèle des répliques, utilisez cette option afin de gagner du temps pour le déploiement de vos PVC et des répliques de l'ensemble avec état.
    matchLabels
    Dans la section spec.selector, entrez tous les libellés que vous souhaitez inclure dans votre ensemble avec état et votre PVC. Les libellés que vous indiquez dans la section volumeClaimTemplates de votre ensemble avec état ne sont pas reconnus par Kubernetes. Exemples de libellés que vous pouvez envisager d'inclure :
    • Région et Zone : si vous souhaitez que toutes les répliques d'ensemble avec état et les PVC soient créées dans une zone spécifique, ajoutez les deux libellés. Vous pouvez également indiquer la zone et la région dans la classe de stockage que vous utilisez. Si vous ne spécifiez pas de zone et de région et que vous disposez d'un cluster à zones multiples, la zone dans laquelle votre espace de stockage est mis à disposition est sélectionnée sur une base de permutation circulaire pour équilibrer les demandes de volume également dans toutes les zones.
    • billingType: Indiquez le type de facturation que vous souhaitez utiliser pour vos PVC. Choisissez entre une facturation à l'heure (hourly) ou au mois (monthly). Si vous ne spécifiez pas ce libellé, tous les PVC sont créés avec un type de facturation horaire.
    labels
    Dans la section de métadonnées du modèle de spécification, entrez les mêmes libellés que ceux que vous avez ajoutés dans la section spec.selector.matchLabels.
    affinity
    Dans la section spec.templace.sec, spécifiez votre règle d'anti-affinité pour garantir que les pods de votre ensemble avec état sont répartis sur les noeuds worker et les zones. L'exemple montre une règle d'anti-affinité dans laquelle le pod de l'ensemble avec état préfère ne pas être planifié sur un noeud worker où s'exécute un pod avec le libellé app: nginx. La section topologykey: failure-domain.beta.kubernetes.io/zone limite davantage cette règle d'anti-affinité et empêche la planification du pod sur un noeud worker si ce noeud figure dans la même zone que le pod ayant le libellé app: nginx. En utilisant cette règle d'anti-affinité, vous pouvez appliquer l'anti-affinité aux différents noeuds worker et aux différentes zones.
    name
    Dans la section spec.volume.claim.templates.metadata, entrez un nom pour votre volume. Utilisez le même nom que vous avez défini dans la section spec.containers.volumeMount.name. Le nom que vous entrez ici est utilisé pour créer le nom de votre PVC au format : <volume_name>-<statefulset_name>-<replica_number>.
    storage
    Dans la section spec.volume.claim.templates.spec.resources.requests, entrez la taille du stockage par blocs en gigaoctets (Gi).
    iops
    Dans la section spec.volume.claim.templates.spec.resources.requests, si vous souhaitez mettre à disposition du stockage de type performance, entrez le nombre d'IOPS. Si vous utilisez une classe de stockage Endurance et que vous indiquez un nombre d'IOPS, le nombre d'IOPS est ignoré. Le nombre d'IOPS indiqué dans votre classe de stockage est utilisé à la place.
    storageClassName
    Dans la section spec.volume.claim.templates.spec, entrez la classe de stockage que vous souhaitez utiliser. Pour afficher la liste des classes de stockage existantes, exécutez la commande « kubectl get sc | grep block ». Si vous ne spécifiez pas de classe de stockage, le PVC est créé avec la classe de stockage par défaut définie dans votre cluster. Vérifiez que la classe de stockage par défaut comporte ibm.io/ibmc-block dans la section 'provisioner' de sorte que votre ensemble avec état soit mis à disposition avec du stockage par blocs.
  4. Créez votre ensemble avec état.

    kubectl apply -f statefulset.yaml
    
  5. Patientez jusqu'à ce que votre ensemble avec état soit déployé.

    kubectl describe statefulset <statefulset_name>
    

    Pour voir le statut actuel de vos PVC, exécutez la commande kubectl get pvc. Le nom de votre PVC est formaté en tant que <volume_name>-<statefulset_name>-<replica_number>.

Provisionnement statique à l'aide de PVC existants avec un « stateful set »

Vous pouvez mettre à disposition vos PVC de manière anticipée avant de créer votre ensemble avec état ou utiliser des PVC existantes avec votre ensemble avec état.

Lorsque vous effectuez une mise à disposition dynamique de vos PVC lors de la création de l'ensemble avec état, le nom de la PVC est affecté en fonction des valeurs que vous avez utilisées dans le fichier YAML de l'ensemble avec état. Pour que l'ensemble avec état utilise des PVC existantes, le nom de vos PVC doit correspondre à celui qui serait automatiquement créé via une mise à disposition dynamique.

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

  1. Si vous souhaitez effectuer une mise à disposition préalable de la PVC pour votre ensemble avec état avant de créer l'ensemble avec état, suivez les étapes 1 à 3 de la section Ajout de stockage par blocs à des applications pour créer une PVC pour chaque réplique de l'ensemble avec état. Assurez-vous de créer votre PVC avec un nom qui suit le format suivant : <volume_name>-<statefulset_name>-<replica_number>.
volume_name

Utilisez le nom que vous souhaitez spécifier dans la section spec.volumeClaimTemplates.metadata.name de votre ensemble avec état, par exemple nginxvol.

statefulset_name

Utilisez le nom que vous souhaitez spécifier dans la section metadata.name de votre ensemble avec état, par exemple nginx_statefulset.

replica_number

Entrez le numéro de votre réplique, en commençant par 0.

Par exemple, si vous devez créer trois répliques de l'ensemble avec état, créez trois PVC avec les noms suivants : nginxvol-nginx_statefulset-0, nginxvol-nginx_statefulset-1 et nginxvol-nginx_statefulset-2.

Vous envisagez de créer une PVC et un volume persistant pour une unité de stockage existante ? Créez votre PVC et le volume persistant en utilisant une mise à disposition statique.

  1. Suivez les étapes indiquées à la section Mise à disposition dynamique : Création de la PVC lorsque vous créez un ensemble avec état pour créer votre ensemble avec état. Le nom de votre PVC suit le format <volume_name>-<statefulset_name>-<replica_number>. Veillez à utiliser les valeurs suivantes pour le nom de votre PVC dans la spécification de l'ensemble avec état : spec.volumeClaimTemplates.metadata.name : Entrez le <volume_name> de votre nom de PVC.
metadata.name

Entrez le <statefulset_name> de votre nom de PVC.

spec.replicas

Entrez le nombre de répliques que vous souhaitez créer pour votre ensemble avec état. Le nombre de répliques doit être égal au nombre de PVC que vous avez créées précédemment.

Si vos PVC se trouvent dans des zones différentes, n'incluez pas d'étiquette de région ou de zone dans votre ensemble avec état.

  1. Vérifiez que les réservations de volume persistant sont utilisées dans vos pods de réplique d'ensemble avec état en répertoriant les pods de votre cluster. Identifiez les pods appartenant à votre ensemble avec état.

    kubectl get pods
    
  2. Vérifiez que votre PVC existante est montée sur la réplique de votre ensemble avec état. Examinez la valeur de ClaimName dans la section Volumes de la sortie de l'interface de ligne de commande.

    kubectl describe pod <pod_name>
    

    Exemple de sortie

    Name:           nginx-0
    Namespace:      default
    Node:           10.xxx.xx.xxx/10.xxx.xx.xxx
    Start Time:     Fri, 05 Oct 2022 13:24:59 -0400
    ...
    Volumes:
    myvol:
      Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
      ClaimName:  myvol-nginx-0
    ...
    

Modification de la taille et du nombre d'opérations d'entrée-sortie par seconde (IOPS) de votre unité de stockage

Si vous envisagez d'augmenter la capacité de stockage ou les performances, vous pouvez modifier votre volume existant.

Pour toute question concernant la facturation ou la procédure à suivre pour modifier votre stockage en utilisant la console IBM Cloud, voir Extension de la capacité de stockage par blocs et Ajustement des IOPS. Les mises à jour que vous effectuez à partir de la console ne sont pas reflétées dans le volume persistant (PV). Pour ajouter ces informations au volume persistant, exécutez kubectl patch pv <pv_name> et mettez à jour manuellement la taille et IOPS dans la section Libellés et Annotation de votre volume persistant.

  1. Répertoriez les réservations de volume persistant (PVC) et notez le nom du volume persistant (PV) associé indiqué dans la colonne VOLUME.

    kubectl get pvc
    

    Exemple de sortie

    NAME             STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        AGE
    myvol            Bound     pvc-01ac123a-123b-12c3-abcd-0a1234cb12d3   20Gi       RWO            ibmc-block-bronze    147d
    
  2. Si vous souhaitez modifier les IOPS et la taille de votre stockage par blocs, commencez par éditer les IOPS dans la section metadata.labels.IOPS de votre volume persistant. Vous pouvez augmenter ou diminuer la valeur d'IOPS. Prenez soin d'entrer une valeur IOPS qui est prise en charge pour votre type de stockage. Par exemple, si vous disposez d'un stockage par blocs de type Endurance avec 4 IOPS, vous pouvez remplacer la valeur IOPS par 2 ou 10. Pour obtenir davantage de valeurs IOPS prises en charge, voir Détermination de la configuration de votre stockage par blocs.

    kubectl edit pv <pv_name>
    

    Pour modifier la valeur IOPS à partir de l'interface de ligne de commande, vous devez également modifier la taille de votre stockage par blocs Si vous souhaitez modifier uniquement la valeur IOPS, mais pas la taille, vous devez demander la modification de la valeur IOPS à partir de la console.

  3. Editez la réservation de volume persistant et la nouvelle taille dans la section spec.resources.requests.storage de votre réservation de volume persistant. Vous pouvez passer à une taille supérieure mais uniquement dans la limite de la capacité maximale qui est définie par votre classe de stockage. Vous ne pouvez pas réduire la taille de votre stockage existant. Pour connaître les tailles valides pour votre classe de stockage, voir Détermination de la configuration de stockage par blocs.

    kubectl edit pvc <pvc_name>
    
  4. Vérifiez que l'extension de volume a été demandée. Vous pouvez déterminer que la demande de l'extension de volume a abouti lorsqu'un message FileSystemResizePending apparaît dans la section Conditions de la sortie de votre interface de ligne de commande.

    kubectl describe pvc <pvc_name>
    

    Exemple de sortie

    ...
    Conditions:
    Type                      Status  LastProbeTime                     LastTransitionTime                Reason  Message
    ----                      ------  -----------------                 ------------------                ------  -------
    FileSystemResizePending   True    Mon, 01 Jan 0001 00:00:00 +0000   Thu, 25 Apr 2022 15:52:49 -0400           Waiting for user to (re-)start a pod to finish file system resize of volume on node.
    
  5. Répertoriez tous les pods qui montent la réservation de volume persistant. Si votre réservation de volume persistant est montée par un pod, l'extension de volume est traitée automatiquement. Si votre réservation de volume persistant n'est pas montée par un pod, vous devez effectuer cette opération afin que l'extension de volume puisse être traitée.

    kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
    

    Les pods montés sont renvoyés au format suivant : <pod_name>: <pvc_name>.

  6. Si votre réservation de volume persistant n'est pas montée par un pod, créez un pod ou un déploiement et montez la réservation de volume persistant. Si votre réservation de volume persistant est montée par un pod, passez à l'étape suivante.

  7. Vérifiez que la taille les IOPS ont été modifiés dans la section Labels de la sortie de l'interface CLI. L'exécution de ce processus peut prendre quelques minutes.

    kubectl describe pv <pv_name>
    

    Exemple de sortie

    ...
    Labels:       CapacityGb=50
    Datacenter=dal10
    IOPS=500
    
  8. Connectez-vous au pod qui monte le PVC.

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

    chroot /host
    
  10. Redimensionnez le système de fichiers.

    sudo resize2fs <filesystem-path>
    

    Exemple de commande

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

    df -h
    

Sauvegarde et restauration de données

Le stockage par blocs est mis à disposition au même emplacement que les noeuds worker dans votre cluster. Le stockage est hébergé par IBM sur des serveurs en cluster pour qu'il soit disponible si un serveur tombe en panne. Cependant, le stockage par blocs n'est pas sauvegardé automatiquement et risque d'être inaccessible en cas de défaillance de l'emplacement global. Pour éviter que vos données soient perdues ou endommagées, vous pouvez configurer des sauvegardes régulières que vous pourrez utiliser pour récupérer vos données si nécessaire.

Passez en revue les options de sauvegarde et restauration suivantes pour votre stockage par blocs :

Configuration de la prise régulière d'instantanés

Vous pouvez configurer la prise régulière d'instantanés pour votre stockage par blocs, ce qui consiste en une image en lecture seule qui capture l'état de l'instance à un moment donné.

Pour stocker l'instantané, vous devez demander de l'espace d'instantané dans votre stockage par blocs. Les instantanés sont stockés dans l'instance de stockage existante figurant dans la même zone. Vous pouvez restaurer des données à partir d'un instantané si un utilisateur supprime accidentellement des données importantes du volume. \n \n ** Pour créer une image instantanée pour votre volume, procédez comme suit.

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

  2. Connectez-vous à l'interface de ligne de commande ibmcloud sl.

    ibmcloud sl init
    
  3. Répertoriez les volumes persistants existants dans votre cluster.

    kubectl get pv
    
  4. Obtenez les détails du volume persistant pour lequel vous voulez créer un espace d'instantané et notez l'ID du volume, la taille et le nombre d'entrées-sorties par seconde (IOPS). La taille et le nombre d'IOPS sont affichés dans la section Labels de la sortie de l'interface de ligne de commande.

    kubectl describe pv <pv_name>
    
  5. Pour trouver l'ID du volume, consultez l'annotation ibm.io/network-storage-id dans la sortie de l'interface de ligne de commande.

  6. Créez la taille de l'instantané pour le volume existant à l'aide des paramètres que vous avez récupérés à l'étape précédente.

    ibmcloud sl block snapshot-order <volume_ID> --size <size> --tier <iops>
    
  7. Attendez que la taille de l'instantané soit créée. La taille de l'instantané est mise à disposition lorsque la section Snapshot Size (GB) de la sortie de l'interface de ligne de commande passe de 0 à la taille que vous avez commandée.

    ibmcloud sl block volume-detail <volume_ID>
    
  8. Créez l'instantané de votre volume et notez l'ID de l'instantané qui a été créé pour vous.

    ibmcloud sl block snapshot-create <volume_ID>
    
  9. Vérifiez que la création de l'instantané a abouti.

    ibmcloud sl block snapshot-list <volume_ID>
    
  10. Définissez la planification de l'image instantanée. Pour plus d'informations sur les options disponibles pour votre planification d'instantané, voir la documentation de l'interface de ligne de commande.

    ibmcloud sl block snapshot-enable VOLUME_ID <OPTIONS>
    
  11. Pour restaurer les données d'un instantané sur un volume existant, exécutez la commande suivante :

    ibmcloud sl block snapshot-restore <volume_ID> <snapshot_ID>
    

Réplication d'instantanés dans une autre zone

Pour protéger vos données en cas de défaillance d'une zone, vous pouvez répliquer des instantanés sur une instance de stockage par blocs configurée dans une autre zone.

Les données peuvent être répliquées du stockage principal uniquement vers le stockage de sauvegarde. Vous ne pouvez pas monter une instance de stockage de blocs répliquée sur un cluster. En cas de défaillance de votre stockage principal, vous pouvez manuellement définir votre stockage de sauvegarde répliqué comme stockage principal. Vous pouvez ensuite le monter sur votre cluster. Une fois votre stockage principal restauré, vous pouvez récupérer les données dans le stockage de sauvegarde.

Duplication du stockage

Vous pouvez dupliquer votre instance de stockage par blocs dans la même zone que l'instance de stockage d'origine.

Un doublon contient les mêmes données que l'instance de stockage d'origine au moment où vous créez le doublon. Contrairement aux répliques, le doublon s'utilise comme une instance de stockage indépendante de l'original. Pour effectuer la duplication, configurez d'abord des instantanés pour le volume.

Sauvegarde des données dans IBM Cloud® Object Storage

Vous pouvez utiliser la charte Helm ibm-backup-restore pour constituer un pod de sauvegarde et de restauration dans votre cluster.

Ce pod contient un script pour exécuter une sauvegarde unique ou régulière d'une réservation de volume persistant (PVC) dans votre cluster. Les données sont stockées dans votre instance IBM Cloud® Object Storage que vous avez configurée dans une zone.

Le stockage par blocs est monté avec un mode d'accès RWO. Ce type d'accès autorise uniquement le montage d'un pod à la fois sur le stockage par blocs. Pour sauvegarder vos données, vous devez démonter le pod d'application du stockage, le monter sur votre pod de sauvegarde, sauvegarder les données et monter à nouveau le stockage sur votre pod d'application.

Pour rendre vos données hautement disponibles et protéger votre application en cas de défaillance d'une zone, configurez une deuxième instance Object Storage et répliquez les données entre les différentes zones. Si vous devez restaurer des données à partir de votre instance Object Storage, utilisez le pod de restauration fourni avec la charte Helm.

Copie de données vers et depuis des pods et des conteneurs

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 de votre cluster.

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

Lorsque vous exécutez la commande kubectl cp, si vous ne spécifiez pas de conteneur avec -c, la commande utilise le premier conteneur disponible dans le pod.

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

Référence des classes de stockage

Bronze

Nom
ibmc-block-bronze
ibmc-block-retain-bronze
Type
Stockage d'endurance
Système de fichiers
ext4
IOPS par gigaoctet
2
Plage de tailles en gigaoctets
20 - 12000 Gi
Disque dur
SSD
Stratégie de récupération
ibmc-block-bronze : Supprimer
ibmc-block-retain-bronze : Conserver

Silver

Nom
ibmc-block-silver
ibmc-block-retain-silver
Type
Stockage d'endurance
Système de fichiers
ext4
IOPS par gigaoctet
4
Plage de tailles en gigaoctets
20 - 12000 Gi
Disque dur
SSD
Stratégie de récupération
ibmc-block-silver : Supprimer
ibmc-block-retain-silver : Conserver

Gold

Nom
ibmc-block-gold
ibmc-block-retain-gold
Type
Stockage d'endurance
Système de fichiers
ext4
IOPS par gigaoctet
10
Plage de tailles en gigaoctets
20 - 4000 Gi
Disque dur
SSD
Stratégie de récupération
ibmc-block-gold : Supprimer
ibmc-block-retain-gold : Conserver

Personnalisé

Nom
ibmc-block-custom
ibmc-block-retain-custom
Type
Système de fichiers de performances
ext4
IOPS et taille
Plage de taille en gigaoctets / plage IOPS en multiples de 100
  • 20-39 Gi / 100-1000 IOPS
  • 40-79 Gi / 100-2000 IOPS
  • 80-99 Gi / 100-4000 IOPS
  • 100-499 Gi / 100-6000 IOPS
  • 500-999 Gi / 100-10000 IOPS
  • 1000-1999 Gi / 100-20000 IOPS
  • 2000-2999 Gi / 200-40000 IOPS
  • 3000-3999 Gi / 200-48000 IOPS
  • 4000-7999 Gi / 300-48000 IOPS
  • 8000-9999 Gi / 500-48000 IOPS
  • 10000-12000 Gi / 1000-48000 IOPS
Disque dur
Rapport IOPS/gigaoctet qui détermine le type de disque dur mis à disposition. Pour déterminer ce rapport, divisez la valeur des IOPS par la taille de votre stockage.
Exemple : Vous avez choisi 500Gi de stockage avec 100 IOPS. Votre rapport est 0,2 (100 IOPS/500Gi).
Présentation des types de disque dur par ratio :
  • Inférieur ou égal à 0,3 : SATA
  • Supérieur à 0,3 : SSD
Stratégie de récupération
ibmc-block-custom : Supprimer
ibmc-block-retain-custom : Conserver

Exemples de classes de stockage personnalisées

Vous pouvez créer une classe de stockage personnalisée et l'utiliser dans votre PVC.

IBM Cloud Kubernetes Service fournit des classes de stockage prédéfinies pour mettre à disposition du stockage par blocs avec une configuration et un niveau particuliers. Parfois, vous pouvez souhaiter stocker une mémoire avec une configuration différente qui n'est pas couverte dans les classes de stockage prédéfinies. Vous pouvez utiliser les exemples de cette rubrique pour trouver des modèles de classes de stockage personnalisées.

Pour créer votre classe de stockage personnalisée, voir Personnalisation d'une classe de stockage. Utilisez ensuite votre classe de stockage personnalisée dans votre PVC.

Création de stockage tenant compte de la topologie

Pour utiliser du stockage par blocs dans un cluster multizone, votre pod doit être planifié dans la même zone que votre instance de stockage par blocs pour que vous puissiez effectuer des opérations de lecture et d'écriture dans le volume. Avant l'introduction de ce type de planification par Kubernetes, la mise à disposition dynamique de votre stockage créait automatiquement l'instance de stockage par blocs dès qu'une PVC était créée. Ensuite, lorsque vous créiez votre pod, le planificateur de Kubernetes essayait de déployer le pod dans le même centre de données que votre instance de stockage par blocs.

La création de l'instance de stockage par blocs sans connaître les contraintes liées au pod peut entraîner des résultats indésirables. Par exemple, il peut arriver que votre pod ne puisse pas être planifié sur le même noeud worker que votre stockage car ce noeud ne dispose pas de ressources suffisantes ou une tache lui est appliquée et il n'autorise pas la planification du pod. Avec une planification de volume tenant compte de la topologie, la création de l'instance de stockage par blocs est différée jusqu'à ce que le premier pod utilisant le stockage soit créé.

Pour utiliser la planification de volume tenant compte de la topologie, vérifiez que vous avez installé le plug-in IBM Cloud Block Storage version 1.2.0 ou ultérieure.

Les exemples suivants montrent comment créer des classes de stockage qui retardent la création de l'instance de stockage par blocs jusqu'à ce que le premier pod utilisant ce stockage soit prêt à être planifié. Pour différer la création, vous devez inclure l'option volumeBindingMode: WaitForFirstConsumer. Si vous n'incluez pas cette option, volumeBindingMode est automatiquement défini sur Immediate et l'instance de stockage de bloc est créée lorsque vous créez le PVC.

Exemple relatif au stockage par blocs de type Endurance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-bronze-delayed
  parameters:
    billingType: hourly
    classVersion: "2"
    fsType: ext4
    iopsPerGB: "2"
    sizeRange: '[20-12000]Gi'
    type: Endurance
  provisioner: ibm.io/ibmc-block
  reclaimPolicy: Delete
  volumeBindingMode: WaitForFirstConsumer

Exemple relatif au stockage par blocs de type Performance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-performance-storageclass
  labels:
  kubernetes.io/cluster-service: "true"
  provisioner: ibm.io/ibmc-block
  parameters:
    billingType: "hourly"
    classVersion: "2"
    sizeIOPSRange: |-
    "[20-39]Gi:[100-1000]"
    "[40-79]Gi:[100-2000]"
    "[80-99]Gi:[100-4000]"
    "[100-499]Gi:[100-6000]"
    "[500-999]Gi:[100-10000]"
    "[1000-1999]Gi:[100-20000]"
    "[2000-2999]Gi:[200-40000]"
    "[3000-3999]Gi:[200-48000]"
    "[4000-7999]Gi:[300-48000]"
    "[8000-9999]Gi:[500-48000]"
    "[10000-12000]Gi:[1000-48000]"
    type: "Performance"
  reclaimPolicy: Delete
  volumeBindingMode: WaitForFirstConsumer

Spécification de la zone et de la région

Si vous souhaitez créer votre stockage par blocs dans une zone précise, vous pouvez spécifier la zone et la région dans une classe de stockage personnalisée.

Utilisez la classe de stockage personnalisée avec le plug-in IBM Cloud Block Storage version 1.0.0 ou pour mettre à disposition du stockage par blocs de manière statique dans une zone spécifique. Dans tous les autres cas, indiquez la zone directement dans votre PVC.

Le fichier .yaml suivant personnalise une classe de stockage basée sur la classe de stockage ibm-block-silver sans retain : le type type est "Endurance", le nombre d'IOPS par gigaoctet (iopsPerGB) est 4, la plage de tailles (sizeRange) est "[20-12000]Gi" et la règle de récupération (reclaimPolicy) est définie par "Delete". La zone indiquée est dal12. Pour utiliser une autre classe de stockage comme référence, voir la rubrique Référence des classes de stockage.

Créez la classe de stockage dans la même région et dans la même zone que votre cluster et vos noeuds worker. Pour obtenir la région de votre cluster, exécutez ibmcloud ks cluster get --cluster <cluster_name_or_ID> et recherchez le préfixe de région dans URL principale, tel que eu-de dans https://c2.eu-de.containers.cloud.ibm.com:11111. Pour obtenir la zone de votre noeud worker, exécutez ibmcloud ks worker ls --cluster <cluster_name_or_ID>.

Exemple relatif au stockage par blocs de type Endurance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-silver-mycustom-storageclass
  labels:
    kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
  zone: "dal12"
  region: "us-south"
  type: "Endurance"
  iopsPerGB: "4"
  sizeRange: "[20-12000]Gi"
reclaimPolicy: "Delete"

Exemple relatif au stockage par blocs de type Performance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: ibmc-block-performance-storageclass
labels:
  kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
  zone: "dal12"
  region: "us-south"
  type: "Performance"
  sizeIOPSRange: |-
  "[20-39]Gi:[100-1000]"
  "[40-79]Gi:[100-2000]"
  "[80-99]Gi:[100-4000]"
  "[100-499]Gi:[100-6000]"
  "[500-999]Gi:[100-10000]"
  "[1000-1999]Gi:[100-20000]"
  "[2000-2999]Gi:[200-40000]"
  "[3000-3999]Gi:[200-48000]"
  "[4000-7999]Gi:[300-48000]"
  "[8000-9999]Gi:[500-48000]"
  "[10000-12000]Gi:[1000-48000]"
reclaimPolicy: "Delete"

Montage de stockage par blocs avec un système de fichiers XFS

Les exemples suivants illustrent la création d'une classe de stockage qui met à disposition du stockage par blocs avec un système de fichiers XFS.

Exemple relatif au stockage par blocs de type Endurance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-custom-xfs
labels:
  addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
  type: "Endurance"
  iopsPerGB: "4"
  sizeRange: "[20-12000]Gi"
  fsType: "xfs"
reclaimPolicy: "Delete"

Exemple relatif au stockage par blocs de type Performance.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ibmc-block-custom-xfs
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
  classVersion: "2"
  type: "Performance"
  sizeIOPSRange: |-
    [20-39]Gi:[100-1000]
    [40-79]Gi:[100-2000]
    [80-99]Gi:[100-4000]
    [100-499]Gi:[100-6000]
    [500-999]Gi:[100-10000]
    [1000-1999]Gi:[100-20000]
    [2000-2999]Gi:[200-40000]
    [3000-3999]Gi:[200-48000]
    [4000-7999]Gi:[300-48000]
    [8000-9999]Gi:[500-48000]
    [10000-12000]Gi:[1000-48000]
  fsType: "xfs"
reclaimPolicy: "Delete"

Retrait de stockage persistant d'un cluster

Lorsque vous configurez du stockage persistant dans votre cluster, vous disposez de trois composants principaux : la réservation de volume persistant (PVC) Kubernetes qui sollicite le stockage, le volume persistant (PV) Kubernetes qui est monté sur un pod et décrit dans la PVC, et l'instance d'infrastructure IBM Cloud, comme par exemple du stockage de fichiers ou du stockage par blocs classiques. Selon la façon dont vous avez créé votre stockage, il vous faudra peut-être supprimer les trois composants séparément.

Description de vos options de retrait de stockage

La procédure de retrait du stockage persistant de votre compte IBM Cloud varie en fonction de la façon dont vous avez mis à disposition le stockage et des composants que vous avez déjà retirés.

Mon stockage persistant est-il supprimé lorsque je supprime mon cluster?
Lors de la suppression du cluster, vous avez la possibilité de retirer votre stockage persistant. Toutefois, selon la façon dont votre stockage a été mis à disposition, la procédure de retrait de votre stockage peut ne pas inclure tous les composants de stockage. Si vous avez provisionné dynamiquement du stockage avec une classe de stockage définissant l'option « reclaimPolicy: Delete », votre PVC, votre PV et l'instance de stockage sont automatiquement supprimés lorsque vous supprimez le cluster. Pour le stockage provisionné de manière statique ou celui que vous avez provisionné avec une classe de stockage définissant l'option « reclaimPolicy: Retain », le PVC et le PV sont supprimés lorsque vous supprimez le cluster, mais votre instance de stockage et vos données sont conservées. L'utilisation de votre instance de stockage vous est toujours facturée. Par ailleurs, si vous avez supprimé votre cluster alors qu'il n'était pas à l'état sain, le stockage peut encore exister, même si vous choisissez de le supprimer.
Comment puis-je supprimer l'espace de stockage tout en conservant mon cluster?
Lorsque vous avez mis à disposition le stockage de façon dynamique avec une classe de stockage indiquant reclaimPolicy: Delete, vous pouvez retirer la réservation de volume persistant (PVC) pour lancer le processus de suppression de votre stockage persistant. Votre réservation de volume persistant (PVC), votre volume persistant (PV) et votre instance de stockage sont automatiquement retirés. Pour le stockage provisionné de manière statique ou celui que vous avez provisionné avec une classe de stockage définissant l'option « reclaimPolicy: Retain », vous devez supprimer manuellement le PVC, le PV et l'instance de stockage afin d'éviter toute facturation supplémentaire.
Comment la facturation prend-elle fin une fois que j'ai supprimé mon espace de stockage?
Selon les composants de stockage que vous supprimez et le moment auquel vous les supprimez, il se peut que le cycle de facturation ne s'arrête pas immédiatement. Si vous supprimez la réservation de volume persistant et le volume persistant, mais pas l'instance dans votre compte IBM Cloud, cette instance continue à exister et vous êtes facturé pour son utilisation.

Si vous supprimez la PVC, le PV et l'instance de stockage, le cycle de facturation s'arrête en fonction du type de facturation (billingType) que vous avez choisi lors de la mise à disposition de votre stockage et de la façon dont vous avez choisi de supprimer le stockage.

  • Lorsque vous supprimez manuellement l'instance de stockage persistant depuis la console IBM Cloud ou l'interface de ligne de commande (CLI), la facturation prend fin comme suit :

    • Stockage horaire : la facturation cesse immédiatement. Une fois votre stockage annulé, il se peut que votre instance de stockage soit toujours visible dans la console pendant une durée maximale de 72 heures.
    • Stockage mensuel : vous pouvez choisir l'option Annulation immédiate ou Annulation à la date anniversaire. Dans les deux cas, la facturation se poursuit jusqu'à la fin du cycle de facturation en cours et cesse pour le cycle de facturation suivant. Une fois votre stockage annulé, il se peut que votre instance de stockage soit toujours visible dans la console ou l'interface de ligne de commande pendant une durée maximale de 72 heures.
    • Annulation immédiate : choisissez cette option pour retirer immédiatement votre stockage. Ni vous ni vos utilisateurs ne pouvez plus utiliser le stockage ou récupérer les données.
    • Annulation à la date anniversaire : choisissez cette option pour annuler votre stockage à la date anniversaire suivante. Vos instances de stockage restent actives jusqu'à la date anniversaire suivante et vous pouvez continuer de les utiliser jusqu'à cette date, par exemple, afin de permettre à votre équipe de créer des copies de sauvegarde de vos données.
  • Lorsque vous avez mis à disposition le stockage de façon dynamique avec une classe de stockage indiquant reclaimPolicy: Delete que vous choisissez de retirer la réservation de volume persistant (PVC), le volume persistant (PV) et l'instance de stockage sont immédiatement retirés. Pour le stockage facturé à l'heure, la facturation s'arrête immédiatement. Pour le stockage facturé au mois, vous êtes facturé jusqu'à la fin du mois en cours. Une fois votre stockage retiré et la facturation arrêtée, il se peut que votre instance de stockage soit toujours visible dans la console ou l'interface de ligne de commande pendant une durée maximale de 72 heures.

Que dois-je savoir avant de supprimer un espace de stockage persistant?
Lorsque vous nettoyez du stockage persistant, vous supprimez toutes les données qui y sont stockées. Si vous avez besoin d'une copie des données, effectuez une sauvegarde.
J'ai supprimé mon instance de stockage. Pourquoi est-ce que je vois toujours mon instance?
Une fois que vous avez retiré le stockage persistant, il peut s'écouler jusqu'à 72 heures avant que le retrait soit total et que le stockage disparaisse de votre console ou interface de ligne de commande IBM Cloud.

Nettoyage de stockage persistant

Retirez la PVC, le PV et l'instance de stockage de votre compte IBM Cloud afin d'éviter d'autres frais liés à votre stockage persistant.

Avant de commencer :

Pour nettoyer des données persistantes :

  1. Répertoriez les réservations de volume persistant (PVC) figurant dans votre cluster et notez le nom de la PVC (NAME), la classe de stockage (STORAGECLASS) et le nom du volume persistant lié à la PVC indiqué sous VOLUME.

    kubectl get pvc
    

    Exemple de sortie

    NAME                  STATUS    VOLUME                                     CAPACITY   ACCESSMODES   STORAGECLASS            AGE
    claim1   Bound     pvc-06886b77-102b-11e8-968a-f6612bb731fb   20Gi       RWO           class       78d
    claim2     Bound     pvc-457a2b96-fafc-11e7-8ff9-b6c8f770356c   4Gi        RWX           class 105d
    claim3      Bound     pvc-1efef0ba-0c48-11e8-968a-f6612bb731fb   24Gi       RWX           class        83d
    
  2. Passez en revue la ReclaimPolicy et le billingType correspondant à la classe de stockage.

    kubectl describe storageclass <storageclass_name>
    

    Si la politique de récupération indique Delete, votre volume persistant et le stockage physique sont supprimés en même temps que la PVC. Si la politique de récupération indique Retain ou si vous avez mis à disposition votre stockage sans classe de stockage, votre volume persistant et votre stockage physique ne sont pas supprimés en même temps que la PVC. Vous devez supprimer la PVC, le volume persistant et le stockage physique séparément.

    Si vous êtes facturé tous les mois pour le stockage, vous êtes redevable pour le mois complet, même si vous supprimez le stockage avant la fin du cycle de facturation.

  3. Supprimez les pods qui montent la PVC. Répertoriez les pods qui montent la PVC. Si aucun pod n'est retourné dans votre sortie CLI, vous n'avez pas de pod qui utilise le PVC.

    kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
    

    Exemple de sortie

    depl-12345-prz7b:    claim1
    
  4. Supprimez le pod utilisant la PVC. Si le pod fait partie d'un déploiement, retirez ce déploiement.

    kubectl delete pod <pod_name>
    
  5. Vérifiez que le pod est supprimé.

    kubectl get pods
    
  6. Supprimez la PVC.

    kubectl delete pvc <pvc_name>
    
  7. Examinez le statut de votre volume persistant. Utilisez le nom du volume persistant que vous avez récupéré précédemment sous VOLUME. Lorsque vous supprimez la PVC, le volume persistant lié à cette PVC est libéré. Selon le mode de mise à disposition de votre stockage, votre volume persistant va passer à l'état Deleting (suppression) si sa suppression est automatique ou à l'état Released (libéré) si vous devez le supprimer manuellement. Remarque : pour les volumes persistants supprimés automatiquement, l'état peut brièvement indiquer Released avant sa suppression définitive. Exécutez à nouveau la commande au bout de quelques minutes pour voir si le volume persistant est supprimé.

    kubectl get pv <pv_name>
    
  8. Si votre volume persistant n'est pas supprimé, supprimez-le manuellement.

    kubectl delete pv <pv_name>
    
  9. Vérifiez que le volume persistant (PV) est supprimé.

    kubectl get pv
    
  10. Répertoriez l'instance de stockage physique que votre volume persistant a pointé et notez la id de l'instance de stockage physique.

    ibmcloud sl block volume-list --columns id --columns notes | grep <pv_name>
    

    Exemple de sortie

    12345678   {"plugin":"ibmcloud-block-storage-plugin-689df949d6-4n9qg","region":"us-south","cluster":"aa1a11a1a11b2b2bb22b22222c3c3333","type":"Endurance","ns":"default","pvc":"block-storage-pvc","pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7","storageclass":"ibmc-block-silver","reclaim":"Delete"}
    

    Description des informations indiquées sous notes :

    "plugin":"ibm-file-plugin-5b55b7b77b-55bb7"
    Le plug-in de stockage utilisé par le cluster.
    "region":"us-south"
    Région dans laquelle se trouve votre cluster.
    "cluster":"aa1a11a1a11b2b2bb22b22222c3c3333"
    L'ID du cluster associé à l'instance de stockage.
    "type":"Endurance"
    Le type de stockage de fichier ou de bloc, Endurance ou Performance.
    "ns":"default"
    L'espace de nom sur lequel l'instance de stockage est déployée.
    "pvc":"block-storage-pvc"
    Le nom du circuit virtuel permanent associé à l'instance de stockage.
    "pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7"
    Le PV qui est associé à l'instance de stockage.
    "storageclass":"ibmc-file-gold"
    Type de classe de stockage: bronze, argent, or ou personnalisé.
  11. Retirez l'instance de stockage physique.

    ibmcloud sl block volume-cancel <classic_block_id>
    
  12. Vérifiez que l'instance de stockage physique est supprimée.

L'exécution du processus de suppression peut durer jusqu'à 72 heures.

ibmcloud sl block volume-list

Configuration de la surveillance pour les volumes persistants de connectivité limited

Lorsque vous créez un pod et une réservation de volume persistant qui utilisent Block Storage for Classic, 2 ports cible sont affectés au volume persistant (PV) sous-jacent sur lequel le stockage est monté. Plusieurs ports cible permettent la reprise en ligne en cas de panne d'un port.

Dans les versions précédentes du pilote Block Storage for Classic, l'impossibilité de trouver 2 ports cible lors du montage d'un volume persistant lors du déploiement a provoqué l'échec du déploiement.

Toutefois, parfois, par exemple pendant les fenêtres de maintenance IaaS, vous pouvez souhaiter que vos pods soient déployés avec succès avec un seul port cible disponible sur le volume persistant.

A partir de la version 2.4.12 du pilote Block Storage for Classic, les pods seront déployés avec succès même si un seul port cible peut être affecté par le volume persistant. En plus de ce changement de comportement, les volumes persistants incluent désormais un nouveau libellé pour indiquer la disponibilité du réseau où un libellé de healthy signifie que 2 ports cible ont été affectés et limited indique qu'un seul port cible a pu être affecté lors du montage.

Pour surveiller les instances dans lesquelles la connectivité du pod à Block Storage for Classic est limitée, vous pouvez configurer une alerte personnalisée qui recherche le libellé limited. Configurez ensuite le seuil d'alerte sur >0.

  1. Dans le tableau de bord IBM Cloud Monitoring, sélectionnez Nouvelle alerte > Métrique.

  2. Sélectionnez Prom query et entrez kube_persistentvolume_labels{label_ibm_io_pv_connectivity_status='limited'}.

  3. Définissez le seuil sur >0 et la gravité à utiliser pour cette alerte.

  4. Sélectionnez votre canal de notification et sauvegardez l'alerte.

Attribution de profils de confiance au stockage en bloc

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.