Installazione di Portworx nel tuo cluster

Esegui il provisioning di un'istanza del servizio Portworx dal catalogo IBM Cloud. Dopo aver creato l'istanza del servizio, sul tuo cluster viene installata l'ultima versione di Portworx enterprise edition (px-enterprise) utilizzando Helm. Inoltre, Stork è installato anche sul cluster Red Hat OpenShift on IBM Cloud. Stork è il programma di pianificazione dell'archiviazione di Portworx. Con Stork, è possibile collocare i pod insieme ai relativi dati, nonché creare e ripristinare snapshot dei volumi di “ Portworx ”.

Stai cercando le istruzioni su come aggiornare o rimuovere Portworx? Vedere Aggiornamento di Portworx e Rimozione di Portworx.

Il metodo di installazione predefinito per Portworx Enterprise e Portworx Il backup non è ancora supportato per i cluster solo privati nella regione di Montreal. Contatta l'assistenza Portworx se devi installare Portworx Enterprise o Portworx Backup in un cluster privato a Montreal. Per ulteriori informazioni, consultare la pagina di supporto diPortworx

Prima di cominciare:

Per installare Portworx:

  1. Aprire il servizio " Portworx " dal catalogo " IBM Cloud " e compilare i campi come segue:

    1. Seleziona la regione in cui si trova il tuo cluster Red Hat OpenShift on IBM Cloud.

    2. Esamina le informazioni sui prezzi di Portworx.

    3. Immetti un nome per la tua istanza del servizio Portworx.

    4. Seleziona il gruppo di risorse in cui si trova il tuo cluster.

    5. Nel campo Tag, immetti il nome del cluster in cui vuoi installare Portworx. Dopo aver creato l'istanza del servizio " Portworx ", non è possibile visualizzare il cluster in cui è stato installato " Portworx ". Per trovare il cluster più facilmente in un secondo momento, assicurati di immettere il nome del cluster e qualsiasi informazione aggiuntiva come tag.

    6. Immetti una chiave API IBM Cloud per richiamare l'elenco di cluster a cui hai accesso. Se non hai una chiave API, vedi Gestione delle chiavi API utente. Dopo aver immesso la chiave API, viene visualizzato il campo Kubernetes o il campo OpenShift.

    7. Immetti un nome clusterPortworx univoco.

    8. Nel menu Unità cloud:

      1. Seleziona Utilizza unità cloud (solo cluster VPC) per eseguire dinamicamente il provisioning di Block Storage for VPC for Portworx. Dopo aver selezionato Utilizza unità cloud, seleziona il Nome classe di archiviazione e la Dimensione delle unità di archiviazione blocchi di cui vuoi eseguire il provisioning.
      2. Seleziona Utilizza unità già collegate (Classic, VPC o Satellite) per utilizzare l'archiviazione blocchi già collegata ai tuoi nodi di lavoro.
    9. Dal menu a discesa Portworx metadata key-value store, scegli il tipo di archivio chiave-valore che vuoi utilizzare per archiviare i metadati Portworx. Seleziona Portworx KVDB per creare automaticamente un archivio chiave-valore durante l'installazione di Portworx o seleziona Databases for etcd se vuoi utilizzare un'istanza esistente di Databases for etcd. Se scegli Databases for etcd, vengono mostrati i campi Etcd API endpoints e Etcd secret name.

    10. Spazio dei nomi: immetti lo spazio dei nomi in cui vuoi distribuire le risorse Portworx.

    11. Obbligatorio solo per Databases for etcd: inserisci le informazioni relative alla tua istanza del servizio Databases for etcd.

      1. Richiama l'endpoint etcd e il nome del segreto Kubernetes che hai creato per la tua istanza del servizio Databases for etcd.
      2. Nel campo Etcd API endpoints, immetti l'endpoint API della tua istanza del servizio Databases for etcd che hai richiamato in precedenza. Assicurati di inserire l'endpoint nel formato etcd:<etcd_endpoint1>;etcd:<etcd_endpoint2>. Se hai più di un endpoint, includi tutti gli endpoint e separali con un carattere punto e virgola );).
      3. Nel campo Etcd secret name, immetti il nome del segreto Kubernetes che hai creato nel tuo cluster per archiviare le credenziali del servizio Databases for etcd.
    12. Dall'elenco a discesa Kubernetes or OpenShift cluster name, seleziona il cluster in cui vuoi installare Portworx. Se il tuo cluster non è elencato, assicurati di selezionare la regione IBM Cloud corretta. Se la regione è corretta, verifica di disporre delle autorizzazioni appropriate per visualizzare e gestire il tuo cluster. Assicurati di selezionare un cluster che soddisfi i requisiti hardware minimi per Portworx.

    13. Facoltativo: dall'elenco a discesa " Portworx " (Tipo di archivio dei segreti ), selezionare il tipo di archivio dei segreti che si desidera utilizzare per memorizzare la chiave di crittografia del volume.

      • Kubernetes Secret: scegli questa opzione se vuoi archiviare la tua chiave personalizzata per la crittografia dei volumi in un segreto Kubernetes nel tuo cluster. Il segreto non deve essere presente prima di installare Portworx. Puoi creare il segreto dopo aver installato Portworx. Per ulteriori informazioni, consultare la documentazione relativa a “ Portworx ”.
      • IBM Key Protect: scegli questa opzione se vuoi utilizzare le chiavi root in IBM Key Protect per crittografare i tuoi volumi. Assicurati di seguire le istruzioni per creare la tua istanza del servizio IBM Key Protect e per archiviare le credenziali su come accedere alla tua istanza del servizio in un segreto Kubernetes nel progetto portworx prima di installare Portworx.
    14. Facoltativo: se si desidera impostare una periferica journal o KVDB, immettere i dettagli della periferica nel campo Opzioni avanzate. Scegliere tra le opzioni riportate di seguito per le unità giornale.

      • Immettere j;auto per consentire a Portworx di creare automaticamente una partizione da 3 GB su uno dei propri dispositivi di archiviazione blocchi da utilizzare per il journal.
      • Immettere j;</device/path> per utilizzare una periferica specifica per il giornale. Ad esempio, immettere j;/dev/vde per utilizzare il disco ubicato in /dev/vde. Per trovare il percorso del dispositivo che si desidera utilizzare per il journal, accedere a un nodo di lavoro ed eseguire lsblk.
      • Immettere kvdb_dev;<device path> per specificare la periferica in cui si desidera memorizzare i dati KVDB interni. Ad esempio, kvdb_dev;/dev/vdd. Per trovare il percorso del dispositivo che vuoi utilizzare, accedi al nodo di lavoro ed esegui lsblk. Per utilizzare una periferica specifica per i dati KVDB, devi avere una periferica di archiviazione disponibile di 3GB o su almeno 3 nodi di lavoro. I dispositivi devono inoltre trovarsi sullo stesso percorso su ciascun nodo di lavoro. Ad esempio: /dev/vdd.
  2. Fai clic su Create per avviare l'installazione di Portworx nel tuo cluster. Il completamento di questo processo potrebbe impiegare alcuni minuti. Si apre la pagina dei dettagli del servizio con le istruzioni su come verificare la tua installazione di Portworx, creare un'attestazione del volume persistente (PVC, persistent volume claim) e montare la PVC su un'applicazione.

  3. Nell'elenco delle risorse di IBM Cloud, individua il servizio " Portworx " che hai creato.

  4. Esamina la colonna Status per verificare se l'installazione ha avuto esito positivo o negativo. L'aggiornamento dello stato potrebbe richiedere alcuni minuti.

  5. Se lo Status cambia in Provision failure, segui le istruzioni per iniziare a risolvere il problema per il quale l'installazione non è riuscita.

  6. Se lo Status cambia in Provisioned, verifica che l'installazione di Portworx sia stata completata correttamente e che tutti i tuoi dischi locali siano stati riconosciuti e aggiunti al livello di archiviazione Portworx.

    1. Elenca i pod Portworx nel progetto kube-system. L'installazione ha avuto esito positivo quando vedi uno o più pod portworx, stork e stork-scheduler. Il numero di pod corrisponde al numero di nodi di lavoro presenti nel cluster Portworx. Tutti i pod devono essere in uno stato In esecuzione (Running).
        oc get pods -n kube-system | grep 'portworx\|stork'
        ```
        Output di esempio
        ```sh {: screen}
        portworx-594rw                          1/1       Running     0          20h
        portworx-rn6wk                          1/1       Running     0          20h
        portworx-rx9vf                          1/1       Running     0          20h
        stork-6b99cf5579-5q6x4                  1/1       Running     0          20h
        stork-6b99cf5579-slqlr                  1/1       Running     0          20h
        stork-6b99cf5579-vz9j4                  1/1       Running     0          20h
        stork-scheduler-7dd8799cc-bl75b         1/1       Running     0          20h
        stork-scheduler-7dd8799cc-j4rc9         1/1       Running     0          20h
        stork-scheduler-7dd8799cc-knjwt         1/1       Running     0          20h
        ```
    2. Esegui l'accesso a uno dei tuoi pod `portworx` ed elenca lo stato del tuo cluster Portworx.
    ```sh {: pre}
        oc exec <portworx_pod> -it -n kube-system -- /opt/pwx/bin/pxctl status
        ```
        Output di esempio
        ```sh {: screen}
        Status: PX is operational
        License: Trial (expires in 30 days)
        Node ID: 10.176.48.67
        IP: 10.176.48.67
        Local Storage Pool: 1 pool
        POOL    IO_PRIORITY    RAID_LEVEL    USABLE    USED    STATUS    ZONE    REGION
          0    LOW        raid0        20 GiB    3.0 GiB    Online    dal10    us-south
        Local Storage Devices: 1 device
        Device    Path                        Media Type        Size        Last-Scan
            0:1    /dev/mapper/3600a09803830445455244c4a38754c66    STORAGE_MEDIUM_MAGNETIC    20 GiB        17 Sep 18 20:36 UTC
                total                            -            20 GiB
        Cluster Summary
        Cluster ID: mycluster
            Cluster UUID: a0d287ba-be82-4aac-b81c-7e22ac49faf5
        Scheduler: kubernetes
        Nodes: 2 node(s) with storage (2 online), 1 node(s) without storage (1 online)
          IP        ID        StorageNode    Used    Capacity    Status    StorageStatus    Version        Kernel            OS
          10.184.58.11    10.184.58.11    Yes        3.0 GiB    20 GiB        Online    Up        1.5.0.0-bc1c580    4.4.0-133-generic    Ubuntu 20.04.5 LTS
          10.176.48.67    10.176.48.67    Yes        3.0 GiB    20 GiB        Online    Up (This node)    1.5.0.0-bc1c580    4.4.0-133-generic    Ubuntu 20.04.5 LTS
          10.176.48.83    10.176.48.83    No        0 B    0 B        Online    No Storage    1.5.0.0-bc1c580    4.4.0-133-generic    Ubuntu 20.04.5 LTS
        Global Storage Pool
          Total Used        :  6.0 GiB
          Total Capacity    :  40 GiB
        ```
    3. Verifica che tutti i nodi di lavoro che volevi includere nel tuo livello di archiviazione Portworx siano presenti esaminando la colonna **StorageNode** nella sezione **Cluster Summary** del tuo output della CLI. I nodi di lavoro che si trovano nel livello di archiviazione vengono visualizzati con l'indicazione " `Yes` " nella **StorageNode** colonna.
    
        Poiché Portworx funziona come un' DaemonSet e nel cluster, i nodi di lavoro esistenti vengono automaticamente ispezionati per verificare la presenza di storage a blocchi raw e aggiunti al livello dati Portworx quando si distribuisce Portworx. Se aggiungi nodi worker al tuo cluster e aggiungi storage a blocchi raw a tali worker, riavvia i pod Portworx sui nuovi nodi worker in modo che i tuoi volumi di storage vengano rilevati dall' DaemonSet.
        {: note}
    
    4. Verifica che ogni nodo di archiviazione sia elencato con la quantità corretta di archiviazione blocchi non elaborata esaminando la colonna **Capacity** nella sezione **Cluster Summary** del tuo output della CLI.
    
    5. Esamina la classificazione I/O di Portworx che era stata assegnata ai dischi che fanno parte del cluster Portworx. Durante la configurazione del tuo cluster Portworx, ogni disco viene ispezionato per determinare il profilo delle prestazioni del dispositivo. La classificazione del profilo dipende da quanto è rapida la rete a cui è connesso il tuo nodo di lavoro e dal tipo di dispositivo di archiviazione di cui disponi. I dischi dei nodi di lavoro SDS sono classificati come `high`. Se si collegano manualmente dei dischi a un nodo di lavoro virtuale, tali dischi vengono classificati come “ `low` ” a causa della minore velocità di rete tipica dei nodi di lavoro virtuali.
    ```sh {: pre}
        oc exec -it <portworx_pod> -n kube-system -- /opt/pwx/bin/pxctl cluster provision-status
        ```
        Output di esempio
    
        ```sh {: screen}
        NODE        NODE STATUS    POOL    POOL STATUS    IO_PRIORITY    SIZE    AVAILABLE    USED    PROVISIONED    RESERVEFACTOR    ZONE    REGION        RACK
        10.184.58.11    Up        0    Online        LOW        20 GiB    17 GiB        3.0 GiB    0 B        0        dal12    us-south    default
        10.176.48.67    Up        0    Online        LOW        20 GiB    17 GiB        3.0 GiB    0 B        0        dal10    us-south    default
        10.176.48.83    Up        0    Online        HIGH        3.5 TiB    3.5 TiB        10 GiB    0 B        0        dal10    us-south    default
        ```
    
    
    

Creazione di un volume Portworx

Inizia a creare volumi " Portworx " utilizzando il provisioning dinamico " Kubernetes ".

  1. Elenca le classi di archiviazione disponibili nel tuo cluster e controlla se puoi utilizzare una classe di archiviazione Portworx esistente configurata durante l'installazione di Portworx. Le classi di archiviazione predefinite sono ottimizzate per l'utilizzo del database e per condividere i dati tra i pod.

    oc get sc | grep portworx
    

    Per visualizzare i dettagli di una classe di archiviazione, eseguire il comando oc describe storageclass <storageclass_name>``.

  2. Se non vuoi utilizzare una classe di archiviazione esistente, puoi crearne una personalizzata. Per un elenco completo delle opzioni supportate che è possibile specificare nella classe di archiviazione, consultare la sezione " Utilizzo del provisioning dinamico ".

    1. Crea un file di configurazione per la tua classe di archiviazione.
        kind: StorageClass
        apiVersion: storage.k8s.io/v1
        metadata:
          name: <storageclass_name>
        provisioner: kubernetes.io/portworx-volume
        parameters:
          repl: "<replication_factor>"
          secure: "<true_or_false>"
          priority_io: "<io_priority>"
          shared: "<true_or_false>"
        ```
        `metadata.name`
        :   Immetti un nome per la tua classe di archiviazione.
    
        `parameters.repl`
        :   Immetti il numero di repliche per i tuoi dati che vuoi archiviare in diversi nodi di lavoro. I numeri consentiti sono `1`,`2` o `3`. Ad esempio, se si immette `3`, i dati vengono replicati su tre diversi nodi di lavoro all’interno del cluster Portworx. Per archiviare i tuoi dati in modo che siano altamente disponibili, utilizza un cluster multizona e replica i tuoi dati su tre nodi di lavoro in zone differenti.
                        È necessario disporre di un numero sufficiente di nodi di lavoro per soddisfare i requisiti di replica. Ad esempio, se hai due nodi di lavoro ma specifichi tre repliche, la creazione della PVC con questa classe di archiviazione non riesce.
            {: note}
    
        `parameters.secure`
        :   Specifica se vuoi crittografare i dati nel tuo volume con IBM Key Protect. Scegli tra le seguenti opzioni.
            - `true`: Digita `true` per abilitare la crittografia dei volumi di Portworx. Per crittografare i volumi, devi disporre di un'istanza del servizio IBM Key Protect e di un segreto Kubernetes che contiene la tua CRK (customer root key). Per ulteriori informazioni su come configurare la crittografia per i volumi Portworx, vedi [Crittografia dei tuoi volumi Portworx](/docs/openshift?topic=openshift-storage_portworx_encryption).
            - `false`: Quando accedi a `false`, i tuoi volumi Portworx non sono crittografati. Se non si specifica questa opzione, i volumi di  Portworx  non vengono crittografati per impostazione predefinita. È possibile scegliere di abilitare la crittografia a volume nel proprio PVC, anche se la crittografia è stata disabilitata nella classe di archiviazione. L'impostazione che specifichi nella PVC ha la precedenza sulle impostazioni nella classe di archiviazione.
    
        `parameters.priority_io`
        :   Immetti la priorità dell'I/O di Portworx che desideri richiedere per i tuoi dati. Le opzioni disponibili sono `high`, `medium` e `low`. Durante la configurazione del tuo cluster Portworx, ogni disco viene ispezionato per determinare il profilo delle prestazioni del dispositivo. La classificazione dei profili dipende dalla larghezza di banda della rete del nodo di lavoro e dal tipo di dispositivo di archiviazione. I dischi dei nodi di lavoro SDS sono classificati come `high`. Se si collegano manualmente dei dischi a un nodo di lavoro virtuale, tali dischi vengono classificati come  `low`  a causa della minore velocità di rete tipica dei nodi di lavoro virtuali.
            :   Quando si crea un PVC con una classe di archiviazione, il numero di repliche specificato in  `parameters/repl`  ha la precedenza sulla priorità di I/O. Ad esempio, quando specifichi tre repliche che vuoi archiviare su dischi ad alta velocità, ma hai solo un singolo nodo di lavoro con un disco ad alta velocità nel tuo cluster, la tua creazione della PVC riesce comunque. I tuoi dati vengono replicati sia sui dischi ad alta velocità che su quelli a bassa velocità.
    
        `parameters.shared`
        :   Definisci se vuoi consentire a più pod di accedere allo stesso volume. Scegli tra le seguenti opzioni:
            - Vero: se si imposta questa opzione su  `true` ”, è possibile accedere allo stesso volume da più pod distribuiti tra i nodi di lavoro in zone diverse.
            - Falso: se si imposta questa opzione su  `false` ”, è possibile accedere al volume da più pod solo se questi sono distribuiti sul nodo di lavoro a cui è collegato il disco fisico che supporta il volume. Se il pod viene distribuito su un nodo di lavoro diverso, non potrà accedere al volume.
    
    2. Crea la classe di archiviazione.
    ```sh {: pre}
        oc apply -f storageclass.yaml
        ```
    3. Verifica che la tua classe di archiviazione sia stata creata.
    ```sh {: pre}
        oc get sc
        ```
    
  3. Crea una PVC (persistent volume claim).

    1. Crea un file di configurazione per la tua PVC.
        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
          name: mypvc
        spec:
          accessModes:
            - <access_mode>
          resources:
            requests:
              storage: <size>
          storageClassName: portworx-shared-sc
        ```
        `metadata.name`
        :   Inserisci un nome per il tuo PVC, ad esempio  `mypvc` ”.
    
        `spec.accessModes`
        :   Selezionare la [modalità di accesso  Kubernetes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes){: external}  che si desidera utilizzare.
    
        `resources.requests.storage`
        :   Immetti la quantità di archiviazione in gigabyte che desideri assegnare dal tuo cluster Portworx. Ad esempio, per assegnare 2 gigabyte dal tuo cluster Portworx, immetti `2Gi`. La quantità di archiviazione che puoi specificare è limitata dalla quantità di archiviazione disponibile nel tuo cluster Portworx. Se nella classe di archiviazione è stato specificato un fattore di replica superiore a 1, lo spazio di archiviazione specificato nel PVC viene riservato su più nodi di lavoro.
    
        `spec.storageClassName`
        :   Immetti il nome della classe di archiviazione che hai scelto o creato in precedenza e che vuoi utilizzare per eseguire il provisioning del tuo PV. Il file YAML di esempio utilizza la classe di archiviazione  `portworx-shared-sc` ”.
    
    2. Crea la tua PVC.
    ```sh {: pre}
        oc apply -f pvc.yaml
        ```
    3. Verifica che la tua PVC sia stata creata e associata a un volume persistente (o PV, persistent volume). Questo processo potrebbe richiedere alcuni minuti.
    ```sh {: pre}
        oc get pvc
        ```
    
    
    

Montaggio del volume sulla tua applicazione

Per accedere all'archiviazione dalla tua applicazione, devi montare la PVC sulla tua applicazione.

  1. Crea un file di configurazione per una distribuzione che monta la PVC.

    Per suggerimenti su come distribuire un set stateful con Portworx, vedere StatefulSets. La documentazione di Portworx include anche esempi su come implementare Cassandra, Kafka, ElasticSearch con Kibana e WordPress con MySQL.

    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:
          schedulerName: stork
          containers:
          - image: <image_name>
            name: <container_name>
          securityContext:
              fsGroup: <group_ID>
            volumeMounts:
            - name: <volume_name>
              mountPath: /<file_path>
          volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>
    
    metadata.labels.app
    Un'etichetta per la distribuzione.
    spec.selector.matchLabels.app e spec.template.metadata.labels.app
    Un'etichetta per la tua applicazione.
    template.metadata.labels.app
    Un'etichetta per la distribuzione.
    spec.schedulerName
    Utilizza Stork come scheduler per il tuo cluster Portworx. Con Stork è possibile collocare i pod insieme ai relativi dati, garantire una migrazione senza interruzioni dei pod in caso di errori di archiviazione e semplificare la creazione e il ripristino di snapshot dei volumi di “ Portworx ”.
    spec.containers.image
    Il nome dell'immagine che vuoi utilizzare. Per elencare le immagini disponibili nel tuo account IBM Cloud Container Registry, esegui ibmcloud cr image-list.
    spec.containers.name
    Il nome del contenitore che vuoi distribuire al tuo cluster.
    spec.containers.securityContext.fsGroup
    Facoltativo: per accedere allo spazio di archiviazione con un utente non root, specifica il contesto di sicurezza per il tuo pod e definisci l'insieme di utenti a cui desideri concedere l'accesso nella sezione " fsGroup " del file YAML della tua distribuzione. Per ulteriori informazioni, consultare la sezione " Accesso ai volumi di " Portworx " con un utente non root ".
    spec.containers.volumeMounts.mountPath
    Il percorso assoluto della directory in cui viene montato il volume nel contenitore. Se desideri condividere un volume tra diverse app, puoi specificare i percorsi secondari del volume per ciascuna delle tue app.
    spec.containers.volumeMounts.name
    Il nome del volume per montare il tuo pod.
    volumes.name
    Il nome del volume per montare il tuo pod. In genere questo nome corrisponde a volumeMounts/name.
    volumes.persistentVolumeClaim.claimName
    Il nome della PVC che esegue il bind del PV che vuoi utilizzare.
  2. Crea la tua distribuzione.

    oc apply -f deployment.yaml
    
  3. Verifica che il PV sia stato montato correttamente nella tua applicazione.

    oc describe deployment <deployment_name>
    

    Il punto di montaggio è nel campo Montaggi volume e il volume nel campo Volumi.

    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:    mypvc
        ReadOnly:    false
    
  4. Verifica di poter scrivere i dati nel tuo cluster Portworx.

    1. Accedi al pod che monta il tuo PV.
        oc exec <pod_name> -it bash
        ```
    2. Vai al tuo percorso di montaggio del volume che hai definito nella distribuzione della tua applicazione.
    3. Crea un file di testo.
    ```sh {: pre}
        echo "This is a test" > test.txt
        ```
    4. Leggi il file che hai creato.
    ```sh {: pre}
        cat test.txt
        ```