IBM Cloud Docs
Instalación de Portworx en el clúster

Instalación de Portworx en el clúster

Suministre una instancia de servicio de Portworx desde el catálogo de IBM Cloud. Después de crear la instancia de servicio, se instala en el clúster la edición de empresa más reciente de Portworx (px-enterprise) mediante Helm. Además, Stork también se instala en el clúster de Red Hat OpenShift on IBM Cloud. Stork es el planificador de almacenamiento de Portworx. Con Stork, puede colocar pods con sus datos y crear y restaurar instantáneas de los volúmenes de Portworx.

¿Está buscando instrucciones sobre cómo actualizar o eliminar Portworx? Consulte Actualización de Portworx y Eliminación de Portworx.

El método de instalación por defecto para Portworx Enterprise y Portworx Backup todavía no es compatible con los clústeres privados de la región de Montreal. Póngase en contacto con el servicio de asistencia Portworx si necesita instalar Portworx Enterprise o Portworx Backup en un clúster privado en Montreal. Para más información, consulte Portworx Support

Antes de empezar:

Para instalar Portworx:

  1. Abra el servicio Portworx desde el catálogo IBM Cloud y rellene los campos como se indica a continuación:

    1. Seleccione la región en la que se encuentra el clúster de Red Hat OpenShift on IBM Cloud.

    2. Revise la información sobre precios de Portworx.

    3. Especifique el nombre de la instancia de servicio de Portworx.

    4. Seleccione el grupo de recursos en el que se encuentre el clúster.

    5. En el campo Etiqueta, escriba el nombre del clúster en el que desea instalar Portworx. Después de crear la instancia de servicio de Portworx, no puede ver el clúster en el que ha instalado Portworx. Para localizar el clúster fácilmente más adelante, asegúrese de especificar el nombre del clúster y la información adicional como etiquetas.

    6. Escriba una clave de API de IBM Cloud para recuperar la lista de clústeres a los que tiene acceso. Si no tiene ninguna clave de API, consulte Gestión de claves de API de usuario. Después de especificar la clave de API, aparece el campo Nombre de clúster de Kubernetes o de OpenShift.

    7. Especifique un Nombre de clúster de Portworx exclusivo.

    8. En el menú Unidades de nube:

      1. Seleccione Utilizar unidades de nube (sólo clústeres de VPC) para suministrar dinámicamente Block Storage for VPC para Portworx. Después de seleccionar Utilizar unidades de nube, seleccione el Nombre de clase de almacenamiento y el Tamaño de las unidades de almacenamiento en bloque que desee suministrar.
      2. Seleccione Utilizar unidades ya conectadas (Clásico, VPC o Satellite) para utilizar el almacenamiento en bloque que ya está conectado a los nodos de trabajador.
    9. En el menú desplegable Almacén de claves y valores de metadatos de Portworx, elija el tipo de almacén de claves y valores que desea utilizar para guardar los metadatos de Portworx. Seleccione KVDB de Portworx para crear automáticamente un almacén de claves y valores durante la instalación de Portworx o seleccione Databases for etcd si desea utilizar una instancia existente de Databases for etcd. Si elige Databases for etcd, aparecen los campos Puntos finales de API de etcd y Nombre de secreto de etcd.

    10. Espacio de nombres: especifique el espacio de nombres en el que desea desplegar los recursos de Portworx.

    11. Obligatorio dolo para Databases for etcd: escriba la información de la instancia de servicio de Databases for etcd.

      1. Recupere el punto final etcd y el nombre del secreto de Kubernetes que ha creado para la instancia de servicio de Databases for etcd.
      2. En el campo Puntos finales de API de etcd, escriba el punto final de API de la instancia de servicio de Databases for etcd que ha recuperado antes. Indique el punto final con el formato etcd:<etcd_endpoint1>;etcd:<etcd_endpoint2>. Si tiene más de un punto final, incluya todos los puntos finales y sepárelos con un signo de dos puntos (;).
      3. En el campo Nombre de secreto de etcd, escriba el nombre del secreto de Kubernetes que ha creado en el clúster para guardar las credenciales de servicio de Databases for etcd.
    12. En la lista desplegable Nombre de clúster de Kubernetes o de OpenShift, seleccione el clúster en el que desea instalar Portworx. Si el clúster no aparece en la lista, asegúrese de seleccionar la región de IBM Cloud correcta. Si la región es correcta, compruebe que tiene los permisos adecuados para ver y para trabajar con el clúster. Asegúrese de seleccionar un cluster que cumpla los requisitos mínimos de hardware para Portworx.

    13. Opcional: en la lista desplegable de tipo de almacén de secretos de Portworx, elija el tipo de almacén de secretos que desea utilizar para almacenar la clave de cifrado de volumen.

      • Secreto de Kubernetes: elija esta opción si desea almacenar su propia clave personalizada para cifrar los volúmenes en un secreto de Kubernetes en el clúster. El secreto no debe estar presente antes de instalar Portworx. Puede crear el secreto después de instalar Portworx. Para más información, consulte la documentación de Portworx.
      • IBM Key Protect: elija esta opción si desea utilizar claves raíz en IBM Key Protect para cifrar los volúmenes. Asegúrese de seguir las instrucciones para crear su instancia de servicio de IBM Key Protect y para almacenar las credenciales relacionadas con cómo acceder a la instancia de servicio en un secreto de Kubernetes en el proyecto portworx antes de instalar Portworx.
    14. Opcional: si desea configurar un dispositivo de diario o dispositivos KVDB, especifique los detalles del dispositivo en el campo Opciones avanzadas. Puede elegir las opciones siguientes para los dispositivos de diario.

      • Especifique j;auto para permitir que Portworx cree automáticamente una partición de 3 GB en uno de los dispositivos de almacenamiento en bloque que se van a utilizarán para el diario.
      • Especifique j;</device/path> para utilizar un dispositivo específico para el diario. Por ejemplo, especifique j;/dev/vde para utilizar el disco ubicado en /dev/vde. Para encontrar la vía de acceso del dispositivo que desea utilizar para el diario, inicie sesión en un nodo de trabajador y ejecute lsblk.
      • Escriba kvdb_dev;<device path> para especificar el dispositivo en el que desea almacenar los datos de la KVDB interna. Por ejemplo, kvdb_dev;/dev/vdd. Para encontrar la vía de acceso del dispositivo que desea utilizar, inicie sesión en un nodo de trabajador y ejecute lsblk. Para utilizar un dispositivo específico para los datos de KVDB, debe tener un dispositivo de almacenamiento disponible de 3 GB o en al menos 3 nodos de trabajador. Los dispositivos también deben estar en la misma vía de acceso en cada nodo de trabajador. Por ejemplo: /dev/vdd.
  2. Pulse Crear para comenzar la instalación de Portworx en el clúster. El proceso puede tardar varios minutos en completarse. Se abre la página de detalles del servicio con instrucciones sobre cómo verificar la instalación de Portworx, cómo crear una reclamación de volumen persistentes (PVC) y cómo montar la PVC en una app.

  3. En la lista de recursos IBM Cloud, busque el servicio Portworx que ha creado.

  4. Revise la columna de Estado para ver si la instalación se ha ejecutado correctamente o no. El estado puede tardar unos minutos en actualizarse.

  5. Si la columna Status contiene Provision failure, siga las instrucciones para resolver el motivo por el que la instalación ha fallado.

  6. Si Status muestra Provisioned, verifique que la instalación de Portworx se ha realizado correctamente y que todos los discos locales se han reconocido y se han añadido a la capa de almacenamiento de Portworx.

    1. Obtenga una lista de los pods de Portworx del proyecto kube-system. La instalación se ha realizado correctamente cuando se ven uno o varios pods portworx, stork y stork-scheduler. El número de pods equivale al número de nodos de trabajador que hay en el clúster de Portworx. Todos los pods deben estar en un estado Running.

      oc get pods -n kube-system | grep 'portworx\|stork'
      

      Salida de ejemplo

      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. Inicie una sesión en uno de los pods de portworx y obtenga una lista del estado del clúster de Portworx.

      oc exec <portworx_pod> -it -n kube-system -- /opt/pwx/bin/pxctl status
      

      Salida de ejemplo

      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. Verifique que todos los nodos trabajadores que desea incluir en la capa de almacenamiento de Portworx están incluidos; para ello revise la columna StorageNode de la sección Cluster Summary de la salida de la CLI. Los nodos de trabajador que están en la capa de almacenamiento aparecen con Yes en la columna StorageNode.

      Puesto que Portworx se ejecuta como DaemonSet en el clúster, los nodos de trabajoador existentes se inspeccionan automáticamente para el almacenamiento en bloque sin formato y se añaden a la capa de datos de Portworx cuando se despliega Portworx. Si añade nodos de trabajador al clúster y añade almacenamiento en bloque sin formato a esos trabajadores, reinicie los pods de Portworx en los nuevos nodos de trabajador para que el DaemonSet detecte los volúmenes de almacenamiento.

    4. Verifique que cada nodo de almacenamiento aparece en la lista con la cantidad correcta de almacenamiento en bloque sin formato; para ello revise la columna Capacity en la sección Cluster Summary de la salida de la CLI.

    5. Revise la clasificación de E/S de Portworx que se ha asignado a los discos que forman parte del clúster de Portworx. Durante la configuración del clúster de Portworx, se inspecciona cada disco para determinar el perfil de rendimiento del dispositivo. La clasificación del perfil depende de la velocidad de la red a la que está conectado el nodo trabajador y del tipo de dispositivo de almacenamiento que tiene. Los discos de los nodos trabajadores SDS se clasifican como high. Si conecta discos a un nodo de trabajador virtual manualmente, dichos discos reciben la clasificación low, debido a una velocidad de red inferior asociada a los nodos de trabajador virtuales.

      oc exec -it <portworx_pod> -n kube-system -- /opt/pwx/bin/pxctl cluster provision-status
      

      Salida de ejemplo

      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
      

