Configurazione di Block Storage for VPC

Block Storage for VPC fornisce uno storage di dati ad alte prestazioni montato su hypervisor per le istanze di server virtuali che possono essere fornite all'interno di una VPC.

Puoi scegliere tra i livelli di archiviazione predefiniti con dimensioni in GB e IOPS che soddisfano i requisiti dei tuoi carichi di lavoro. Per appurare se Block Storage for VPC è l'opzione di archiviazione giusta per te, vedi Scelta di una soluzione di archiviazione. Per informazioni sui prezzi, vedi Prezzi per Block Storage for VPC.

  • Il componente aggiuntivo cluster Block Storage for VPC è abilitato per impostazione predefinita nei cluster VPC.
  • Se disattivi Block Storage for VPC l'add-on, questo rimarrà disattivato finché non lo riattiverai. Non è abilitato quando si aggiorna o si aggiorna il master del cluster.

Introduzione rapida per IBM Cloud Block Storage for VPC

In questa guida rapida, si crea un volume 10Gi 5IOPS tier Block Storage for VPC nel cluster creando un PVC per il provisioning dinamico del volume. Quindi, crei una distribuzione dell'applicazione che monta la tua PVC.

Ora è possibile scegliere una classe di archiviazione di seconda generazione.

I Block Storage for VPC volumi possono essere montati da più pod, purché tali pod siano pianificati sullo stesso nodo.

  1. Crea un file per la tua PVC e denominalo pvc.yaml. Scegliete tra una classe di archiviazione di prima generazione e una di seconda generazione.

    Esempio di prima generazione che utilizza la classe di archiviazione ibmc-vpc-block-5iops-tier:

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

    Esempio di seconda generazione che utilizza la classe di archiviazione ibmc-vpc-block-sdp:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: ibmc-vpc-block-sdp
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Crea la PVC nel tuo cluster.

    kubectl apply -f pvc.yaml
    
  3. Dopo aver collegato la tua PVC, crea una distribuzione dell'applicazione che utilizza tale PVC. Crea un file per la tua distribuzione e denominalo deployment.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
        name: my-deployment
        labels:
          app: my-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - image: ngnix # Your containerized app image.
            name: my-container
            volumeMounts:
            - name: my-volume
              mountPath: /mount-path
          volumes:
          - name: my-volume
            persistentVolumeClaim:
              claimName: my-pvc
    
  4. Crea la distribuzione nel tuo cluster.

    kubectl apply -f deployment.yaml
    

Per ulteriori informazioni, vedi i seguenti link.

Aggiunta di Block Storage for VPC alle tue applicazioni

Scegli il tuo profilo Block Storage for VPC e crea un'attestazione del volume persistente per eseguire dinamicamente il provisioning di Block Storage for VPC per il tuo cluster. Il provisioning dinamico crea automaticamente il volume persistente corrispondente e ordina il dispositivo di archiviazione fisica nel tuo account IBM Cloud.

  1. Decidi in merito al profilo di Block Storage for VPC che risponde meglio ai requisiti di capacità e prestazioni che desideri.

  2. Seleziona la classe di archiviazione corrispondente per il tuo profilo di Block Storage for VPC.

    Tutte le classi di archiviazione predefinite IBM configurano Block Storage for VPC con un file system ext4 per impostazione predefinita. Se vuoi utilizzare un file system differente, come ad esempio xfs o ext3, crea una classe di archiviazione personalizzata.

    • 10 IOPS/GB: ibmc-vpc-block-10iops-tier o ibmc-vpc-block-retain-10iops-tier
    • 5 IOPS/GB: ibmc-vpc-block-5iops-tier o ibmc-vpc-block-retain-5iops-tier
    • 3 IOPS/GB: ibmc-vpc-block-general-purpose o ibmc-vpc-block-retain-general-purpose
    • Personalizzato: ibmc-vpc-block-custom o ibmc-vpc-block-retain-custom
  3. Decidi in merito alla tua configurazione di Block Storage for VPC.

    1. Scegli una dimensione per la tua archiviazione. Assicurati che la dimensione sia supportata dal profilo di Block Storage for VPC che hai scelto.
    2. Scegli se vuoi mantenere i tuoi dati dopo l'eliminazione del cluster o dell'attestazione del volume persistente (PVC, persistent volume claim).
      • Se vuoi conservare i tuoi dati, scegli una classe di archiviazione retain. Quando elimini la PVC, viene eliminata solo la PVC. Il volume persistente (o PV, Persistent Volume), il dispositivo di archiviazione fisico nel tuo account IBM Cloud e i tuoi dati permangono. Per riacquisire l'archiviazione e utilizzarla di nuovo nel tuo cluster, devi rimuovere il PV e attenerti alla procedura per utilizzare il Block Storage for VPC esistente.
      • Se vuoi che il PV, i dati e il tuo dispositivo Block Storage for VPC fisico vengano eliminati quando elimini la PVC, scegli una classe di archiviazione senza retain.
  4. Crea un file di configurazione per definire la tua attestazione del volume persistente (o PVC, persistent volume claim) e salva la configurazione come un file YAML.

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

    kubectl apply -f pvc.yaml
    
  6. Verifica che la tua PVC sia stata creata e associata al PV. Questo processo può richiedere qualche minuto.

    kubectl describe pvc <pvc_name>
    

    Output di esempio

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: <deployment_name>
      labels:
        app: <deployment_label>
    spec:
      selector:
        matchLabels:
          app: <app_name>
      template:
        metadata:
          labels:
            app: <app_name>
        spec:
          containers:
          - image: <image_name>
            name: <container_name>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    labels.app
    Nella sezione metadata, immetti un'etichetta per la distribuzione.
    matchLabels.app e labels.app
    Nelle sezioni spec selector e template metadata, immetti un'etichetta per la tua applicazione.
    image
    Specifica il nome dell'immagine del contenitore che vuoi utilizzare. Per elencare le immagini disponibili nel tuo account IBM Cloud Container Registry, esegui ibmcloud cr image-list.
    name
    Specifica il nome del contenitore che vuoi distribuire nel tuo pod.
    mountPath
    Nella sezione container volume mounts, specifica il percorso assoluto della directory in cui viene montata la PVC all'interno del contenitore.
    name
    Nella sezione container volume mounts, immetti il nome del volume per montare il tuo pod. Puoi immettere qualsiasi nome tu voglia.
    name
    Nella sezione volumes, immetti il nome del volume da montare sul tuo pod. In genere questo nome è lo stesso di volumeMounts.name.
    claimName
    Nella sezione volumes persistent volume claim, immetti il nome della PVC che hai creato in precedenza.
  8. Crea la distribuzione nel tuo cluster.

    kubectl apply -f deployment.yaml
    
  9. Verifica che la PVC sia stata montata correttamente sulla tua applicazione. Potrebbe volerci qualche minuto perché i tuoi pod entrino in uno stato Running.

    Durante la distribuzione della tua applicazione, potresti vedere degli errori Unable to mount volumes intermittenti nella sezione Events del tuo output della CLI. Il componente aggiuntivo del cluster Block Storage for VPC riprova automaticamente a montare lo storage sulle applicazioni. Attendi qualche minuto perché l'archiviazione venga montata sulla tua applicazione.

    kubectl describe deployment <deployment_name>
    

    Output di esempio

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

