IBM Cloud Docs
Installation de Portworx dans votre cluster

Installation de Portworx dans votre cluster

Mettez à disposition une instance de service Portworx à partir du catalogue IBM Cloud. Après avoir créé l'instance de service, la dernière édition d'entreprise de Portworx (px-enterprise) est installée sur votre cluster en utilisant Helm. En outre, Stork est également installé sur votre cluster IBM Cloud Kubernetes Service. Stork est le planificateur de stockage de Portworx. Avec Stork, vous pouvez colocaliser les pods avec leurs données et créer et restaurer des instantanés des volumes Portworx.

Vous recherchez les instructions pour mettre à jour ou supprimer Portworx ? Voir Mise à jour de Portworx et Retrait de Portworx.

La méthode d'installation par défaut pour Portworx Enterprise et Portworx Backup n'est pas encore prise en charge pour les clusters privés dans la région de Montréal. Contactez le support Portworx si vous devez installer Portworx Enterprise ou Portworx Backup dans un cluster privé à Montréal. Pour plus d'informations, voir Portworx Support

Avant de commencer :

Pour installer Portworx :

  1. Ouvrez le service Portworx à partir du catalogue IBM Cloud et complétez les champs comme suit :

    1. Sélectionnez la région dans laquelle se trouve votre cluster IBM Cloud Kubernetes Service.

    2. Consultez les informations de tarification pour Portworx.

    3. Entrez un nom pour votre instance de service Portworx.

    4. Sélectionnez le groupe de ressources dans lequel se trouve votre cluster.

    5. Dans la zone Etiquette, entrez le nom du cluster dans lequel vous souhaitez installer Portworx. Après avoir créé l'instance de service Portworx, vous ne pouvez pas voir le cluster dans lequel vous avez installé Portworx. Pour retrouver ce cluster facilement par la suite, assurez-vous d'indiquer le nom du cluster ainsi que toute autre information en tant qu'étiquettes.

    6. Entrez une clé d'API IBM Cloud pour extraire la liste des clusters auxquels vous avez accès. Si vous n'avez pas de clé d'API, voir Gestion des clés d'API d'utilisateur. Une fois que vous avez entré la clé d'API, la zone Kubernetes or OpenShift cluster name apparaît.

    7. Entrez une valeur de nom du cluster Portworx unique.

    8. Dans le menu des pilotes de cloud :

      1. Sélectionnez Utiliser les pilotes de cloud (Clusters VPC uniquement) pour la mise à disposition dynamique de Block Storage for VPC pour Portworx. Après avoir sélectionné Utiliser les unités de cloud, sélectionnez le Nom de la classe de stockage et la Taille des unités de stockage de bloc que vous souhaitez mettre à disposition.
      2. Sélectionnez Utiliser des unités déjà connectées (Classic, VPC ou Satellite) pour utiliser la mémoire de bloc qui est déjà connectée à vos nœuds worker.
    9. Dans la liste déroulante Portworx metadata key-value store, choisissez le type de base de données clé-valeur que vous voulez utiliser pour le stockage des métadonnées Portworx. Sélectionnez Portworx KVDB pour créer automatiquement une base de données clé-valeur lors de l'installation de Portworx ou Databases for etcd pour utiliser une instance Databases for etcd existante. Si vous choisissez Databases for etcd, les zones Etcd API endpoints et Etcd secret name apparaissent.

    10. Namespace: entrez l'espace de nom dans lequel vous souhaitez déployer les ressources Portworx.

    11. Requis uniquement pour Databases for etcd : entrez les informations de votre instance de service Databases for etcd.

      1. Récupérez le noeud final etcd et le nom du secret Kubernetes que vous avez créé pour votre instance de service Databases for etcd.
      2. Dans la zone Etcd API endpoints, entrez le noeud final d'API de votre instance de service Databases for etcd que vous avez récupéré précédemment. Assurez-vous d'entrer le noeud final au format etcd:<etcd_endpoint1>;etcd:<etcd_endpoint2>. Si vous avez plusieurs noeuds finaux, incluez-les tous en les séparant par un point-virgule (;).
      3. Dans la zone Etcd secret name, entrez le nom du secret Kubernetes que vous avez créé dans votre cluster pour stocker les données d'identification du service Databases for etcd.
    12. Dans la liste déroulante Kubernetes or OpenShift cluster name, sélectionnez le cluster dans lequel vous souhaitez installer Portworx. Si votre cluster n'est pas répertorié, veillez à sélectionner la région IBM Cloud adéquate. Si la région est correcte, vérifiez que vous disposez des droits appropriés pour afficher et gérer votre cluster. Assurez-vous de sélectionner un cluster qui répond aux exigences matérielles minimales pour Portworx.

    13. Facultatif : Dans la liste déroulante Type de magasin secret Portworx, sélectionnez le type de magasin secret à utiliser pour stocker la clé de chiffrement de volume.

      • Kubernetes Secret : choisissez cette option si vous voulez stocker votre propre clé personnalisée pour chiffrer vos volumes dans un secret Kubernetes dans votre cluster. Le secret ne doit pas exister avant l'installation de Portworx. Vous pouvez le créer après avoir installé Portworx. Pour plus d'informations, voir la documentation de Portworx.
      • IBM Key Protect : choisissez cette option si vous souhaitez utiliser des clés racine dans IBM Key Protect pour chiffrer vos volumes. Prenez soin de suivre les instructions pour créer votre instance de service IBM Key Protect et stocker les données d'identification permettant d'accéder à votre instance de service dans un secret Kubernetes dans l'espace de noms portworx avant d'installer Portworx.
    14. Facultatif : si vous souhaitez configurer un périphérique de journal ou des unités KVDB, entrez les détails de l'unité dans la zone Options avancées. Choisissez parmi les options suivantes pour les périphériques de journal.

      • Entrez j;auto pour permettre à Portworx de créer automatiquement une partition de 3 Go sur l'un de vos périphériques de stockage de blocs à utiliser pour le journal.
      • Entrez j;</device/path> pour utiliser un périphérique spécifique pour le journal. Par exemple, entrez j;/dev/vde pour utiliser le disque situé dans /dev/vde. Pour rechercher le chemin d'accès de l'unité que vous souhaitez utiliser pour le journal, connectez-vous à un noeud worker et exécutez lsblk.
      • Entrez kvdb_dev;<device path> pour indiquer l'unité dans laquelle vous souhaitez stocker les données KVDB internes. Par exemple, kvdb_dev;/dev/vdd. Pour rechercher le chemin d'accès de l'unité à utiliser, connectez-vous à un noeud worker et exécutez lsblk. Pour utiliser une unité spécifique pour les données KVDB, vous devez disposer d'une unité de stockage disponible de 3GB ou d'au moins 3 nœuds worker. Les unités doivent également et sur le même chemin sur chaque noeud worker. Par exemple : /dev/vdd.
  2. Cliquez sur Créer pour démarrer l'installation de Portworx dans votre cluster. L'exécution de ce processus peut prendre quelques minutes. La page des détails du service s'affiche avec les instructions permettant de vérifier votre installation Portworx, créer une réservation de volume persistant (PVC) et monter cette PVC sur une application.

  3. Dans la liste des ressources IBM Cloud, recherchez le service Portworx que vous avez créé.

  4. Consultez la colonne Statut pour voir si l'installation a réussi ou échoué. La mise à jour du statut peut prendre quelques minutes.

  5. Si la valeur de Statut passe à Provision failure, suivez les instructions pour commencer par identifier la cause de l'échec de l'installation.

  6. Si la valeur de Statut passe à Provisioned, vérifiez que votre installation Portworx a abouti et que tous vos disques locaux ont été reconnus et ajoutés à votre couche de stockage Portworx.

    1. Répertoriez les pods Portworx dans l'espace de noms kube-system. L'installation a abouti lorsque vous voyez un ou plusieurs pods portworx, stork et stork-scheduler. Le nombre de pods est égal au nombre de nœuds worker qui se trouvent dans votre cluster Portworx. Tous les pods doivent être à l'état Running.

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

      Exemple de sortie

      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. Connectez-vous à l'un de vos pods portworx et affichez le statut de votre cluster Portworx.

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

      Exemple de sortie

      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. Vérifiez que tous les noeuds worker que vous souhaitiez inclure dans votre couche de stockage sont inclus en consultant la colonne StorageNode dans la section Cluster Summary de la sortie de l'interface CLI. Les nœuds worker qui se trouvent dans la couche de stockage sont affichés avec Yes dans la colonne Noeud de stockage.

      Puisque Portworx fonctionne comme un DaemonSet dans votre cluster, les nœuds worker existants sont automatiquement inspectés pour le stockage de blocs bruts et ajoutés à la couche de données de Portworx lorsque vous déployez Portworx. Si vous ajoutez des nœuds worker à votre cluster et ajoutez le stockage de bloc brut à ces travailleurs, redémarrez les pods Portworx sur les nouveaux nœuds worker pour que vos volumes de stockage soient détectés par le DaemonSet.

    4. Vérifiez que chaque noeud de stockage est répertorié avec la quantité correcte de stockage par blocs brut en consultant la colonne Capacity dans la section Cluster Summary de la sortie de l'interface CLI.

    5. Consultez la classification d'E-S de Portworx qui a été affectée aux disques faisant partie du cluster Portworx. Lors de la configuration de votre cluster Portworx, tous les disques sont inspectés afin de déterminer leur profil de performance. La classification du profil dépend de la vitesse du réseau auquel votre noeud worker est connecté et du type d'unité de stockage dont vous disposez. Les disques de noeuds worker SDS sont classifiés avec high. Si vous connectez manuellement des disques à un noeud worker virtuel, ces disques sont classés en tant que low en raison de la vitesse de réseau plus lente qui est fournie avec les noeuds worker virtuels.

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

      Exemple de sortie

      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
      