Creación de un volumen de Portworx

Comience a crear volúmenes Portworx utilizando el aprovisionamiento dinámico Kubernetes.

  1. Obtenga una lista de las clases de almacenamiento disponibles en el clúster y compruebe si puede utilizar una clase de almacenamiento de Portworx existente configurada durante la instalación de Portworx. Las clases de almacenamiento predefinidas se optimizan para su uso en la base de datos y para compartir datos entre pods.

    oc get sc | grep portworx
    

    Para ver los detalles de una clase de almacenamiento, ejecute oc describe storageclass <storageclass_name>.

  2. Si no desea utilizar una clase de almacenamiento existente, cree una clase de almacenamiento personalizada. Para obtener una lista completa de las opciones admitidas que puede especificar en su clase de almacenamiento, consulte Utilización del aprovisionamiento dinámico.

    1. Cree un archivo de configuración para la clase de almacenamiento.

      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
      Especifique un nombre para la clase de almacenamiento.
      parameters.repl
      Especifique el número de réplicas de los datos que desea almacenar en distintos nodos trabajadores. Los números permitidos son 1,2 o 3. Por ejemplo, si especifica 3, los datos se replicarán en tres nodos de trabajador distintos en el clúster de Portworx. Para almacenar sus datos de alta disponibilidad, utilice un clúster multizona y duplique los datos entre tres nodos trabajadores de distintas zonas. Debe tener suficientes nodos de trabajador para cumplir el requisito de réplica. Por ejemplo, si tiene dos nodos trabajadores, pero especifica tres réplicas, la creación de la PVC con esta clase de almacenamiento falla.
      parameters.secure
      Especifique si desea cifrar los datos del volumen con IBM Key Protect. Puede elegir entre las siguientes opciones.
      • true: Especifique true para habilitar el cifrado para los volúmenes de Portworx. Para cifrar volúmenes, debe tener una instancia de servicio de IBM Key Protect y un secreto de Kubernetes que contenga la clave raíz del cliente. Para obtener más información sobre cómo configurar el cifrado para los volúmenes de Portworx, consulte Cifrado de volúmenes de Portworx.
      • false: Cuando se especifica false, los volúmenes de Portworx no se cifran. Si no especifica esta opción, los volúmenes de Portworx no se cifran de forma predeterminada. Puede optar por habilitar el cifrado de volúmenes en la PVC, incluso si ha inhabilitado el cifrado en la clase de almacenamiento. El valor de la PVC prevalece sobre los valores de la clase de almacenamiento.
      parameters.priority_io
      Especifique la prioridad de E/S de Portworx que desea solicitar para los datos. Las opciones disponibles son high, medium y low. Durante la configuración del clúster de Portworx, se inspecciona cada disco para determinar el perfil de rendimiento del dispositivo. La clasificación del perfil depende del ancho de banda de red del nodo de trabajador y del tipo de dispositivo de almacenamiento. Los discos de los nodos trabajadores SDS se clasifican como high. Si conecta discos a un nodo de trabajador virtual manualmente, dichos discos reciben la clasificación low, debido a una velocidad de red inferior asociada a los nodos de trabajador virtuales.
      Al crear una PVC con una clase de almacenamiento, el número de réplicas que especifica en parameters/repl altera temporalmente la prioridad de E/S. Por ejemplo, cuando especifique tres réplicas que quiera almacenar en discos de alta velocidad, pero solo tiene un nodo trabajador con un disco de alta velocidad en su clúster, la creación de su PVC aún será correcta. Los datos se replican en discos de alta velocidad y de baja velocidad.
      parameters.shared
      Defina si desea permitir que varios pods accedan al mismo volumen. Seleccione una de las opciones siguientes:
      • True: si esta opción se establece a true, podrán acceder al mismo volumen varios pods distribuidos entre nodos trabajadores de zonas diferentes.
      • False: si esta opción se establece a false, solo podrá acceder al volumen desde varios pods si estos están desplegados en el nodo trabajador que conecta el disco físico que da respaldo al volumen. Si el pod se despliega en un nodo de trabajador diferente, el pod no puede acceder al volumen.
    2. Cree la clase de almacenamiento.

      oc apply -f storageclass.yaml
      
    3. Verifique que se ha creado la clase de almacenamiento.

      oc get sc
      
  3. Cree una reclamación de volumen persistente (PVC).

    1. Cree un archivo de configuración para la PVC.

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: mypvc
      spec:
        accessModes:
          - <access_mode>
        resources:
          requests:
            storage: <size>
        storageClassName: portworx-shared-sc
      
      metadata.name
      Especifique un nombre para la PVC, como por ejemplo mypvc.
      spec.accessModes
      Introduzca el modo de acceso Kubernetes que desea utilizar.
      resources.requests.storage
      Especifique la cantidad de almacenamiento en gigabytes que desea asignar desde el clúster de Portworx. Por ejemplo, para asignar 2 gigabytes desde el clúster de Portworx, especifique 2Gi. La cantidad de almacenamiento que puede especificar está limitada por la cantidad de almacenamiento que está disponible en el clúster de Portworx. Si ha especificado un factor de réplica en la clase de almacenamiento superior a 1, la cantidad de almacenamiento que especifica en la PVC está reservada en varios nodos de trabajador.
      spec.storageClassName
      Especifique el nombre de la clase de almacenamiento que ha elegido o que ha creado anteriormente y que desea utilizar para suministrar el PV. En el archivo YAML de ejemplo se utiliza la clase de almacenamiento portworx-shared-sc.
    2. Cree la PVC.

      oc apply -f pvc.yaml
      
    3. Verifique que la PVC se ha creado y se ha vinculado a un volumen persistente (PV). Este proceso puede tardar unos minutos.

      oc get pvc
      