Utilizzo di un'istanza Block Storage for VPC esistente

Se hai un dispositivo Block Storage for VPC fisico esistente che vuoi usare nel tuo cluster, puoi creare manualmente il PV e la PVC per eseguire in modo statico il provisioning dell'archiviazione.

Puoi collegare un volume a un solo nodo di lavoro. Affinché il collegamento abbia esito positivo, assicurati che il volume si trovi nella stessa zona del nodo di lavoro.

  1. Determina il volume che vuoi collegare a un nodo di lavoro nel tuo cluster VPC. Prendi nota dell'ID volume.

    ibmcloud is volumes
    
  2. Elenca i dettagli del tuo volume. Prendi nota dei valori Size, Zone e IOPS. Questi valori vengono utilizzati per creare il tuo PV.

    ibmcloud is volume <volume_id>
    
  3. Richiama un elenco di nodi di lavoro nel tuo cluster VPC. Prendi nota della Zona del nodo di lavoro che si trova nella stessa zona del tuo volume di archiviazione.

    ibmcloud ks worker ls -c <cluster_name>
    
  4. Facoltativo: se hai eseguito il provisioning della tua istanza Block Storage for VPC fisica utilizzando una classe di archiviazione retain, il PV e l'archiviazione fisica non vengono rimossi quando rimuovi la PVC. Per utilizzare il tuo dispositivo Block Storage for VPC fisico nel tuo cluster, devi prima rimuovere il PV esistente.

    1. Elenca i PV nel tuo cluster e cerca il PV che appartiene al tuo dispositivo Block Storage for VPC. Il PV è in uno stato released.

      kubectl get pv
      
    2. Rimuovi il PV.

      kubectl delete pv <pv_name>
      
  5. Crea un file di configurazione per il tuo PV. Includi i valori ID, Size, Zone e IOPS che hai richiamato in precedenza.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: <pv_name> # Example: my-persistent-volume
    spec:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: <vpc_block_storage_size> # Example: 20Gi
      csi:
        driver: vpc.block.csi.ibm.io
        fsType: ext4
        volumeAttributes:
          iops: "<vpc_block_storage_iops>" # Example: "3000"
          volumeId: <vpc_block_storage_ID> # Example: a1a11a1a-a111-1111-1a11-1111a11a1a11
          zone: "<vpc_block_zone>" # Example: "eu-de-3"
          region: "<vpc_block_region>"
        volumeHandle: <vpc_block_storage_ID>
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: failure-domain.beta.kubernetes.io/zone
              operator: In
              values:
              - <worker_node_zone> # Example: eu-de-3
            - key: failure-domain.beta.kubernetes.io/region
              operator: In
              values:
              - <worker_node_region> # Example: eu-de
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <worker_node_primary_IP>
      persistentVolumeReclaimPolicy: Retain
      storageClassName: ""
      volumeMode: Filesystem
    
    name
    Nella sezione metadata, immetti un nome per il tuo PV.
    storage
    Nella sezione spec capacity, immetti la dimensione del tuo volume di Block Storage for VPC in gigabyte (Gi) che hai richiamato in precedenza. Ad esempio, se la dimensione del dispositivo è di 100 GB, inserire 100Gi.
    iops
    Nella sezione spec CSI volume attributes, immetti il numero massimo di IOPS del volume di Block Storage for VPC che hai richiamato in precedenza.
    zone
    Nella sezione spec CSI volume attributes, immetti la zona di blocco VPC che corrisponde all'ubicazione che hai richiamato in precedenza. Ad esempio, se la vostra località è Washington DC-1, utilizzate us-east-1 come zona. Per elencare le zone disponibili, esegui ibmcloud is zones. Per trovare una panoramica delle zone e delle ubicazioni VPC disponibili, vedi Creazione di una VPC in una regione differente. Indicare il parametro "region" quando è specificato "zone".
    region
    L'area del nodo worker a cui si vuole collegare lo storage.
    worker_node_primary_IP
    L'IP primario del nodo di lavoro a cui vuoi collegare l'archiviazione. Puoi trovare l'indirizzo IP primario del nodo di lavoro eseguendo ibmcloud ks worker ls.
    volumeId e spec.csi.volumeHandle
    Nella sezione spec CSI volume attributes, immetti l'ID del volume di Block Storage for VPC che hai richiamato in precedenza.
    storageClassName
    Per il nome della classe di archiviazione nella specifica, immetti una stringa vuota.
    matchExpressions
    Nella sezione spec node affinity, immetti i termini del selettore del nodo in modo che corrispondano alla zona. Per la chiave, immettere failure-domain.beta.kubernetes.io/zone. Per il valore, immetti la zona del tuo nodo di lavoro in cui vuoi collegare l'archiviazione.
    matchExpressions
    Nella sezione spec node affinity, immetti i termini del selettore del nodo in modo che corrispondano alla regione. Per la chiave, immettere failure-domain.beta.kubernetes.io/region. Per il valore, immetti la regione del nodo di lavoro in cui vuoi collegare l'archiviazione.
  6. Crea il PV nel tuo cluster.

    kubectl apply -f pv.yaml
    
  7. Verifica che il PV venga creato nel tuo cluster.

    kubectl get pv
    
  8. Crea un altro file di configurazione per la tua PVC. Affinché la PVC corrisponda al PV che hai creato in precedenza, devi scegliere lo stesso valore per la dimensione dell'archiviazione e la modalità di accesso. Nel tuo campo della classe di archiviazione, immetti un valore stringa vuoto per una corrispondenza al tuo PV. Se uno di questi campi non corrisponde al PV, vengono creati automaticamente un nuovo PV e un'istanza Block Storage for VPC tramite il provisioning dinamico.

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

    kubectl apply -f pvc.yaml
    
  10. Verifica che la tua PVC sia stata creata e collegata al PV che hai creato in precedenza. Questo processo può richiedere qualche minuto.

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