Création d'un volume Portworx

Commencez à créer des volumes Portworx en utilisant le provisionnement dynamique Kubernetes.

  1. Répertoriez les classes de stockage disponibles dans votre cluster et vérifiez si vous pouvez utiliser une classe de stockage Portworx existante ayant été configurée durant l'installation de Portworx. Les classes de stockage prédéfinies sont optimisées pour l'utilisation de base de données et pour le partage de données entre les pods.

    kubectl get sc | grep portworx
    

    Pour afficher les détails d'une classe de stockage, exécutez kubectl describe storageclass <storageclass_name>.

  2. Si vous ne souhaitez pas utiliser une classe de stockage existante, créez une classe de stockage personnalisée. Pour obtenir une liste complète des options prises en charge que vous pouvez spécifier dans votre classe de stockage, voir Utilisation du provisionnement dynamique.

    1. Créez un fichier de configuration pour votre classe de stockage.

      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
      Entrez un nom pour votre classe de stockage.
      parameters.repl
      Entrez le nombre de répliques de vos données que vous voulez stocker sur différents noeuds worker. Les nombres autorisés sont 1,2ou 3. Par exemple, si vous entrez 3, vos données sont répliquées sur trois nœuds worker différents dans votre cluster Portworx. Pour le stockage de vos données à haute disponibilité, utilisez un cluster multizone et répliquez vos données sur trois noeuds worker dans des zones différentes. Vous devez disposer d'un nombre suffisant de nœuds worker pour répondre à vos besoins de réplication. Par exemple, si vous disposez de deux noeuds worker mais que vous indiquez trois répliques, la création de la réservation de volume persistant avec cette classe de stockage échouera.
      parameters.secure
      Spécifiez si vous voulez chiffrer les données dans votre volume avec IBM Key Protect. Sélectionnez l'une des options suivantes.
      • true : entrez true pour activer le chiffrement de vos volumes Portworx. Pour chiffrer les volumes, vous devez avoir une instance de service IBM Key Protect et un secret Kubernetes contenant votre clé racine. Pour plus d'information sur la configuration du chiffrement des volumes Portworx, voir Chiffrement de vos volumes Portworx.
      • false : lorsque vous entrez false, vos volumes Portworx ne sont pas chiffrés. Si vous ne spécifiez pas cette option, vos volumes Portworx ne sont pas chiffrés par défaut. Vous pouvez choisir d'activer le chiffrement des volumes dans votre réservation de volume persistant (PVC), même si vous avez désactivé le chiffrement dans votre classe de stockage. La valeur que vous créez dans la PVC est prioritaire sur les valeurs indiquées dans la classe de stockage.
      parameters.priority_io
      Entrez la priorité d'E-S de Portworx que vous souhaitez solliciter pour vos données. Les options disponibles sont high, medium et low. Lors de la configuration de votre cluster Portworx, tous les disques sont inspectés afin de déterminer leur profil de performance. La classification de profil dépend de la bande passante réseau de votre noeud worker et du type d'unité de stockage. Les disques de noeuds worker SDS sont classifiés avec high. Si vous connectez manuellement des disques à un noeud worker virtuel, ces disques sont classés en tant que low en raison de la vitesse de réseau plus lente qui est fournie avec les noeuds worker virtuels.
      Lorsque vous créez un PVC avec une classe de stockage, le nombre de répliques que vous spécifiez dans parameters/repl remplace la priorité d'entrée-sortie. Par exemple, lorsque vous spécifiez trois répliques que vous voulez stocker sur des disques à grande vitesse, mais que vous ne disposez que d'un seul noeud worker avec un disque à grande vitesse dans votre cluster, la création de votre PVC aboutira quand même. Vos données sont répliquées sur des disques à grande et à faible vitesse.
      parameters.shared
      Indiquez si vous souhaitez autoriser plusieurs pods à accéder au même volume. Sélectionnez l'une des options suivantes :
      • True : si vous définissez cette option sur true, vous pouvez accéder au même volume via plusieurs pods répartis sur des noeuds worker dans des zones différentes.
      • False : si vous définissez cette option sur false, vous pouvez accéder au volume à partir de plusieurs pods uniquement si ces pods sont déployés sur le noeud worker relié au disque physique assurant la sauvegarde du volume. Si votre pod est déployé sur un autre noeud worker, le pod ne peut pas accéder au volume.
    2. Créez la classe de stockage.

      kubectl apply -f storageclass.yaml
      
    3. Vérifiez que la classe de stockage est créée.

      kubectl get sc
      
  3. Créez une réservation de volume persistant (PVC).

    1. Créez un fichier de configuration pour votre PVC.

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: mypvc
      spec:
        accessModes:
          - <access_mode>
        resources:
          requests:
            storage: <size>
        storageClassName: portworx-shared-sc
      
      metadata.name
      Entrez un nom pour votre PVC, tel que mypvc.
      spec.accessModes
      Saisissez le mode d'accès Kubernetes que vous souhaitez utiliser.
      resources.requests.storage
      Entrez la quantité de stockage de votre cluster Portworx (en gigaoctets) que vous envisagez d'affecter. Par exemple, pour affecter 2 gigaoctets de votre cluster Portworx, entrez 2Gi. La quantité de stockage que vous pouvez indiquer est limitée par la quantité de stockage disponible dans votre cluster Portworx. Si vous avez spécifié un facteur de réplication dans votre classe de stockage supérieur à 1, alors la quantité de stockage que vous spécifiez dans votre PVC est réservée sur plusieurs nœuds worker.
      spec.storageClassName
      Entrez le nom de la classe de stockage que vous avez choisie ou créée précédemment et que vous voulez utiliser pour mettre à disposition votre volume persistant. L'exemple de fichier YAML utilise la classe de stockage portworx-shared-sc.
    2. Créez votre PVC.

      kubectl apply -f pvc.yaml
      
    3. Vérifiez que votre réservation de volume persistant est créée et liée à un volume persistant (PV). Ce processus peut prendre quelques minutes.

      kubectl get pvc
      