Montaje del volumen en la app

Para acceder al almacenamiento desde la app, debe montar la PVC en la app.

  1. Cree un archivo de configuración para un despliegue que monte la PVC.

    Para obtener consejos sobre cómo desplegar un conjunto con estado con Portworx, consulte StatefulSets. La documentación de Portworx también incluye ejemplos sobre cómo desplegar Cassandra, Kafka, ElasticSearch con Kibanay 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
    Una etiqueta para el despliegue.
    spec.selector.matchLabels.app y spec.template.metadata.labels.app
    Una etiqueta para la app.
    template.metadata.labels.app
    Una etiqueta para el despliegue.
    spec.schedulerName
    Utilice Stork como programador para su clúster Portworx. Con Stork, puede colocar los pods con sus datos, proporciona una migración fluida de los pods en caso de errores de almacenamiento y facilita la creación y restauración de instantáneas de los volúmenes de Portworx.
    spec.containers.image
    El nombre de la imagen que desea utilizar. Para ver una lista de todas las imágenes disponibles en su cuenta de IBM Cloud Container Registry, ejecute ibmcloud cr image-list.
    spec.containers.name
    El nombre del contenedor que desea desplegar en el clúster.
    spec.containers.securityContext.fsGroup
    Opcional: Para acceder a su almacenamiento con un usuario no root, especifique el contexto de seguridad para su pod y defina el conjunto de usuarios a los que desea conceder acceso en la sección fsGroup de su YAML de despliegue. Para obtener más información, consulte Acceso a volúmenes de Portworx con un usuario no root.
    spec.containers.volumeMounts.mountPath
    La vía de acceso absoluta del directorio en el que el que está montado el volumen dentro del contenedor. Si quieres compartir un volumen entre diferentes aplicaciones, puedes especificar sub-rutas de volumen para cada una de tus aplicaciones.
    spec.containers.volumeMounts.name
    El nombre del volumen que va a montar en el pod.
    volumes.name
    El nombre del volumen que va a montar en el pod. Normalmente, este nombre es el mismo que volumeMounts/name.
    volumes.persistentVolumeClaim.claimName
    El nombre de la PVC que enlaza el PV que desea utilizar.
  2. Cree el despliegue.

    oc apply -f deployment.yaml
    
  3. Verifique que el PV se ha montado correctamente en la app.

    oc describe deployment <deployment_name>
    

    El punto de montaje se muestra en el campo Volume Mounts y el volumen se muestra en el campo Volumes.

    Volume Mounts:
            /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
            /volumemount from myvol (rw)
    ...
    Volumes:
        myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    
  4. Verifique que puede escribir datos en el clúster de Portworx.

    1. Inicie la sesión en el pod que monta el PV.
      oc exec <pod_name> -it bash
      
    2. Vaya a la vía de acceso de montaje de volumen que ha definido en el despliegue de la app.
    3. Cree un archivo de texto.
      echo "This is a test" > test.txt
      
    4. Lea el archivo que ha creado.
      cat test.txt