Aggiornamento del componente aggiuntivo del cluster Block Storage for VPC

È possibile aggiornare il componente Block Storage for VPC aggiuntivo del cluster utilizzando il addon update comando.

Prima di aggiornare il componente aggiuntivo, consultare il log delle modifiche.

Prima di aggiornare a una release '5.x da una release precedente, non è necessario avere snapshot di volume in stato 'failure. Per ulteriori informazioni, consulta Perché non riesco a eliminare le mie risorse di Block Storage for VPC snapshot del volume?.

  1. Verifica se è disponibile un aggiornamento. Se è disponibile, la versione del plugin viene contrassegnata con un asterisco e viene visualizzata la versione più recente. Prendi nota dell'ultima versione poiché questo valore verrà utilizzato in seguito.

    ibmcloud ks cluster addons --cluster <cluster_name_or_ID>
    

    Output di esempio

    Name                   Version                 Health State   Health Status   
    vpc-block-csi-driver   1.0.0* (2.0.0 latest)   normal         Addon Ready
    
  2. Aggiornare il componente aggiuntivo. Notare che i comandi di aggiornamento sono diversi a seconda della versione installata.

    5.0 e versioni successive Eseguire il comando addon update.

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

    Tutte le versioni precedenti alla versione 5.0 Disabilita e abilita il componente aggiuntivo.

    ibmcloud ks cluster addon disable vpc-block-csi-driver --cluster CLUSTER [-f] [-q]
    
    ibmcloud ks cluster addon enable vpc-block-csi-driver --cluster CLUSTER [-f] [-q] [--version VERSION] [-y]
    
  3. Verifica che lo stato del componente aggiuntivo sia Addon Ready. Perché il componente aggiuntivo sia pronto potrebbero essere richiesti alcuni minuti.

    ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
    

    Output di esempio

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

    Se si utilizza una classe di archiviazione predefinita diversa dalla classe ibmc-vpc-block-10iops-tier di archiviazione, è necessario modificare le impostazioni predefinite della classe di addon-vpc-block-csi-driver-configmapConfigMap archiviazione in. Per ulteriori informazioni, consultare Modifica della classe di memoria predefinita.

  4. Se hai creato le tue classi di archiviazione in base alle classi di archiviazione Block Storage for VPC predefinite, devi ricreare tali classi di archiviazione per aggiornare i parametri. Per ulteriori informazioni, vedi Nuova creazione delle tue proprie classi di archiviazione dopo l'aggiornamento alla versione 4.2.

Ricreazione delle proprie classi di archiviazione dopo l'aggiornamento alla versione 4.2

Con la versione 4.2, i parametri predefiniti per le classi di archiviazione sono cambiati. I parametri sizeRange o iopsRange non vengono più utilizzati. Se è stata creata una delle proprie classi di memoria che utilizzano questi parametri, è necessario modificare le proprie classi di memoria per rimuovere tali parametri. Per modificare i parametri nelle proprie classi di archiviazione, è necessario eliminarli e ricrearli. In precedenza, sizeRange e iopsRange venivano forniti come informazioni di riferimento per ciascuna classe di archiviazione. Con la versione 4.2, questi riferimenti sono stati rimossi. Ora, per informazioni sui profili di archiviazione blocchi, le dimensioni e gli IOP, vedi il riferimento profili di archiviazione blocchi.

  1. Per trovare i dettagli delle tue proprie classi di archiviazione, immetti il seguente comando.

    kubectl describe sc STORAGECLASS
    
  2. Se la classe di archiviazione utilizza sizeRange o iopsRange, richiamare la classe di archiviazione YAML e salvarla in un file.

    kubectl get sc STORAGECLASS -o yaml
    
  3. Nel file salvato dall'output del comando precedente, rimuovere i parametri sizeRange o iopsRange.

  4. Elimina la classe di archiviazione dal tuo cluster.

    kubectl delete sc STORAGECLASS
    
  5. Ricrea la classe di archiviazione nel tuo cluster utilizzando il file che hai creato precedentemente.

    kubectl apply -f custom-storage-class.yaml
    

Configurazione della crittografia per Block Storage for VPC

Utilizza un provider di servizi di gestione delle chiavi (KMS), come IBM® Key Protect, per creare una chiave root privata da utilizzare nella tua Block Storage for VPC istanza per crittografare i dati mentre vengono scritti nell'archivio. Dopo aver creato la chiave root privata, creare la propria classe di archiviazione o un segreto Kubernetes con la chiave root e quindi utilizzare questa classe di archiviazione o questo segreto per eseguire il provisioning dell'istanza Block Storage for VPC.