Montage du volume sur votre application

Pour accéder au stockage à partir de votre application, vous devez monter la PVC sur votre application.

  1. Créez un fichier de configuration pour le déploiement du montage de la PVC.

    Pour obtenir des conseils sur le déploiement d'un ensemble avec état avec Portworx, voir Ensembles de statistiques. La documentation Portworx inclut également des exemples de déploiement de Cassandra, Kafka, ElasticSearch avec Kibanaet WordPress avec 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
    Libellé du déploiement.
    spec.selector.matchLabels.app et spec.template.metadata.labels.app
    Libellé de votre application.
    template.metadata.labels.app
    Libellé du déploiement.
    spec.schedulerName
    Utilisez Stork comme planificateur pour votre cluster Portworx. Avec Stork, vous pouvez colocaliser les pods avec leurs données, assurer une migration transparente des pods en cas d'erreurs de stockage et faciliter la création et la restauration d'instantanés des volumes Portworx.
    spec.containers.image
    Nom de l'image que vous désirez utiliser. Pour répertorier les images disponibles dans votre compte IBM Cloud Container Registry, exécutez la commande ibmcloud cr image-list.
    spec.containers.name
    Nom du conteneur que vous désirez déployer dans votre cluster.
    spec.containers.securityContext.fsGroup
    Facultatif : Pour accéder à votre stockage avec un utilisateur non root, spécifiez le contexte de sécurité pour votre pod et définissez l'ensemble des utilisateurs auxquels vous souhaitez accorder l'accès dans la section fsGroup de votre YAML de déploiement. Pour plus d'informations, voir Accès aux volumes Portworx avec un utilisateur non root.
    spec.containers.volumeMounts.mountPath
    Chemin absolu du répertoire où est monté le volume dans le conteneur. Si vous souhaitez partager un volume entre différentes applications, vous pouvez spécifier des sous-chemins de volume pour chacune de vos applications.
    spec.containers.volumeMounts.name
    Nom du volume à monter sur votre pod.
    volumes.name
    Nom du volume à monter sur votre pod. Généralement, ce nom est identique à volumeMounts/name.
    volumes.persistentVolumeClaim.claimName
    Nom de la réservation de volume persistant (PVC) liée au volume persistant (PV) que vous voulez utiliser.
  2. Créez votre déploiement.

    kubectl apply -f deployment.yaml
    
  3. Vérifiez que le volume persistant (PV) est bien monté sur votre application.

    kubectl describe deployment <deployment_name>
    

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

    Volume Mounts:
            /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro)
            /volumemount from myvol (rw)
    ...
    Volumes:
        myvol:
        Type:    PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:    mypvc
        ReadOnly:    false
    
  4. Vérifiez que vous pouvez écrire des données dans votre cluster Portworx.

    1. Connectez-vous au pod qui monte votre volume persistant.
      kubectl exec <pod_name> -it bash
      
    2. Accédez au chemin de montage du volume que vous avez défini dans le déploiement de votre application.
    3. Créez un fichier texte.
      echo "This is a test" > test.txt
      
    4. Lisez le fichier que vous avez créé.
      cat test.txt