Configurazione delle istantanee con il componente aggiuntivo del cluster Block Storage for VPC

Cloud virtuale privato

Block Storage for VPC Le istantanee dei volumi offrono un metodo standardizzato per copiare il contenuto di un volume in un determinato momento senza creare un volume completamente nuovo. Per ulteriori informazioni sulle istantanee, vedere Come funzionano le istantanee. Per ulteriori informazioni su Block Storage for VPC, vedi Informazioni suBlock Storage for VPC.

Per impostazione predefinita, il componente aggiuntivo del cluster Block Storage for VPC crea volumi e snapshot nello stesso gruppo di risorse VPC in cui viene distribuito il cluster. Tuttavia, a partire dalla versione del componente aggiuntivo 5.2.46 e successive, è possibile creare istantanee in un gruppo di risorse diverso specificando il parametro resourceGroup nel proprio VolumeSnapshotClass. Per ulteriori informazioni, vedere Creazione di istantanee in un gruppo di risorse diverso.

Creazione di un'applicazione

Crea un'attestazione del volume persistente (o PVC, Persistent Volume Claim) di esempio e distribuisci un pod che fa riferimento all'attestazione.

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

  2. Verificare che lo stato del componente aggiuntivo sia normal e che lo stato sia Ready.

    ibmcloud oc cluster addon ls --cluster CLUSTER-ID
    
    Name                   Version                     Health State   Health Status   
    vpc-block-csi-driver   5.2   normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)   
    
  3. Verificare che i pod del driver siano distribuiti e che lo stato sia Running.

    oc get pods -n kube-system | grep vpc-block-csi
    

    Output di esempio

    ibm-vpc-block-csi-controller-0                        7/7     Running   0          77s
    ibm-vpc-block-csi-node-56c85                          4/4     Running   0          77s
    ibm-vpc-block-csi-node-87j2t                          4/4     Running   0          77s
    ibm-vpc-block-csi-node-cmh2h                          4/4     Running   0          77s
    
  4. Creare un PVC.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: csi-block-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: ibmc-vpc-block-5iops-tier
    
    oc create -f pvc.yaml
    
  5. Verifica che la PVC sia stata creata e che si trovi in uno stato Bound.

    oc get pvc
    
    NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
    csi-block-pvc   Bound    pvc-0798b499-0b61-4f57-a184-4caeb7b9298d   10Gi       RWO            ibmc-vpc-block-5iops-tier   4m22s
    
  6. Creare un file di configurazione YAML per una distribuzione che monti il PVC creato.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-deployment
      labels:
        app: my-deployment
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: my-deployment
      template:
        metadata:
          labels:
            app: my-deployment
        spec:
          containers:
          - image: nginx # Your containerized app image
            name: container-name
            volumeMounts:
            - mountPath: /myvolumepath  # Mount path for PVC
              name: my-vol # Volume mount name
          volumes:
          - name: my-vol  # Volume resource name
            persistentVolumeClaim:
              claimName: csi-block-pvc  # The name of the PVC you created earlier
    
    oc create -f pod.yaml
    
  7. Verificare che il pod sia in esecuzione nel cluster.

    oc get pods
    
    NAME                          READY   STATUS    RESTARTS   AGE
    my-deployment-58dd7c89b6-8zdcl   1/1     Running   0          4m50s    
    
  8. Ora che hai creato il pod, accedi al pod e crea un file di testo da utilizzare per l'istantanea.

    oc exec -it POD_NAME /bin/bash
    

    Output di esempio

    root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/
    root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt
    root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
    

Creazione di un'istantanea del volume

Dopo aver creato una distribuzione e una PVC, puoi creare le risorse di istantanea del volume.

È possibile creare istantanee solo quando un volume è collegato a un pod.

  1. Assicurarsi di disporre delle autorizzazioni di Share Snapshot Operator in IAM.

  2. Crea una risorsa di istantanea del volume nel tuo cluster utilizzando la classe di istantanea ibmc-vpcblock-snapshot distribuita quando hai abilitato il componente aggiuntivo. Salvate la seguente configurazione di VolumeSnapshot in un file chiamato snapvol.yaml.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: snapshot-csi-block-pvc
    spec:
      volumeSnapshotClassName: ibmc-vpcblock-snapshot
      source:
        persistentVolumeClaimName: csi-block-pvc
    
    oc create -f snapvol.yaml
    
  3. Verificare che l'istantanea sia pronta per l'uso.

    oc get volumesnapshots
    

    Esempio di output dove READYTOUSE è true:

    NAME                       READYTOUSE   SOURCEPVC       SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS           SNAPSHOTCONTENT                                    CREATIONTIME   AGE
    snapshot-csi-block-pvc     true         csi-block-pvc                           1Gi           ibmc-vpcblock-snapshot   snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b   18h            18h
    

Creazione di istantanee in un gruppo di risorse differente

A partire da Block Storage for VPC cluster add-on versione 5.2.46 e successive, è possibile creare istantanee di volumi in un gruppo di risorse diverso dal gruppo di risorse del cluster. Questa funzione offre una maggiore flessibilità nell'organizzazione delle risorse, nella gestione delle quote e nel controllo degli accessi.

  • Requisiti di versione: Questa funzione è supportata solo nella versione del componente aggiuntivo 5.2.46 e successive.
  • Comportamento predefinito: Se non si specifica un parametro resourceGroup o se si specifica una stringa vuota, le istantanee vengono create nel gruppo di risorse del cluster.

Prerequisiti