L'abilitazione della crittografia Block Storage for VPC influisce sulle prestazioni di circa il 20%. Tuttavia, l'impatto esatto dipende dalla configurazione del tuo nodo di lavoro e del volume di archiviazione. Considerare la possibilità di consentire impatti sulle prestazioni quando si abilita la cifratura.

  1. Creare un'istanza del provider KMS che si desidera utilizzare.

  2. Creare una chiave principale nell'istanza KMS.

  3. Impostare l'autorizzazione da servizio a servizio. Autorizza Block Storage for VPC ad accedere a IBM® Key Protect. Assicurarsi di dare a Block Storage for VPC almeno Reader l'accesso alla propria istanza KMS.

  4. Decidi se vuoi archiviare il CRN della chiave root Key Protect in una classe di archiviazione personalizzata o in un segreto Kubernetes. Quindi, segui la procedura per creare una classe di archiviazione personalizzata o un segreto Kubernetes.

    Classe di archiviazione personalizzata di esempio.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name> # Enter a name for your storage class.
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "5iops-tier"
      csi.storage.k8s.io/fstype: "ext4"
      billingType: "hourly"
      encrypted: "true"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: ""
      tags: ""
      generation: "gc"
      classVersion: "1"
    reclaimPolicy: "Delete"
    
    encrypted
    Nei parametri, inserire true per creare una classe di archiviazione che imposti la crittografia per i volumi Block Storage for VPC. Se si imposta questa opzione su true, è necessario fornire la chiave CRN della propria istanza del servizio Key Protect che si vuole utilizzare in parameters.encryptionKey.
    encryptionKey
    Nei parametri, immetti il CRN della chiave root che hai richiamato in precedenza.

    Esempio Kubernetes segreto.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
    data
      encryptionKey: <encryption_key>
    
    name
    Immetti un nome per il tuo segreto.
    namespace
    Immetti lo spazio dei nomi in cui vuoi creare il tuo segreto.
    encrypted
    Nei parametri, immettere true per impostare la crittografia dei volumi Block Storage for VPC.
    encryptionKey
    Nei parametri, immetti il CRN della chiave root della tua istanza del servizio Key Protect che vuoi utilizzare per crittografare il tuo volume di Block Storage for VPC. Per utilizzare la chiave radice CRN in un segreto, occorre prima convertirla in base64 eseguendo echo -n "<root_key_CRN>" | base64.
  5. Seguire i passaggi da 4 a 9 in Aggiunta di Block Storage for VPC alle applicazioni per creare un PVC con la classe di archiviazione personalizzata per il provisioning di Block Storage for VPC, configurato per la crittografia con la chiave root di Key Protect. Monta quindi questa archiviazione in un pod dell'applicazione.

    La tua applicazione potrebbe impiegare qualche minuto a montare l'archiviazione ed entrare in uno stato Running.

  6. Verifica che i tuoi dati siano crittografati. Elenca i tuoi volumi di Block Storage for VPC e prendi nota dell'ID dell'istanza che hai creato. Il nome (Name) dell'istanza di archiviazione è uguale al nome del PV che era stato creato automaticamente quando hai creato la PVC.

    ibmcloud is vols
    

    Output di esempio

    ID                                     Name                                       Status      Capacity   IOPS   Profile           Attachment type   Created                     Zone         Resource group
    a395b603-74bf-4703-8fcb-b68e0b4d6960   pvc-479d590f-ca72-4df2-a30a-0941fceeca42   available   10         3000   5iops-tier        data              2019-08-17T12:29:18-05:00   us-south-1   a8a12accd63b437bbd6d58fb6a462ca7
    
  7. Utilizzando l'ID del volume, elenca i dettagli della tua istanza Block Storage for VPC per assicurarti che la tua chiave root Key Protect sia archiviata nell'istanza di archiviazione. Puoi trovare la chiave root nel campo Encryption key del tuo output della CLI.

    ibmcloud is vol <volume_ID>
    

    Output di esempio

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

Personalizzazione delle impostazioni di archiviazione predefinite

È possibile modificare alcune impostazioni predefinite del PVC utilizzando una classe di archiviazione personalizzata o un segreto Kubernetes per creare Block Storage for VPC con le impostazioni personalizzate.

Qual è il vantaggio di utilizzare un segreto e di specificare i parametri in una classe di archiviazione personalizzata?
L'amministratore del cluster può creare una classe di archiviazione personalizzata quando vuole che tutti i PVC creati dagli utenti del cluster siano forniti con una configurazione specifica e non vuole consentire agli utenti del cluster di ignorare la configurazione predefinita.
Tuttavia, quando sono necessarie più configurazioni e non vuoi creare una classe di archiviazione personalizzata per ogni possibile configurazione PVC, puoi creare una classe di archiviazione personalizzata con delle impostazioni PVC predefinite e un riferimento a un segreto Kubernetes generico. Se i tuoi utenti del cluster devono sovrascrivere le impostazioni della tua classe di archiviazione personalizzata, possono farlo creando un segreto Kubernetes che ospita le loro impostazioni personalizzate.

Quando vuoi configurare la crittografia per la tua istanza di Block Storage for VPC, puoi anche utilizzare un segreto Kubernetes se vuoi codificare il CRN della chiave root Key Protect in base64 anziché fornire la chiave direttamente nella classe di archiviazione personalizzata.

Modifica della classe di archiviazione predefinita

Con la versione 4.2 il componente Block Storage for VPC aggiuntivo cluster imposta la classe di archiviazione predefinita sulla ibmc-vpc-block-10iops-tier classe. Se hai una classe di archiviazione predefinita diversa da ibmc-vpc-block-10iops-tier e le tue PVC utilizzano la classe di archiviazione predefinita, ciò può risultare in più classi di archiviazione predefinite che possono causare errori di creazione della PVC. Per utilizzare una classe di memoria predefinita diversa da ibmc-vpc-block-10iops-tier, è possibile aggiornare addon-vpc-block-csi-driver-configmap per modificare IsStorageClassDefault in false.

La classe di archiviazione predefinita per il componente aggiuntivo del cluster Block Storage for VPC è la classe di archiviazione ibmc-vpc-block-10iops-tier.

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

    kubectl edit cm addon-vpc-block-csi-driver-configmap -n kube-system
    
  2. Modificare l'impostazione IsStorageClassDefault in false.

  3. Salvare ed uscire.

  4. Attendere 15 minuti e verificare la modifica ottenendo i dettagli della classe di memoria ibmc-vpc-block-10iops-tier.

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

Creazione della tua classe di memoria

Crea la tua classe di archiviazione personalizzata con le impostazioni preferite per la tua Block Storage for VPC istanza. Utilizzando il profilo SDP, è possibile specificare la capacità e il limite massimo di throughput.

I profili di prestazioni definiti SSD (SDP) sono disponibili a Dallas, Francoforte, Londra, Madrid, Osaka, San Paolo, Sydney, Tokyo, Toronto e Washington D.C. La creazione di snapshot per i profili di prestazioni definiti per SSD è disponibile a Dallas, Francoforte, Tokyo e Washington. D.C

È possibile creare la propria classe di archiviazione se si desidera:

  • Impostare un valore IOPs personalizzato.
  • Configura Block Storage for VPC con un tipo di file system diverso da ext4.
  • Impostare la codifica.
  • Impostazione delle prestazioni definite da SSD.

