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 :
-
Vérifiez que vous disposez des droits appropriés pour créer des clusters IBM Cloud Kubernetes Service.
-
Si vous souhaitez utiliser des nœuds worker non SDS dans un cluster classique, ajoutez une unité de stockage de bloc à votre nœud worker.
-
Choisissez si vous souhaitez utiliser la base de données clé-valeur interne de Portworx (KVDB) ou créer une instance de service Databases for etcd pour stocker la configuration et les métadonnées de Portworx.
-
Déterminez si vous souhaitez chiffrer vos volumes Portworx. Pour chiffrer vos volumes, vous devez configurer une instance IBM Key Protect ou Hyper Protect Crypto Services et stocker les informations du service dans un secret Kubernetes.
-
Vérifiez que vous avez copié les secrets d'extraction d'image de l'espace de noms
default
dans l'espace de nomskube-system
namespace afin de pouvoir extraire des images d'Container Registry. Vérifiez que vous avez ajouté les secrets d'extraction d'image du compte de service Kubernetes de l'espace de nomskube-system
. -
Décidez si vous souhaitez inclure votre cluster dans une configuration de reprise après incident Portworx. Pour plus d'informations, voir Configuration de la reprise après incident avec Portworx.
-
Si vous avez connecté une unité distincte pour le journal Portworx, veillez à récupérer le chemin de l'unité en exécutant
lsblk
lors de la connexion à votre noeud worker. -
Si vous avez connecté une unité distincte pour la base de données KVDB Portworx, veillez à récupérer le chemin de l'unité en exécutant
lsblk
lors de la connexion à votre noeud worker.
Pour installer Portworx :
-
Ouvrez le service Portworx à partir du catalogue IBM Cloud et complétez les champs comme suit :
-
Sélectionnez la région dans laquelle se trouve votre cluster IBM Cloud Kubernetes Service.
-
Consultez les informations de tarification pour Portworx.
-
Entrez un nom pour votre instance de service Portworx.
-
Sélectionnez le groupe de ressources dans lequel se trouve votre cluster.
-
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.
-
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.
-
Entrez une valeur de nom du cluster Portworx unique.
-
Dans le menu des pilotes de cloud :
- 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.
- 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.
-
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.
-
Namespace: entrez l'espace de nom dans lequel vous souhaitez déployer les ressources Portworx.
-
Requis uniquement pour Databases for etcd : entrez les informations de votre instance de service Databases for etcd.
- 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.
- 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 (;
). - 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.
-
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.
-
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.
-
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, entrezj;/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écutezlsblk
. - 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écutezlsblk
. 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
.
- Entrez
-
-
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.
-
Dans la liste des ressources IBM Cloud, recherchez le service Portworx que vous avez créé.
-
Consultez la colonne Statut pour voir si l'installation a réussi ou échoué. La mise à jour du statut peut prendre quelques minutes.
-
Si la valeur de Statut passe à
Provision failure
, suivez les instructions pour commencer par identifier la cause de l'échec de l'installation. -
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.-
Répertoriez les pods Portworx dans l'espace de noms
kube-system
. L'installation a abouti lorsque vous voyez un ou plusieurs podsportworx
,stork
etstork-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'étatRunning
.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
-
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
-
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.
-
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.
-
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 quelow
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.
-
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>
. -
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.
-
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
,2
ou3
. Par exemple, si vous entrez3
, 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
: entreztrue
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 entrezfalse
, 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
etlow
. 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 avechigh
. Si vous connectez manuellement des disques à un noeud worker virtuel, ces disques sont classés en tant quelow
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.
- Entrez la priorité d'E-S de Portworx que vous souhaitez solliciter pour vos données. Les options disponibles sont
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.
- True : si vous définissez cette option sur
-
Créez la classe de stockage.
kubectl apply -f storageclass.yaml
-
Vérifiez que la classe de stockage est créée.
kubectl get sc
-
-
Créez une réservation de volume persistant (PVC).
-
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
.
-
Créez votre PVC.
kubectl apply -f pvc.yaml
-
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.
-
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
etspec.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.
-
Créez votre déploiement.
kubectl apply -f deployment.yaml
-
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
-
Vérifiez que vous pouvez écrire des données dans votre cluster Portworx.
- Connectez-vous au pod qui monte votre volume persistant.
kubectl exec <pod_name> -it bash
- Accédez au chemin de montage du volume que vous avez défini dans le déploiement de votre application.
- Créez un fichier texte.
echo "This is a test" > test.txt
- Lisez le fichier que vous avez créé.
cat test.txt
- Connectez-vous au pod qui monte votre volume persistant.