Prima di iniziare, assicurarsi di disporre delle seguenti autorizzazioni in IAM:

  • Servizi infrastrutturali VPC (è): Redattore e scrittore
  • Kubernetes Service (container-kubernetes): Operatore
  • Gruppo di risorse: Visualizzatore per ogni gruppo di risorse in cui si desidera creare le istantanee

Creazione di un'opzione personalizzata VolumeSnapshotClass

Per creare istantanee in un gruppo di risorse diverso, è necessario creare un VolumeSnapshotClass personalizzato che specifichi l'ID del gruppo di risorse di destinazione.

  1. Ottenere l'ID del gruppo di risorse in cui si desidera creare l'istantanea.

    ibmcloud resource groups
    
  2. Creare un file di configurazione VolumeSnapshotClass. Salvare il seguente YAML in un file chiamato vpc-snap-custom-rg.yaml. Sostituire <RESOURCE_GROUP_ID> con l'ID del gruppo di risorse di destinazione.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: vpc-snap-custom-rg
    driver: vpc.block.csi.ibm.io
    deletionPolicy: Delete
    parameters:
      resourceGroup: <RESOURCE_GROUP_ID>
    

    Il parametro resourceGroup deve essere l'ID del gruppo di risorse, non il nome del gruppo di risorse.

  3. Creare il sito VolumeSnapshotClass nel cluster.

    oc create -f vpc-snap-custom-rg.yaml
    
  4. Verificare che il sito VolumeSnapshotClass sia stato creato.

    oc get volumesnapshotclass
    

Creazione di un'istantanea con un gruppo di risorse personalizzato

Dopo aver creato il sito VolumeSnapshotClass personalizzato, è possibile creare istantanee che fanno riferimento ad esso.

  1. Creare un file di configurazione VolumeSnapshot che faccia riferimento alla classe snapshot personalizzata. Salvare il seguente YAML in un file chiamato snapshot-custom-rg.yaml.

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: snapshot-custom-rg
    spec:
      volumeSnapshotClassName: vpc-snap-custom-rg
      source:
        persistentVolumeClaimName: csi-block-pvc
    
  2. Creare l'istantanea.

    oc create -f snapshot-custom-rg.yaml
    
  3. Verificare che l'istantanea sia pronta per l'uso.

    oc get volumesnapshots
    
  4. Verificare che l'istantanea sia stata creata nel gruppo di risorse di destinazione utilizzando la CLI IBM Cloud.

    ibmcloud target -g <RESOURCE_GROUP_NAME>
    ibmcloud is snapshots
    

Ripristino da un'istantanea del volume

Dopo aver distribuito le risorse dell'istantanee, è possibile ripristinare i dati su un nuovo volume utilizzando l'istantanea. La creazione di una PVC esegue in modo dinamico il provisioning di un nuovo volume con i dati dell'istantanea.

  1. Crea una seconda PVC che fa riferimento alla tua istantanea del volume.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: restore-pvc
    spec:
      storageClassName: ibmc-vpc-block-5iops-tier
      dataSource:
        name: snapshot-csi-block-pvc
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
    
  2. Verifica che la PVC sia stata creata e che si trovi in uno stato Bound.

    oc get pvc
    
    NAME                   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
    restore-pvc            Bound    pvc-4ede7630-5a49-4bae-b34d-dc528acfb884   10Gi       RWO            ibmc-vpc-block-5iops-tier   18h
    
  3. Creare un secondo file di configurazione YAML per una distribuzione che monti il PVC creato.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: podtwo
      labels:
        app: podtwo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: podtwo
      template:
        metadata:
          labels:
            app: podtwo
        spec:
          containers:
          - image: nginx # Your containerized app image
            name: container-name
            volumeMounts:
            - mountPath: /myvolumepath  # Mount path for pvc from container
              name: my-vol # Volume mount name
          volumes:
          - name: my-vol  # Volume resource name
            persistentVolumeClaim:
              claimName: restore-pvc   # The name of the PVC that you created earlier
    
    oc create -f podtwo.yaml
    
  4. Verifica che il pod sia stato creato.

    oc get pods
    
    NAME                          READY   STATUS    RESTARTS   AGE
    POD_NAME                      1/1     Running   0          30m
    POD2_NAME                     1/1     Running   0          46h
    
  5. Accedi al pod appena creato e verifica che il file di testo di esempio che hai creato in precedenza sia salvato nel nuovo pod.

    oc exec -it POD_NAME /bin/bash
    root@POD_NAME :/# cd myvolumepath/
    root@POD_NAME :/myvolumepath# ls
    lost+found  new.txt
    root@POD_NAME :/myvolumepath# cat new.txt
    

    Output di esempio

    hi
    

Disattivazione delle istantanee

Per impostazione predefinita, la funzionalità di istantanea è abilitata quando si utilizza Block Storage for VPC. Questa funzione può essere disattivata nella configmap addon-vpc-block-csi-driver-configmap nello spazio dei nomi kube-system modificando IsSnapshotEnabled in false. Tenere presente che con questa modifica nella configmap, tutte le istantanee create hanno esito negativo con il messaggio:CreateSnapshot functionality is disabled.

  1. Salvare la configmap corrente dal cluster alla macchina locale.

    oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml
    
  2. Modificare il parametro IsSnapshotEnabled in false.

  3. Salvare il file e applicare le modifiche.

    oc apply -f snapshotconfigmap.yaml
    

Passi successivi

Distribuire il webhook di convalida istantanea per convalidare l'input utente. Per ulteriori informazioni, vedi Distribuzione del webhook di convalida dell'istantanea.

Risoluzione dei problemi delle istantanee

Esaminare i seguenti argomenti relativi alla risoluzione dei problemi.