Prima di iniziare

  • Esamina il Riferimento classe di archiviazione per determinare il profile che desideri utilizzare per la tua classe di archiviazione.

  • È inoltre possibile esaminare i profili personalizzati se si desidera specificare IOP personalizzate per il sito Block Storage for VPC.

  • Se si desidera utilizzare un profilo SSD a prestazioni definite (SDP), verificare i dettagli relativi alla gamma di capacità e agli IOP. Si noti che quando si usa un'unità SSD a prestazioni definite, la capacità del volume è determinata dagli IOP e dal throughput specificati.

  • È possibile utilizzare una classe di archiviazione esistente come punto di partenza per creare la propria classe. Salvare i dettagli di una classe di archiviazione esistente utilizzando il comando kubectl get sc <storageclass> -o yaml.

  • Per mantenere i costi bassi, inizialmente è possibile eseguire il provisioning di un PVC con capacità bassa, IOPS minimo e throughput minimo utilizzando la classe di storage ibmc-vpc-block-sdp, che ha un minimo di 3000 IOPS e 1000 Throughput (Mbps). Dopo il provisioning, è possibile accedere al PVC e regolare IOPS e throughput in base alle esigenze.

Per creare una classe di archiviazione personalizzata:

  1. Creare un file di configurazione della classe di archiviazione personalizzato nel seguente formato. Scegliete tra una classe di archiviazione di prima generazione e una di seconda generazione.

    Esempio di prima generazione:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: <storage_class_name>
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "<profile>" # general-purpose, sdp, 5iops-tier, 10iops-tier, or custom
      csi.storage.k8s.io/fstype: "<file_system_type>" # xfs, ext3, or ext4
      billingType: "hourly"
      encrypted: "<encrypted_true_false>"
      encryptionKey: "<encryption_key>"
      resourceGroup: ""
      zone: "<zone>"
      region: "<region>"
      tags: "<tags>"
      generation: "gc"
      throughput: "<throughput>" # Example: 2000
      classVersion: "1"
      iops: "<iops>" # Only specify this parameter if you are using a "custom" profile.
    allowVolumeExpansion: (true|false) # Select true or false. Only supported on version 3.0.1 and later
    volumeBindingMode: <volume_binding_mode>
      # csi.storage.k8s.io/provisioner-secret-name: # Uncomment and add secret parameters to enforce encryption.
      # csi.storage.k8s.io/provisioner-secret-namespace:
    reclaimPolicy: "<reclaim_policy>"
    
    name
    Immetti un nome per la tua classe di archiviazione.
    profile
    Immettere il profilo selezionato nel passaggio precedente. Scegliere general-purpose, sdp, 5iops-tier, 10iops-tier, o custom utilizzare un valore IOPs personalizzato. Per trovare le dimensioni di archiviazione supportate per un profilo specifico, vedere Profilo IOPS a livelli. Qualsiasi PVC che utilizza questa classe di archiviazione deve specificare un valore di dimensione compreso in questo intervallo.
    csi.storage.k8s.io/fstype
    Nei parametri, immetti il file system per la tua istanza Block Storage for VPC. Scegli xfs, ext3 o ext4. Se si desidera modificare la proprietà o i permessi del volume, è necessario specificare csi.storage.k8s.io/fstype nella propria classe di archiviazione e il PVC deve avere ReadWriteOnce come accessMode. Il driver Block Storage for VPC utilizza il driver ReadWriteOnceWithFSType fsGroupPolicy. Per ulteriori informazioni, consultare la documentazione del driver CSI.
    encrypted
    Nei parametri, immettere true per creare una classe di archiviazione che imposti la crittografia per il volume Block Storage for VPC. Se si imposta questa opzione su true, è necessario fornire la chiave CRN della propria istanza del servizio Key Protect che si vuole utilizzare in parameterencryptionKey. Per ulteriori informazioni sulla crittografia dei tuoi dati, vedi Configurazione della crittografia per il tuo Block Storage for VPC.
    encryptionKey
    Se si è inserito true per parameters.encrypted, inserire la chiave CRN di root dell'istanza del servizio Key Protect che si vuole usare per crittografare il volume Block Storage for VPC. Per ulteriori informazioni sulla crittografia dei tuoi dati, vedi Configurazione della crittografia per il tuo Block Storage for VPC.
    zone
    Nei parametri, immetti la zona VPC in cui vuoi creare l'istanza Block Storage for VPC. Assicurati di utilizzare una zona a cui sono connessi i tuoi nodi di lavoro. Per elencare le zone VPC utilizzate dai nodi worker, eseguire ibmcloud ks cluster get --cluster <cluster_name_or_ID> e osservare il campo Worker Zones nell'output della CLI. Se non si specifica una zona, viene selezionata automaticamente una delle zone dei nodi worker per l'istanza Block Storage for VPC.
    region
    L'area del nodo worker a cui si vuole collegare lo storage.
    tags
    Nei parametri, inserire un elenco separato da spazi di tag da applicare all'istanza di Block Storage for VPC. Le tag posso aiutarti a trovare le istanze più facilmente oppure a raggruppare le tue istanze in base a caratteristiche comuni, come ad esempio l'applicazione o l'ambiente per cui sono utilizzate.
    iops
    Se si è inserito custom o sdp per profile, inserire un valore per le IOP che si desidera utilizzare per Block Storage for VPC. Per un elenco degli intervalli IOP supportati in base alle dimensioni del volume, consultare la tabella dei profili IOP personalizzati di Block Storage for VPC.
    throughput
    Immettere questo valore se si utilizza un profilo sdp. Per ulteriori informazioni, vedere i dettagli IOP e di throughput per il profilo SDP
    reclaimPolicy
    Immetti la politica di riacquisizione per la tua classe di archiviazione. Se vuoi conservare il PV, il dispositivo di archiviazione fisico e i tuoi dati quando rimuovi la PVC, immetti Retain. Se vuoi eliminare il PV, il dispositivo di archiviazione fisico e i tuoi dati quando rimuovi la PVC, immetti Delete.
    allowVolumeExpansion
    Immettere la politica di espansione del volume per la classe di archiviazione. Se si desidera consentire l'espansione del volume, immettere true. Se non si desidera consentire l'espansione del volume, immettere false.
    volumeBindingMode
    Scegli se vuoi ritardare la creazione dell'istanza Block Storage for VPC finché il primo pod che utilizza questa archiviazione non è pronto per essere pianificato. Per ritardare la creazione, immetti WaitForFirstConsumer. Per creare l'istanza quando crei la PVC, immetti Immediate.

    Esempio di seconda generazione:

    Se si effettua il provisioning di un PVC 9.6TB utilizzando la classe di storage ibmc-vpc-block-5iops-tier di prima generazione, l'IOPS massimo è 48.000 e il throughput massimo è 6144 Mbps. Tuttavia, con la classe di storage ibmc-vpc-block-sdp-max-bandwidth di seconda generazione, l'IOPS massimo è di 64.000 e il throughput massimo è di 8192 Mbps.

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

    kubectl apply -f custom-storageclass.yaml
    
  3. Verifica che la tua classe di archiviazione sia disponibile nel cluster.

    kubectl get sc
    

    Output di esempio

    NAME                                    PROVISIONER            AGE
    <custom-storageclass>             vpc.block.csi.ibm.io   4m26s
    
  4. Segui la procedura in Aggiunta di Block Storage for VPC alle tue applicazioni per creare una PVC con la tua classe di archiviazione personalizzata per eseguire il provisioning di Block Storage for VPC. Monta quindi questa archiviazione su un'applicazione di esempio.

  5. Facoltativo: verifica il tuo tipo di file system Block Storage for VPC.

Verifica del tuo file system Block Storage for VPC

Puoi creare una classe di archiviazione personalizzata per eseguire il provisioning di Block Storage for VPC con un file system differente, come ad esempio xfs o ext3. Per impostazione predefinita, il provisioning di tutte le istanze Block Storage for VPC viene eseguito con un file system ext4.

  1. Segui la procedura per creare una classe di archiviazione personalizzata con il file system che desideri utilizzare.

  2. Seguire i passaggi 4-9 in Aggiunta di Block Storage for VPC alle applicazioni per creare un PVC con la classe di archiviazione personalizzata per fornire Block Storage for VPC con un file system diverso. Monta quindi questa archiviazione in un pod dell'applicazione.

    La tua applicazione potrebbe impiegare qualche minuto a montare l'archiviazione ed entrare in uno stato Running.

  3. Verifica che la tua archiviazione sia montata con il file system corretto. Elenca i pod nel tuo cluster e prendi nota del nome (Name) del pod che hai utilizzato per montare la tua archiviazione.

    kubectl get pods
    
  4. Accedi al tuo pod.

    kubectl exec <pod_name> -it bash
    
  5. Elenca i percorsi di montaggio all'interno del tuo pod.

    mount | grep /dev/xvdg
    

    Esempio di output per xfs.

    /dev/xvdg on /test type xfs (rw,relatime,attr2,inode64,noquota)
    
  6. Esci dal tuo pod.

    exit
    

Aggiornamento di VolumeAttachLimit

Nelle versioni 5.2 e successive del componente aggiuntivo del cluster Block Storage for VPC, puoi modificare il numero massimo di volumi che possono essere collegati a ciascun nodo modificando la configmap. Il valore predefinito è 12.

L'account deve essere approvato per utilizzare questa funzione.

  1. Accedi al tuo account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.

  2. Modifica la mappa di configurazione. Sostituire VALUE con il limite di collegamento volume che si desidera impostare.

    kubectl patch configmap/addon-vpc-block-csi-driver-configmap \       
    -n kube-system \
    --type merge \
    -p '{"data":{"VolumeAttachmentLimit":"VALUE"}}'
    
  3. Attendi il riavvio dei pod ibm-vpc-block-csi-node nello spazio dei nomi kube-system. Verifica che i pod siano stati riavviati.

    kubectl get pods -n kube-system -w| grep block-csi
    
  4. Puoi ora collegare i volumi ai tuoi nodi di lavoro utilizzando il provisioning dinamico o creando manualmente gli allegati. Per ulteriori informazioni, consultare Aggiunta di Block Storage for VPC alle tue app o Utilizzo di un'istanza Block Storage for VPC esistente.

Archiviazione delle tue impostazioni PVC personalizzate in un segreto Kubernetes

Specifica le tue impostazioni PVC in un segreto Kubernetes e il riferimento a questo segreto in una classe di archiviazione personalizzata. Quindi, utilizza la classe di archiviazione personalizzata per creare una PVC con i parametri personalizzati che hai impostato nel tuo segreto.

Quali opzioni ho per utilizzare il segreto di Kubernetes?
Come amministratore del cluster, puoi scegliere se vuoi consentire ad ogni utente del cluster di sovrascrivere le impostazioni predefinite di una classe di archiviazione oppure se vuoi creare un segreto che chiunque nel cluster deve utilizzare e che applica la codifica base64 per il tuo CRN della chiave root Key Protect.
Ogni utente può personalizzare le impostazioni predefinite.
In questo scenario, l'amministratore del cluster crea una classe di archiviazione personalizzata con le impostazioni predefinite del PVC e un riferimento a un generico segreto Kubernetes. Gli utenti del cluster possono sovrascrivere le impostazioni predefinite della classe di archiviazione creando un segreto Kubernetes con le impostazioni PVC che desiderano. Affinché le impostazioni personalizzate nel segreto vengano applicate alla tua istanza Block Storage for VPC, devi creare una PVC con lo stesso nome del tuo segreto Kubernetes.
Forza la codifica base64 della chiave root Key Protect
In questo scenario, si crea una classe di archiviazione personalizzata con le impostazioni predefinite del PVC e un riferimento a un segreto statico Kubernetes che sovrascrive o migliora le impostazioni predefinite della classe di archiviazione personalizzata. Gli utenti del cluster non possono annullare le impostazioni predefinite creando il proprio segreto Kubernetes. Invece, gli utenti del cluster devono eseguire il provisioning di Block Storage for VPC con la configurazione che hai scelto nella classe di archiviazione personalizzata e nel segreto. Il vantaggio dell'utilizzo di questo metodo rispetto alla creazione di una sola classe di archiviazione personalizzata è che puoi applicare la codifica base64 per il CRN della chiave root della tua istanza del servizio Key Protect quando vuoi crittografare i dati nella tua istanza Block Storage for VPC.
Di cosa devo essere consapevole prima di iniziare a utilizzare il segreto di Kubernetes per le mie impostazioni del PVC?
Alcune impostazioni del PVC, come reclaimPolicy, fstype, o volumeBindingMode non possono essere impostate nel segreto Kubernetes e devono essere impostate nella classe di archiviazione. Come amministratore del cluster, se vuoi consentire agli utenti del tuo cluster di sovrascrivere le tue impostazioni predefinite, devi assicurarti di aver configurato sufficienti classi di archiviazione personalizzate che fanno riferimento a un segreto Kubernetes generico in modo che i tuoi utenti possano eseguire il provisioning di Block Storage for VPC con diverse impostazioni di reclaimPolicy, fstype e volumeBindingMode.

Abilitazione di ogni utente a personalizzare le impostazioni PVC predefinite

  1. Come amministratore del cluster, segui la procedura per creare una classe di archiviazione personalizzata. Nel file YAML della classe di archiviazione personalizzata, fare riferimento al segreto Kubernetes nella sezione metadata.parameters come segue. Assicurati di aggiungere il codice così come è e di non modificare i nomi delle variabili.

    csi.storage.k8s.io/provisioner-secret-name: ${pvc.name}
    csi.storage.k8s.io/provisioner-secret-namespace: ${pvc.namespace}
    
  2. Come utente del cluster, crea un segreto Kubernetes che personalizza le impostazioni predefinite della classe di archiviazione.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      iops: "<IOPS_value>"
      zone: "<zone>"
      tags: "<tags>"
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data
      encryptionKey: <encryption_key>
    
    name
    Immetti un nome per il tuo segreto Kubernetes.
    namespace
    Immetti lo spazio dei nomi in cui vuoi creare il tuo segreto. Per fare riferimento al segreto nella tua PVC, la PVC deve essere creata nello stesso spazio dei nomi.
    iops
    Nella sezione string data, immetti l'intervallo di IOPS che vuoi consentire per la tua istanza Block Storage for VPC. L'intervallo che immetti deve corrispondere al livello di Block Storage for VPC che prevedi di utilizzare.
    zone
    Nella sezione string data, immetti la zona VPC in cui vuoi creare l'istanza Block Storage for VPC. Assicurati di utilizzare una zona a cui sono connessi i tuoi nodi di lavoro. Per elencare le zone VPC utilizzate dai nodi worker, eseguire ibmcloud ks cluster get --cluster <cluster_name_or_ID> e osservare il campo Worker Zones nell'output della CLI. Se non si specifica una zona, viene selezionata automaticamente una delle zone dei nodi worker per l'istanza Block Storage for VPC.
    tags
    Nella sezione string data, immetti un elenco di tag separate da virgole da utilizzare quando viene creata la PVC. I tag possono aiutare a trovare l'istanza di archiviazione dopo la sua creazione.
    resourceGroup
    Nella sezione dei dati della stringa, inserire l'ID del gruppo di risorse a cui si vuole che l'istanza di Block Storage for VPC abbia accesso. Se non si inserisce un gruppo di risorse, l'istanza è automaticamente autorizzata ad accedere alle risorse del gruppo di risorse a cui appartiene il cluster.
    encrypted
    Nella sezione dati stringa, inserire true per creare un segreto che imposti la crittografia per i volumi Block Storage for VPC. Se si imposta questa opzione su true, è necessario fornire la chiave CRN della propria istanza del servizio Key Protect che si vuole utilizzare in parameters.encryptionKey. Per ulteriori informazioni sulla crittografia dei dati, vedere Impostazione della crittografia per il sito Block Storage for VPC.
    encryptionKey
    Nella sezione dati, se si è inserito true per parameters.encrypted, inserire la chiave CRN di root dell'istanza del servizio Key Protect che si desidera utilizzare per crittografare i volumi di Block Storage for VPC. Per utilizzare la chiave radice CRN in un segreto, occorre prima convertirla in base64 eseguendo echo -n "<root_key_CRN>" | base64. Per ulteriori informazioni sulla crittografia dei tuoi dati, vedi Configurazione della crittografia per il tuo Block Storage for VPC.
  3. Crea il tuo segreto Kubernetes.

    kubectl apply -f secret.yaml
    
  4. Segui la procedura in Aggiunta di Block Storage for VPC alle tue applicazioni per creare una PVC con le tue impostazioni personalizzate. Assicurati di creare la PVC con la classe di archiviazione personalizzata creata dall'amministratore del cluster e utilizza lo stesso nome per la tua PVC di quello utilizzato per il tuo segreto. L'utilizzo dello stesso nome per segreto e PVC attiva il provider di archiviazione ad applicare le impostazioni del segreto nella tua PVC.

Applicazione della codifica base64 per il CRN della chiave root Key Protect

  1. Come amministratore del cluster, crea un segreto Kubernetes che include il valore codificato base64 per il tuo CRN della chiave root Key Protect. Per richiamare il CRN della chiave root, vedi Configurazione della crittografia per il tuo Block Storage for VPC.

    apiVersion: v1
    kind: Secret
    type: vpc.block.csi.ibm.io
    metadata:
      name: <secret_name>
      namespace: <namespace_name>
    stringData:
      encrypted: <true_or_false>
      resourceGroup: "<resource_group>"
    data:
      encryptionKey: <encryption_key>
    
    name
    Immetti un nome per il tuo segreto Kubernetes.
    namespace
    Immetti lo spazio dei nomi in cui vuoi creare il tuo segreto. Per fare riferimento al segreto nella tua PVC, la PVC deve essere creata nello stesso spazio dei nomi.
    encrypted
    Nella sezione dati stringa, inserire true per creare un segreto che imposti la crittografia per i volumi Block Storage for VPC. Se si imposta questa opzione su true, è necessario fornire la chiave CRN della propria istanza del servizio Key Protect che si vuole utilizzare in parameters.encryptionKey. Per ulteriori informazioni sulla crittografia dei dati, vedere Impostazione della crittografia per il sito Block Storage for VPC.
    encryptionKey
    Nella sezione dati, se si è inserito true per parameters.encrypted, inserire la chiave CRN di root dell'istanza del servizio Key Protect che si desidera utilizzare per crittografare il volume Block Storage for VPC. Per utilizzare la chiave radice CRN in un segreto, è necessario prima convertirla in base 64 eseguendo echo -n "<root_key_CRN>" | base64. Per ulteriori informazioni sulla crittografia dei tuoi dati, vedi Configurazione della crittografia per il tuo Block Storage for VPC.
  2. Crea il segreto Kubernetes.

    kubectl apply -f secret.yaml
    
  3. Segui la procedura per creare una classe di archiviazione personalizzata. Nel file YAML della classe di archiviazione personalizzata, fare riferimento al segreto Kubernetes nella sezione metadata.parameters come segue. Assicurati di immettere il nome del segreto Kubernetes che hai creato precedentemente e lo spazio dei nomi dove hai creato il segreto.

    csi.storage.k8s.io/provisioner-secret-name: <secret_name>
    csi.storage.k8s.io/provisioner-secret-namespace: <secret_namespace>
    
  4. Come utente del cluster, segui la procedura in Aggiunta di Block Storage for VPC alle tue applicazioni per creare una PVC dalla tua classe di archiviazione personalizzata.

Impostazione dell'espansione del volume

Per eseguire il provisioning di volumi che supportano l'espansione, è necessario utilizzare la classe di archiviazione allowVolumeExpansion impostata su true.

Puoi espandere solo i volumi montati da un pod dell'applicazione.

Accedi al tuo account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.

  1. Se non stai utilizzando la versione 4.2 o una versione successiva del componente aggiuntivo, aggiorna il componente aggiuntivo del cluster Block Storage for VPC nel tuo cluster.

  2. Crea una PVC che utilizza una classe di archiviazione che supporta l'espansione del volume.

  3. Distribuisci un'applicazione che utilizza la tua PVC. Quando crei la tua applicazione, prendi nota del mountPath che specifichi.

  4. Dopo che la tua PVC è stata montata da un pod dell'applicazione, puoi espandere il tuo volume modificando il valore del campo spec.resources.requests.storage nella tua PVC. Per espandere il volume, modifica la tua PVC e aumenta il valore nel campo spec.resources.requests.storage.

    kubectl edit pvc <pvc-name>
    

    Esempio

    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  5. Salvare e chiudere il PVC.

  6. Facoltativo: verifica che il volume sia espanso. Ottieni i dettagli della tua PVC e prendi nota del nome PV.

    kubectl get pvc <pvc-name>
    
  7. Descrivi il tuo PV e prendi nota dell'ID volume.

    kubectl describe PV
    
  8. Ottieni i dettagli del tuo volume Block Storage for VPC e verifica la capacità.

    ibmcloud is vol <volume-ID>
    

Espansione manuale dei volumi prima della versione del componente aggiuntivo 4.2

Completare i seguenti passaggi per espandere manualmente i volumi Block Storage for VPC esistenti creati prima della versione 4.2 dell'add-on.

Puoi espandere solo i volumi montati da un pod dell'applicazione.

  1. Ottieni i dettagli della tua app e prendi nota del nome PVC e di mountPath.

    kubectl get pod <pod-name> -n <pod-namespace> -o yaml
    
  2. Ottieni i dettagli della tua PVC e prendi nota del nome PV.

    kubectl get pvc
    
  3. Descrivi il tuo PV e ottieni il volumeId.

    kubectl describe pv `pv-name` | grep volumeId
    

    Output di esempio per l'ID volume r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.

    volumeId=r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1
    
  4. Ridimensionare il volume utilizzando una richiesta PATCH. Il seguente esempio ridimensiona un volume a 250 GiB.

    curl -sS -X PATCH -H "Authorization: <iam_token>" "https://<region>.iaas.cloud.ibm.com/v1/volumes/<volumeId>?generation=2&version=2020-06-16" -d '{"capacity":250}'
    
    <iam_token>
    Il tuo token IAM. Per recuperare il token IAM, eseguire ibmcloud iam oauth-tokens.
    <region>
    La regione in cui si trova il tuo cluster, ad esempio us-south.
    <volumeId>
    L'ID volume che hai richiamato in precedenza. Ad esempio r011-a1aaa1f1-3aaa-4a73-84aa-0aa32e11a1a1.
    <capacity>
    L'aumento della capacità in GiB, ad esempio 250.
  5. Accedi al tuo pod dell'applicazione.

    kubectl exec <pod-name> -it -- bash
    
  6. Eseguire il seguente comando per utilizzare i file binari host.

    chroot /host
    
  7. Ottenere i dettagli del filesystem e prendere nota del percorso Filesystem che si desidera aggiornare. Puoi anche grep per il percorso di montaggio come specificato nel tuo pod dell'applicazione. df -h | grep <mount-path>.

    df -h
    

    Output di esempio

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

    sudo resize2fs <filesystem-path>
    

    Comando di esempio

    sudo resize2fs /dev/vdg
    
  9. Verificare che il file system sia ridimensionato.

    df -h
    

Backup e ripristino di dati

I dati su Block Storage for VPC sono protetti attraverso zone di guasto ridondanti nella tua regione. Per eseguire il backup manuale dei tuoi dati, utilizza il comando kubectl cp Kubernetes.

È possibile utilizzare il comando kubectl cp per copiare file e directory da e verso i pod o i contenitori specifici del cluster

Prima di iniziare: Accedere al proprio account. Se applicabile, specifica il gruppo di risorse appropriato. Imposta il contesto per il tuo cluster.

Per eseguire il backup o il ripristino dei dati, scegli tra le seguenti opzioni:

Copiare i dati dal computer locale a un pod del cluster.

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

Copiare i dati da un pod del cluster al computer locale.

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

Copiare i dati dal computer locale a un contenitore specifico che gira in un pod del cluster.

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

Comprensione della capacità di richiesta del volume

Il driver CSI del blocco VPC calcola la capacità del volume utilizzando la seguente formula.

  • Se il valore è fornito in Gi: rBytes(requestedBytes) = X * 1024^3

  • Se il valore è fornito in G: rBytes(requestedBytes) = X * 10^9

Il valore richiesto è uguale a (((rBytes+ GiB - 1) / GiB) * GiB) / GiB.

Ad esempio:

  • Se viene fornito un valore di 20Gi, applicando la formula precedente, il volume creato è 20GB.
  • Se viene fornito un valore di 20G, il volume creato è 19GB.

A volte, la capacità del volume creato è inferiore al valore richiesto. Tieni presente che la fatturazione si applica al volume che viene creato, non al volume richiesto.

Assegnazione di profili di fiducia allo storage a blocchi

A causa di un problema noto, gli aggiornamenti ai tag utente sui volumi Block Storage VPC potrebbero non essere visualizzati quando viene implementato un profilo attendibile. Questo problema non è presente nei cluster che non utilizzano profili affidabili.

È possibile utilizzare i profili di fiducia per concedere a diverse identità di IBM Cloud l'accesso alle risorse dell'account, comprese le soluzioni di archiviazione. I profili di fiducia centralizzano il controllo degli accessi, eliminano la necessità di chiavi API a lunga durata e consentono di limitare le autorizzazioni al minimo indispensabile per un'attività specifica. Per ulteriori informazioni, vedere Configurazione di un profilo di fiducia per i componenti di archiviazione.