Configuration de Block Storage for Classic
IBM Cloud Block Storage for Classic est une solution de stockage iSCSI persistant hautes performances que vous pouvez ajouter à vos applications en utilisant des volumes persistants (PV) Kubernetes. Vous pouvez choisir entre des niveaux de stockage prédéfinis avec des tailles en gigaoctets (Go) et un nombre d'opérations d'entrée-sortie par seconde (IOPS) répondant aux exigences de vos charges de travail. Pour savoir si IBM Cloud Block Storage for Classic est l'option de stockage qui vous convient, voir Choisir une solution de stockage.
Tenez compte des exigences suivantes lorsque vous utilisez le plug-in IBM Cloud Block Storage for Classic.
Le plug-in IBM Cloud Block Storage for Classic est disponible uniquement pour les clusters IBM Cloud Kubernetes Service standard mis à disposition sur une infrastructure classique. Si vous disposez d'un cluster VPC, voir Configuration de Block Storage for Classic.
Si votre cluster ne peut pas accéder au réseau public, tel qu'un cluster privé derrière un pare-feu ou un cluster avec uniquement le nœud final de service de cloud privé activé, vérifiez que vous avez installé le plug-in IBM Cloud Block Storage for Classic version 1.3.0 ou ultérieure pour vous connecter à votre instance Block Storage for Classic sur le réseau privé.
Les instances Block Storage for Classic sont spécifiques à une région multizone d'un seul campus. Si vous disposez d'un cluster multizone, tenez compte des options de stockage persistant dans les zones multiples.
Infrastructure classique
Les étapes de cette page s'appliquent uniquement aux clusters classiques. Sur les clusters VPC, le module complémentaire « Block Storage for VPC » est installé par défaut. Pour plus d'informations, voir Configuration Configuration Block Storage for VPC.
Démarrage rapide pour IBM Cloud Block Storage for Classic
24Gi Dans ce guide de démarrage rapide, vous allez créer un volume « Block Storage for Classic » de niveau Silver dans votre cluster en créant un PVC afin de provisionner dynamiquement ce volume. Ensuite, vous créez un déploiement d'application qui monte votre PVC.
Vous utilisez Block Storage for Classic dans votre cluster pour la première fois ? Revenez ici après avoir installé le plug-in Block Storage for Classic.
-
Sauvegardez la configuration de réclamation de volume persistant (PVC) suivante dans un fichier appelé
pvc.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-east zone: wdc07 spec: accessModes: - ReadWriteOnce resources: requests: storage: 45Gi storageClassName: ibmc-block-silver -
Appliquez la configuration à votre cluster pour créer le circuit virtuel permanent (PVC).
kubectl apply -f pvc.yaml -
Attendez que votre circuit virtuel permanent soit à l'état
Bound. Vous pouvez vérifier l'état en exécutant la commande suivante.kubectl get pvc -
Une fois que le circuit virtuel permanent (PVC)
Bound, créez un déploiement d'application qui utilise votre PVC. Sauvegardez la configuration de déploiement suivante dans un fichier appelédeployment.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: nginx # Use the nginx image, or your own containerized app image. name: my-container command: ["/bin/sh"] args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"] # This app prints the timestamp, then sleeps. workingDir: /home imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: my-volume mountPath: /mount-path volumes: - name: my-volume persistentVolumeClaim: claimName: block-storage-pvc -
Créez le déploiement dans votre cluster.
kubectl apply -f deployment.yaml -
Attendez que le déploiement soit
Ready. Vérifiez l'état du déploiement en exécutant la commande suivante.kubectl get deploymentsExemple de sortie
NAME READY UP-TO-DATE AVAILABLE AGE my-deployment 1/1 1 1 3m19s -
Listez vos pods et vérifiez que le pod
my-deploymentest en cours d'exécution.kubectl get podsExemple de sortie
NAME READY STATUS RESTARTS AGE my-deployment-ccdf87dfb-vzn95 1/1 Running 0 5m27s -
Récupérez les journaux des pods pour vérifier que l'horodatage soit écrit.
kubectl logsExemple de sortie
2022-01-21 14:18:59
Vous avez créé un déploiement qui utilise Block Storage for Classic! Pour plus d'informations, voir les liens suivants.
Installation du plug-in IBM Cloud Block Storage for Classic dans votre cluster
Installez le plug-in IBM Cloud Block Storage for Classic avec une charte Helm pour configurer des classes de stockage prédéfinies pour Block Storage for Classic. Vous pouvez utiliser ces classes de stockage pour créer une réservation de volume persistant afin de mettre à disposition Block Storage for Classic pour vos applications.
Les clusters classiques qui utilisent IBM Cloud Kubernetes Service version 1.24 ou ultérieure ne doivent pas installer le plug-in IBM Cloud Block Storage for Classic. Le pilote et le plug-in sont installés sur ces clusters par défaut.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Vérifiez que votre noeud worker applique le dernier correctif pour votre version secondaire afin d'exécuter votre noeud worker avec les paramètres de sécurité les plus récents. La version de correctif garantit également le renouvellement du mot de passe root sur le noeud worker.
Si vous n'avez pas appliqué des mises à jour ni rechargé votre noeud worker au cours des 90 derniers jours, votre mot de passe root sur le noeud worker expire et l'installation du plug-in de stockage est susceptible d'échouer.
- Répertoriez la version de correctif en cours pour vos noeuds worker.
ibmcloud ks worker ls --cluster CLUSTER_NAME_OR_ID ``` Exemple de sortie ```sh {: screen} OK ID Public IP Private IP Machine Type State Status Zone Version kube-dal10-crb1a23b456789ac1b20b2nc1e12b345ab-w26 169.xx.xxx.xxx 10.xxx.xx.xxx b3c.4x16.encrypted normal Ready dal10 1.35_1523* ``` Si votre noeud worker n'applique pas la dernière version de correctif, un astérisque (`*`) apparaît dans la colonne **Version** de votre sortie d'interface de ligne de commande. 2. Passez en revue les [informations de version deKubernetes](/docs/containers?topic=containers-cs_versions) pour trouver les dernières modifications. 3. Appliquez la dernière version de correctif en rechargeant votre noeud worker. Suivez les instructions fournies dans la [commande « ibmcloud ks worker reload](/docs/containers?topic=containers-kubernetes-service-cli#worker-reload-cli) » pour replanifier en toute sécurité les pods en cours d'exécution sur votre nœud de travail avant de recharger ce dernier. Notez que durant le rechargement, la machine de votre noeud worker est mise à jour avec l'image la plus récente et les données sont supprimées si elles ne sont pas [stockées hors du noeud worker](/docs/containers?topic=containers-storage-plan). -
Suivez les instructions pour installer le client Helm version 3 sur votre machine locale.
-
Ajoutez le référentiel de la charte Helm IBM Cloud au cluster dans lequel vous souhaitez utiliser le plug-in IBM Cloud Block Storage for Classic.
Si vous avez activé VRF et des noeuds finaux de service dans votre compte IBM Cloud, vous pouvez utiliser le référentiel Helm d'IBM Cloud privé pour conserver votre trafic d'extraction d'image sur le réseau privé. Si vous ne pouvez pas activer VRF ou les noeuds finaux de service dans votre compte, utilisez le domaine de registre public :
helm repo add iks-charts https://icr.io/helm/iks-charts.helm repo add iks-charts https://icr.io/helm/iks-charts -
Mettez à jour le référentiel Helm pour extraire la dernière version de toutes les chartes Helm figurant dans ce référentiel.
helm repo update -
Installez le plug-in IBM Cloud Block Storage for Classic et donnez un nom à votre installation, par exemple,
block-storage-plugin. Lors de l'installation de ce plug-in, des classes de stockage par blocs prédéfinies sont ajoutées dans votre cluster.helm install <name> iks-charts/ibmcloud-block-storage-plugin -n <namespace>Exemple de sortie
NAME: <name> LAST DEPLOYED: Wed Apr 18 10:02:55 2018 NAMESPACE: default STATUS: DEPLOYED RESOURCES: ==> v1beta1/DaemonSet NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE ibmcloud-block-storage-driver 0 0 0 0 0 <none> 0s ==> v1beta1/Deployment NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE ibmcloud-block-storage-plugin 1 0 0 0 0s ==> v1/StorageClass NAME PROVISIONER AGE ibmc-block-bronze ibm.io/ibmc-block 0s ibmc-block-custom ibm.io/ibmc-block 0s ibmc-block-gold ibm.io/ibmc-block 0s ibmc-block-retain-bronze ibm.io/ibmc-block 0s ibmc-block-retain-custom ibm.io/ibmc-block 0s ibmc-block-retain-gold ibm.io/ibmc-block 0s ibmc-block-retain-silver ibm.io/ibmc-block 0s ibmc-block-silver ibm.io/ibmc-block 0s ==> v1/ServiceAccount NAME SECRETS AGE ibmcloud-block-storage-plugin 1 0s ==> v1beta1/ClusterRole NAME AGE ibmcloud-block-storage-plugin 0s ==> v1beta1/ClusterRoleBinding NAME AGE ibmcloud-block-storage-plugin 0s NOTES: Thank you for installing: ibmcloud-block-storage-plugin. Your release is named: <name> -
Vérification de l'installation.
kubectl get pod -n <namespace> | grep blockExemple de sortie
ibmcloud-block-storage-driver-kh4mt 1/1 Running 0 27d 10.118.98.19 10.118.98.19 ibmcloud-block-storage-plugin-58c5f9dc86-pbl4t 1/1 Running 0 14d 172.21.0.204 10.118.98.19L'installation réussit lorsque vous voyez un pod
ibmcloud-block-storage-pluginet un ou plusieurs podsibmcloud-block-storage-driver. Le nombre de podsibmcloud-block-storage-driverest égal au nombre de noeuds worker dans votre cluster. Tous les pods doivent être à l'état Running. -
Vérifiez que les classes de stockage pour Block Storage for Classic ont été ajoutées à votre cluster.
kubectl get sc | grep blockExemple de sortie
ibmc-block-bronze ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-custom ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-gold ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-retain-bronze ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-custom ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-gold ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-silver ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-silver ibm.io/ibmc-block Delete Immediate true 148m -
Répétez ces étapes pour chaque cluster sur lequel vous souhaitez fournir du stockage par blocs.
Vous pouvez maintenant passer à la création d'une réservation de volume persistant (PVC) pour mettre à disposition du stockage par blocs pour votre application.
Mise à jour du plug-in IBM Cloud Block Storage
Vous pouvez mettre à niveau le plug-in IBM Cloud Block Storage existant à la version la plus récente.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
-
Mettez à jour le référentiel Helm pour extraire la dernière version de toutes les chartes Helm figurant dans ce référentiel.
helm repo update -
Facultatif : téléchargez la charte Helm la plus récente sur votre machine locale. Ensuite, extrayez le package et consultez le fichier
release.mdpour trouver les informations relatives à la dernière édition.helm pull iks-charts/ibmcloud-block-storage-plugin --untar -
Recherchez le nom d'édition et l'espace de noms de la charte Helm de stockage par blocs que vous avez installée dans votre cluster.
helm ls -AExemple de sortie
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION block-plugin default 1 2022-01-21 09:02:46.11622 -0500 EST deployed bmcloud-block-storage-plugin-v2.1.5 -
Mettez à niveau le plug-in IBM Cloud Block Storage à la version la plus récente. Incluez le nom de l'édition et l'espace de nom que vous avez extrait précédemment.
helm upgrade RELEASE-NAME iks-charts/ibmcloud-block-storage-plugin -n NAMESPACE -
Facultatif : lorsque vous mettez à jour le plug-in, la classe de stockage
defaultn'est pas définie. Pour définir la classe de stockage par défaut par une classe de stockage de votre choix, exécutez la commande suivante.kubectl patch storageclass STORAGECLASS -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
Retrait du plug-in IBM Cloud Block Storage
Si vous ne souhaitez pas fournir et utiliser IBM Cloud Block Storage dans votre cluster, vous pouvez désinstaller le graphique Helm.
Le retrait du plug-in ne retire pas les réservations de volume persistant (PVC), les volumes persistants (PV) ou les données. Lorsque vous retirez le plug-in, tous les pods associés et les ensembles de démons sont retirés de votre cluster. Vous ne pouvez pas fournir de nouvelles unités de stockage de blocs pour votre cluster ou utiliser des PVC et des PV de stockage de blocs existants après avoir supprimé le plug-in.
Avant de commencer :
- Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
- Vérifiez que vous n'avez pas de PVC ou de PV dans votre cluster qui utilise le stockage de blocs.
Pour supprimer le plug-in :
-
Recherchez le nom d'édition et l'espace de noms de la charte Helm de stockage par blocs que vous avez installée dans votre cluster.
helm ls -AExemple de sortie
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION block-plugin default 1 2022-01-21 09:02:46.11622 -0500 EST deployed ibmcloud-block-storage-plugin-v2.1.5 -
Supprimez le plug-in IBM Cloud Block Storage.
helm uninstall NAME -n kube-system -
Vérifiez que les pods de stockage par blocs sont retirés.
kubectl get pods -n kube-system | grep blockLe retrait des pods a abouti lorsqu'aucun pod n'est affiché dans la sortie de votre interface de ligne de commande.
-
Vérifiez que les classes de stockage par blocs sont retirées. Le retrait des classes de stockage a abouti lorsqu'aucune classe de stockage n'est affichée dans la sortie de votre interface de ligne de commande.
kubectl get sc | grep block
Détermination de la configuration de stockage par blocs
IBM Cloud Kubernetes Service fournit des classes de stockage prédéfinies pour le stockage par blocs que vous pouvez utiliser pour mettre à disposition du stockage par blocs avec une configuration spécifique.
Toutes les classes de stockage indiquent le type de stockage par blocs à mettre à disposition, y compris la taille disponible, les opérations d'entrée-sortie par seconde (IOPS), le système de fichiers, ainsi que la règle de conservation.
Choisissez votre configuration de stockage avec précaution afin de disposer d'une capacité suffisante pour stocker vos données. Une fois que vous avez utilisé un type de stockage spécifique à l'aide d'une classe de stockage, vous ne pouvez pas modifier le type ou la règle de conservation de l'unité de stockage. Vous pouvez toutefois modifier la taille et le nombre d'IOPS si vous souhaitez augmenter la capacité de stockage ou les performances. Pour modifier le type et la politique de conservation de votre espace de stockage, vous devez créer une nouvelle instance de stockage et copier les données de l'ancienne instance vers la nouvelle.
-
Répertoriez les classes de stockage disponibles dans IBM Cloud® Kubernetes Service.
kubectl get sc | grep blockExemple de sortie
ibmc-block-bronze ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-custom ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-gold ibm.io/ibmc-block Delete Immediate true 148m ibmc-block-retain-bronze ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-custom ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-gold ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-retain-silver ibm.io/ibmc-block Retain Immediate true 148m ibmc-block-silver ibm.io/ibmc-block Delete Immediate true 148m -
Examinez la configuration d'une classe de stockage.
kubectl describe storageclass STORAGECLASSPour plus d'informations sur chaque classe de stockage, voir Référence des classes de stockage. Si vous ne trouvez pas ce que vous recherchez, pensez à créer votre propre classe de stockage personnalisée. Pour commencer, consultez les exemples de classes de stockage personnalisées.
-
Sélectionnez le type de stockage par blocs que vous désirez mettre à disposition.
- Classes de stockage Bronze, silver et Gold : ces classes de stockage mettent à disposition du stockage Endurance. Le stockage Endurance vous permet de choisir la taille de stockage en gigaoctets à des niveaux d'opérations d'entrée-sortie par seconde prédéfinis.
- Classe de stockage personnalisée : cette classe de stockage met à disposition du stockage Performance. Avec le stockage Performance, vous disposez d'un contrôle accru sur la taille de stockage et les opérations d'entrée-sortie par seconde.
-
Choisissez la taille et le nombre d'IOPS de votre stockage par blocs. La taille et le nombre d'IOPS définissent le nombre total d'IOPS (opérations d'entrée-sortie par seconde) qui sert d'indicateur pour mesurer la rapidité de votre stockage. Plus votre stockage comporte d'IOPS, plus il traite rapidement les opérations de lecture/écriture.
- Classes de stockage Bronze, Silver et Gold : ces classes de stockage sont fournies avec un nombre fixe d'IOPS par gigaoctet et sont mises à disposition sur des disques durs SSD. Le nombre total d'IOPS dépend de la taille de stockage que vous choisissez. Vous pouvez sélectionner tout nombre entier représentant la taille en gigaoctets dans la plage de taille autorisée, par exemple 20 Gi, 256 Gi ou 11854 Gi. Pour déterminer le nombre total d'IOPS, vous devez multiplier les IOPS par la taille sélectionnée. Par exemple, si vous sélectionnez la taille de stockage 1000Gi dans la classe de stockage Silver fournie avec 4 IOPS par Go, vous disposerez d'un stockage avec au total 4000 IOPS.
Tableau des plages de tailles de classe de stockage et nombre d'opérations d'entrée-sortie par seconde (IOPS) par gigaoctet Classe de stockage IOPS par gigaoctet Plage de tailles en gigaoctets Bronze 2 IOPS/Go 20 - 12000 Gi Silver 4 IOPS/Go 20 - 12000 Gi Gold 10 IOPS/Go 20 - 4000 Gi - Classe de stockage personnalisée : lorsque vous choisissez cette classe de stockage, vous disposez d'un contrôle accru sur la taille et les IOPS que vous souhaitez. Pour la taille, vous pouvez sélectionner un nombre entier de gigaoctets dans la plage de taille autorisée. La taille que vous choisissez détermine la plage d'IOPS dont vous pourrez bénéficier. Vous pouvez choisir une IOPS qui soit un multiple de 100 dans la plage spécifiée. Le nombre d'IOPS que vous choisissez est statique et ne s'adapte pas à la taille du stockage. Par exemple, si vous choisissez 40Gi avec 100 IOPS, le nombre total d'IOPS restera 100. Le rapport IOPS/gigaoctet détermine le type de disque dur mis à votre disposition. Par exemple, si vous utilisez 500Gi à 100 IOPS, votre rapport IOPS sur gigabyte est de 0,2. Un stockage avec un rapport inférieur ou égal à 0,3 est fourni sur des disques durs SATA. Si votre rapport est supérieur à 0,3, votre stockage est fourni sur des disques durs SSD.
Table class size ranges and IOPS Plage de tailles en gigaoctets Plage d'IOPS en multiples de 100 20 - 39 Gi 100 - 1000 IOPS 40 - 79 Gi 100 - 2000 IOPS 80 - 99 Gi 100 - 4000 IOPS 100 - 499 Gi 100 - 6000 IOPS 500 - 999 Gi 100 - 10000 IOPS 1000 - 1999 Gi 100 - 20000 IOPS 2000 - 2999 Gi 200 - 40000 IOPS 3000 - 3999 Gi 200 - 48000 IOPS 4000 - 7999 Gi 300 - 48000 IOPS 8000 - 9999 Gi 500 - 48000 IOPS 10000 - 12000 Gi 1000 - 48000 IOPS -
Déterminez si vous souhaitez conserver vos données après la suppression du cluster ou de la réservation de volume persistant (PVC).
- Pour conserver vos données, choisissez une classe de stockage
retain. Lorsque vous supprimez la PVC, seule la réservation de volume persistant est supprimée. Le volume persistant (PV), l'unité de stockage physique dans votre compte d'infrastructure IBM Cloud, ainsi que vos données existent toujours. Pour récupérer le stockage et l'utiliser à nouveau dans votre cluster, vous devez supprimer le volume persistant et suivre les étapes pour utiliser du stockage par blocs existant. - Si vous souhaitez que le volume persistant, les données et votre unité physique de stockage par blocs soient supprimés en même temps que la PVC, choisissez une classe de stockage sans
retain.
- Pour conserver vos données, choisissez une classe de stockage
-
Choisissez une facturation à l'heure ou mensuelle. Le paramètre par défaut est la facturation à l'heure.
Configuration du chiffrement pour Block Storage for Classic
Vous pouvez configurer le chiffrement pour Block Storage for Classic à l'aide d'IBM Key Protect.
L'exemple ci-après montre comment créer un ID de service avec les rôles d'accès requis pour Key Protect et votre cluster. Les données d'identification de cet ID de service sont utilisées afin d'activer le chiffrement pour vos volumes Block Storage for Classic.
Vous pouvez activer le chiffrement en créant un secret Kubernetes qui utilise votre clé d'API personnelle tant que vous disposez du rôle d'accès au service Lecteur pour votre instance Key Protect ainsi que du rôle d'accès à la plateforme Afficheur et du rôle d'accès au service Auteur pour votre cluster.
-
Assurez-vous que le rôle d'accès à la plateforme Editeur et que le rôle d'accès au service Auteur vous ont été affectés pour Key Protect afin de vous permettre de créer votre propre clé racine et de l'utiliser pour chiffrer votre instance Block Storage for Classic. Vous pouvez consulter vos rôles d'accès IAM dans la console IAM. Pour plus d'informations sur les rôles IAM, voir Accès IAM.
-
Si vous ne disposez pas d'une instance Key Protect, fournissez un.
-
Créez une clé racine. Par défaut, la clé racine est créée sans date d'expiration.
-
Créez un ID de service IAM. Remplacez
<service_ID_name>par le nom que vous souhaitez attribuer à votre ID de service. Cet ID de service est utilisé pour accéder à votre instance Key Protect à partir de votre volume Block Storage for Classic.ibmcloud iam service-id-create <service_ID_name>Exemple de sortie
OK Service ID test-id is created successfully ID ServiceId-a1a11111-bb11-1111-a11b-1111111a11ba Name test-id Description CRN crn:v1:bluemix:public:iam-identity::a/1a1111aa2b11111aaa1a1111aa2aa111::serviceid:ServiceId-a1a11111-bb11-1111-a11b-1111111a11bb Version 1-bb11aa11a0aa1a11a011a1aaaa11a1bb Locked false -
Créez une clé d'API pour votre ID de service. Remplacez
<api-key-name>par un nom pour votre clé d'interface de programmation et remplacez<service_ID_name>par le nom de l'ID de service que vous avez créé. Assurez-vous d'enregistrer votre clé d'interface de programmation car elle ne peut pas être extraite ultérieurement. Cette clé d'API sera stockée dans un secret Kubernetes dans votre cluster au cours d'une étape ultérieure.ibmcloud iam service-api-key-create <api_key_name> <service_ID_name> -
Extrayez une liste de services activés pour IAM dans votre compte et notez le nom de l'instance Key Protect que vous avez créée.
ibmcloud resource service-instances -
Récupérez l'identificateur global unique (GUID) de votre instance Key Protect. L'ID est utilisé afin de créer une stratégie de service IAM pour votre ID de service.
ibmcloud resource service-instance "<instance_name>" | grep GUID -
Créez une stratégie de service IAM pour accorder à votre ID de service l'accès à votre instance Key Protect. La commande ci-après permet d'accorder à votre ID de service
Readerl'accès à votre instance Key Protect. Le rôle d'accès Lecteur est le rôle d'accès au service minimal que votre ID de service doit avoir pour extraire les clés Key Protect. Pour plus d'informations, voir Gestion de l'accès utilisateur pour Key Protect.ibmcloud iam service-policy-create <service_ID_name> --roles Reader --service-name kms --service-instance <service_instance_GUID> -
Créez une autre stratégie de service IAM pour accorder à votre ID de service l'accès à votre cluster. La commande ci-après accorde le rôle d'accès à la plateforme Afficheur et le rôle d'accès au service Auteur à votre ID de service pour votre cluster. Vous pouvez extraire votre ID de cluster en exécutant
ibmcloud ks cluster get <cluster_name>.ibmcloud iam service-policy-create <service_ID_name> --roles Writer,Viewer --service-name containers-kubernetes --service-instance <cluster_ID> -
Si la charte Helm
ibmcloud-block-storage-pluginest déjà installée, vous devez la retirer et installer une nouvelle version.Si vous avez installé le plug-in sans utiliser Helm, vous devez retirer manuellement le déploiement du plug-in de stockage par blocs et toutes les ressources associées avant d'installer une nouvelle version.
helm uninstall <name> <namespace> -
Installez la charte Helm
ibmcloud-block-storage-plugin.helm install <name> iks-charts/ibmcloud-block-storage-plugin -
Créez un espace de noms
ibm-block-secrets.kubectl create ns ibm-block-secrets -
Créez une liaison de rôle dans l'espace de noms
ibm-block-secretspour le plug-in de stockage par blocs.kubectl create rolebinding ibmcloud-block-storage-plugin-byok --clusterrole=ibmcloud-block-storage-plugin-byok --serviceaccount=kube-system:ibmcloud-block-storage-plugin --group system:nodes --namespace=ibm-block-secrets -
Créez un secret Kubernetes appelé
secret.yamlet qui inclut les données d'identification permettant d'accéder à votre clé racine dans votre instance de service Key Protect.- Créez un fichier de configuration pour le secret.
apiVersion: v1 kind: Secret metadata: labels: kmsConfig: kpc-secretLabel name: <secret_name> # Enter a name for your secret. Example: my_secret namespace: <namespace> # Enter the name of the namespace where you want to create the secret. The secret must be in same namespace where your app is deployed. Example: default stringData: config: |- { "api_key":"<service_id_api_key>", # Enter the API key for the service ID that you created. Example: "AA1aAAaA1a21AAaA1aAAaAa-AA-1AAaaA1aA1aAaaaAA" "iam_endpoint":"https://iam.cloud.ibm.com", "key_protect_endpoint":"https://<region>.kms.cloud.ibm.com", # Example: "https://us-east.kms.cloud.ibm.com" "root_key_crn":"<rook_key_crn>", # Example: "crn:v1:bluemix:public:kms:<region>:a/1ab011ab2b11111aaa1a1111aa1aa111:11aa111a-1111-11a1-a111-a11a111aa111:key:11a11111-1a1a-111a-111a-11111a1a1aa1", "version":"" } type: ibm.io/kms-config ``` `stringData.config.key_protect_endpoint` : Entrez le noeud final régional de votre instance Key Protect. Pour obtenir une liste de noeuds finaux Key Protect, voir [Régions et noeuds finaux](/docs/key-protect?topic=key-protect-regions). `stringData.config.root_key_crn` : Entrez le nom de ressource de cloud (CRN) de la clé racine que vous avez créée. Pour extraire le CRN de votre clé racine, procédez comme suit. 1. Accédez à la liste de ressources dans la [console IBM Cloud](https://cloud.ibm.com/resources){: external}. 2. Cliquez sur **Services**, puis sur votre instance Key Protect. 3. Recherchez votre clé racine dans le **menu Actions**, puis cliquez sur le bouton d'**affichage de CRN**. 4. Clique sur le bouton **Copier** pour copier le CRN. 1. Créez le secret dans votre cluster. ```sh {: pre} kubectl apply -f secret.yaml ``` 1. Vérifiez que votre secret a été créé. ```sh {: pre} kubectl get secrets ``` -
Choisissez l'une des options suivantes pour créer une instance d' Block Storage for Classic qui chiffre les données à l'aide de votre clé racine.
Chiffrement des données d'un volume à l'aide de votre propre classe de stockage
Vous pouvez déployer des applications qui utilisent des volumes chiffrés en créant au préalable votre propre classe de stockage.
Les étapes ci-après montrent comment créer une classe de stockage chiffrée personnalisée que vous pouvez utiliser pour créer plusieurs instances de stockage par blocs chiffrées avec la même configuration. Si vous souhaitez créer une PVC chiffrée en utilisant l'une des classes de stockage fournies par IBM, vous pouvez le faire en faisant directement référence aux données d'identification Key Protect dans votre PVC.
-
Créez votre propre classe de stockage qui provisionne une instance de stockage en blocs chiffrée en vous basant sur l'une des classes de stockage fournies par IBM. Vous pouvez extraire les détails d'une classe de stockage en exécutant
kubectl get sc <storageclass_name> -o yaml. L'exemple suivant est basé sur la classe de stockageibmc-block-retain-bronze.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <name> # Enter the name of the storage class. Example: my_custom_storageclass parameters: billingType: hourly classVersion: "2" fsType: ext4 iopsPerGB: "2" sizeRange: '[20-12000]Gi' type: Endurance encrypted: "true" # Enter "true" to enable encryption. encryptionKeySecret: <secret_name> # # #nter the name of the secret that you created earlier.Example: my_secret encryptionKeyNamespace: <namespace> # # #nter the namespace where you created your secret. Example: default provisioner: ibm.io/ibmc-block reclaimPolicy: Delete volumeBindingMode: Immediate -
Créez la classe de stockage dans votre cluster.
kubectl apply -f storageclass.yaml -
Vérifiez le chiffrement de vos volumes Block Storage for Classic.
Création d'une PVC qui fait référence à votre secret Block Storage for Classic
Vous pouvez mettre à disposition une instance Block Storage for Classic chiffrée en créant une PVC qui spécifie le secret Kubernetes contenant vos données d'identification Key Protect.
Les étapes ci-après montrent comment faire référence à vos données d'identification Key Protect dans votre PVC pour créer une instance Block Storage for Classic chiffrée. Pour créer plusieurs volumes chiffrés sans spécifier les données d'identification Key Protect dans chaque PVC, vous pouvez créer une classe de stockage chiffrée personnalisée.
-
Passez en revue les classes de stockage Block Storage for Classic fournies afin de déterminer celle qui répond le mieux aux exigences de votre application. Si les classes de stockage fournies ne répondent pas aux exigences de votre application, vous pouvez créer votre propre classe de stockage personnalisée.
-
Créez un fichier de configuration de PVC nommé
pvc.yamlfaisant référence au secret Kubernetes dans lequel vous avez stocké les données d'identification du service Key Protect. Pour créer ce secret, voir Configuration du chiffrement pour Block Storage for Classic.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: <pvc_name> # Enter a name for your PVC. annotations: volume.beta.kubernetes.io/storage-class: "<storage_class>" # Enter a storage class. To see a list of storageclasses run `kubectl get storageclasses`. labels: encrypted: "true" encryptionKeyNamespace: <namespace> # Enter the namespace where your secret was created. encryptionKeySecret: <secret_name> # Enter the name of the secret you created. spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi -
Créez la PVC dans votre cluster.
kubectl apply -f pvc.yaml -
Vérifiez le statut de votre PVC.
kubectl get pvc -
Attendez que votre PVC soit liée, puis créez un déploiement qui utilise votre PVC.
-
Vérifiez le chiffrement de vos volumes Block Storage for Classic.
Vérification du chiffrement de vos volumes Block Storage for Classic
Vous pouvez contrôler le chiffrement de vos volumes en vérifiant le chemin de montage du volume.
-
Connectez-vous à votre pod d'application. Remplacez
<pod_name>par le nom du pod qui monte votre volume Block Storage for Classic chiffré.kubectl exec <pod_name> -it bash -
Répertoriez le système de fichiers de votre pod.
df -h -
Passez en revue le chemin du système de fichiers pour votre volume Block Storage for Classic chiffré.
- Les volumes chiffrés ont une structure de chemin d'accès
/dev/mapper/<pvc-ID_encrypted>. Dans cet exemple, le volume chiffré est monté sur le chemin de fichier/testdans le pod.
Filesystem Size Used Avail Use% Mounted on overlay 98G 8.2G 85G 9% / tmpfs 64M 0 64M 0% /dev tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/pvc-a011a111-1111-1111-111a-aaa1a1111a11_encrypted 20G 45M 20G 1% /test ``` * Les volumes non chiffrés possèdent une structure de chemin d'accès `dev/mapper/<random_string>`. ```sh {: screen} Filesystem Size Used Avail Use% Mounted on overlay 98G 16G 78G 17% / tmpfs 64M 0 64M 0% /dev tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/mapper/3600a09803830476e733f4e477370716e 24G 45M 24G 1% /test ``` - Les volumes chiffrés ont une structure de chemin d'accès
La suppression de votre secret Kubernetes ne révoque pas l'accès aux données de volume. Si vous avez créé un déploiement qui ne comprend qu'un pod, vous devez supprimer le pod. Si vous avez créé un déploiement, vous devez le supprimer.
Ajout de stockage par blocs à des applications
Créez une revendication de volume persistant (PVC) afin de provisionner dynamiquement du stockage en blocs pour votre cluster. La mise à disposition dynamique crée automatiquement le volume persistant (PV) correspondant et commande l'unité de stockage réelle dans votre compte d'infrastructure IBM Cloud.
Le stockage par blocs est fourni avec un mode d'accès de type ReadWriteOnce. Vous ne pouvez le monter que sur un seul pod dans un seul noeud worker du cluster à la fois.
Avant de commencer :
- Si vous disposez d'un pare-feu, autorisez l'accès sortant pour les plages d'adresses IP de l'infrastructure IBM Cloud des zones dans lesquelles résident vos clusters, de manière à pouvoir créer des réservations de volume persistant (PVC).
- Installez le plug-in IBM Cloud Block Storage.
- Optez pour une classe de stockage prédéfinie ou créez une classe de stockage personnalisée.
Vous cherchez à déployer du stockage par blocs dans un ensemble avec état (StatefulSet) ? Pour plus d'informations, voir Utilisation de stockage par blocs dans un ensemble avec état (StatefulSet).
Pour ajouter du stockage par blocs :
-
Créez un fichier de configuration pour définir votre PVC et sauvegardez la configuration sous forme de fichier
.yaml.- Exemple pour les classes de bronze, d'argent et d'or : Le fichier
.yamlsuivant crée une réclamation nomméeblock-storage-pvcde la classe de stockage"ibmc-block-silver", facturée de manière horaire, avec une taille de gigaoctet de24Gi.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-south zone: dal13 spec: accessModes: - ReadWriteOnce resources: requests: storage: 24Gi storageClassName: ibmc-block-silver ``` - **Exemple d'utilisation de votre propre classe de stockage**: Le fichier `.yaml` suivant crée une réclamation nommée `block-storage-pvc` de la classe de stockage `ibmc-block-retain-custom`, facturée de manière horaire, avec une taille de gigaoctet `45Gi` et IOPS de `"300"`. ```yaml {: codeblock} apiVersion: v1 kind: PersistentVolumeClaim metadata: name: block-storage-pvc labels: billingType: "hourly" region: us-south zone: dal13 spec: accessModes: - ReadWriteOnce resources: requests: storage: 45Gi iops: "300" storageClassName: ibmc-block-retain-custom ``` `name` : Entrez le nom de la réservation de volume persistant (PVC). `billingType` : Dans la section metadata.labels, indiquez la fréquence de calcul de votre facture de stockage, au mois ("monthly") ou à l'heure ("hourly"). La valeur par défaut est "hourly". `region` : Dans la section metadata.labels, indiquez la région dans laquelle vous souhaitez mettre à disposition votre stockage par blocs. Si vous spécifiez la région, vous devez également indiquer une zone. Si vous ne spécifiez pas de région ou que la région spécifiée est introuvable, le stockage est créé dans la même région que votre cluster. Cette option est uniquement prise en charge avec le plug-in IBM Cloud Block Storage version 1.0.1 ou supérieure. Pour les versions antérieures du plug-in, si vous disposez d'un cluster multizone, la zone dans laquelle votre stockage est mis à disposition est sélectionnée en mode circulaire pour équilibrer les demandes de volume uniformément dans toutes les zones. Pour indiquer la zone destinée à votre stockage, vous pouvez d'abord créer une [classe de stockage personnalisée](#block_multizone_yaml). Créez ensuite une réservation de volume persistant (PVC) avec votre classe de stockage personnalisée. `zone` : Dans la section metadata.labels, indiquez la zone dans laquelle vous souhaitez mettre à disposition votre stockage par blocs. Si vous spécifiez la zone, vous devez également indiquer une région. Si vous ne spécifiez pas de zone ou que la zone spécifiée n'est pas trouvée dans un cluster à zones multiples, la zone est sélectionnée sur une base de permutation circulaire. Cette option est uniquement prise en charge avec le plug-in IBM Cloud Block Storage version 1.0.1 ou supérieure. Pour les versions antérieures du plug-in, si vous disposez d'un cluster multizone, la zone dans laquelle votre stockage est mis à disposition est sélectionnée en mode circulaire pour équilibrer les demandes de volume uniformément dans toutes les zones. Pour indiquer la zone destinée à votre stockage, vous pouvez d'abord créer une [classe de stockage personnalisée](#block_multizone_yaml). Créez ensuite une réservation de volume persistant (PVC) avec votre classe de stockage personnalisée. `storage` : Dans la section spec.resources.requests, entrez la taille du stockage par blocs en gigaoctets (Go). Une fois que votre stockage est mis à disposition, vous ne pouvez pas modifier la taille de votre espace de stockage. Veillez à indiquer une taille correspondant à la quantité de données que vous envisagez de stocker. `iops` : Cette option n'est disponible que pour vos propres classes de stockage personnalisées (`ibmc-block-custom / ibmc-block-retain-custom`). Dans la section « Requêtes de ressources » de la spécification, indiquez le nombre total d'IOPS pour le stockage, en choisissant un multiple de 100 compris dans la plage autorisée. Si vous choisissez une valeur IOPS autre que celle répertoriée, la valeur IOPS est arrondie à la valeur supérieure. `storageClassName` : Dans la section spec, entrez le nom de la classe de stockage que vous souhaitez utiliser pour mettre à disposition le stockage par blocs. Vous pouvez choisir l'une des [classes de stockage fournies par IBM](#block_storageclass_reference) ou [créer votre propre classe de stockage](#block_custom_storageclass). Si vous ne spécifiez pas de classe de stockage, le PV est créé avec la classe de stockage par défaut `ibmc-file-bronze`. Si vous souhaitez utiliser une classe de stockage personnalisée, créez votre PVC avec le nom de classe de stockage correspondant, un nombre d'IOPS et une taille valides. {: tip} - Exemple pour les classes de bronze, d'argent et d'or : Le fichier
-
Créez le PVC (circuit virtuel permanent).
kubectl apply -f block-storage.yaml -
Vérifiez que votre PVC est créée et liée au volume persistant (PV). Ce processus peut prendre quelques minutes.
kubectl get pvcExemple de sortie
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE block-storage-pvc Bound pvc-1aa1aaaa-11a1-48d1-ab11-11b11111f3bc 45Gi RWO ibmc-block-silver 150m -
Pour monter la PV dans votre déploiement, créez un fichier
.yamlde configuration et spécifiez le PVC qui lie la PV.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: containers: - image: <image_name> name: <container_name> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: <pvc_name>app- Dans la section metadata, entrez un libellé pour le déploiement.
matchLabels.appetlabels.app- Dans les sections spec.selector et template.metadata, entrez un libellé pour votre application.
image- Nom de l'image de conteneur que vous souhaitez utiliser. Pour répertorier les images disponibles dans votre compte IBM Cloud Container Registry, exécutez la commande
ibmcloud cr image-list. name- Nom du conteneur que vous désirez déployer dans votre cluster.
mountPath- Dans la section container.volume.mounts, entrez le chemin d'accès absolu du répertoire où est monté le volume dans le conteneur. Les données écrites dans le chemin de montage sont stockées sous le répertoire racine de votre instance de stockage de bloc physique. Si vous souhaitez partager un volume entre différentes applications, vous pouvez définir des sous-chemins d'accès au volume pour chacune de vos applications.
name- Dans la section container.volume.mounts, entrez le nom du volume à monter sur votre pod.
name- Dans la section volumes, entrez le nom du volume à monter sur votre pod. Généralement, ce nom est identique à
volumeMounts/name. claimName- Dans la section volumes.persistent.volume.claim, entrez le nom de la PVC qui lie le volume persistant que vous souhaitez utiliser.
-
Créez le déploiement.
kubectl apply -f <local_yaml_path> -
Vérifiez que le montage du volume persistant (PV) a abouti.
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: block-storage-pvc ReadOnly: false
Utilisation de stockage par blocs existant dans votre cluster
Si vous disposez déjà d'un périphérique de stockage physique que vous souhaitez utiliser dans votre cluster, vous pouvez créer manuellement le PV et le PVC afin de provisionner le stockage de manière statique.
Avant de commencer à monter votre stockage existant sur une application, vous devez obtenir toutes les informations nécessaires pour votre volume persistant.
Récupération des informations de votre stockage de bloc existant
-
Récupérez ou générez une clé d'API pour votre compte d'infrastructure IBM Cloud.
- Connectez-vous au portail de l'infrastructure « IBM Cloud ».
- Sélectionnez Compte, puis Utilisateurs et ensuite Liste d'utilisateurs.
- Recherchez votre ID utilisateur.
- Dans la colonne Clé d'API, cliquez sur Générer pour générer la clé d'API ou sur Afficher pour afficher votre clé d'API existante.
-
Récupérez le nom d'utilisateur de l'API pour votre compte d'infrastructure IBM Cloud.
- Dans le menu Liste d'utilisateurs, sélectionnez votre ID utilisateur.
- Dans la section Informations d'accès à l'API, retrouvez votre Nom d'utilisateur de l'API.
-
Connectez-vous au plug-in d'interface de ligne de commande (CLI) de l'infrastructure IBM Cloud.
ibmcloud sl init -
Optez pour l'authentification à l'aide du nom d'utilisateur et de la clé d'API de votre compte d'infrastructure IBM Cloud.
-
Entrez le nom d'utilisateur et la clé d'API que vous avez récupérés dans les étapes précédentes.
-
Affichez la liste des unités de stockage par blocs.
ibmcloud sl block volume-listExemple de sortie
id username datacenter storage_type capacity_gb bytes_used lunId 11111111 IBM01AAA1111111-1 wdc07 endurance_block_storage 45 - 2 -
Récupérez les détails du volume. Remplacez
<volume_ID>par l'ID du volume de stockage de bloc que vous avez extrait lors de l'étape 6.ibmcloud sl block volume-detail <volume_ID>Exemple de sortie
ID 11111111 User name IBM01AAA1111111-1 Type endurance_block_storage Capacity (GB) 45 LUN Id 2 IOPs 100 Datacenter wdc07 Target IP 10.XXX.XX.XXX # of Active Transactions 0 Replicant Count 0 -
Notez les
ID,Capacity,LUN Id,DatacenteretTarget IPdu volume que vous souhaitez monter sur votre cluster. Remarque : pour monter du stockage existant sur un cluster, vous devez disposer d'un noeud worker dans la même zone que votre stockage. Pour vérifier la zone de votre nœud worker, exécutezibmcloud ks worker ls --cluster <cluster_name_or_ID>.
Création d'un volume persistant (PV) et d'une réclamation de volume persistant correspondante (PVC)
-
Facultatif : si vous avez un stockage que vous avez mis à disposition avec une classe de stockage
retain, lorsque vous supprimez le PVC, le PV et l'unité de stockage physique ne sont pas supprimés. Pour réutiliser le stockage dans votre cluster, vous devez d'abord supprimer le volume persistant. Répertoriez les volumes persistants appartenant à votre stockage persistant. Ce PV est à l'étatreleased.kubectl get pv -
Supprimez le volume persistant.
kubectl delete pv <pv_name> -
Vérifiez que le volume persistant est supprimé.
kubectl get pv -
Créez un fichier de configuration pour votre volume persistant. Incluez les paramètres que vous avez extraits précédemment.
apiVersion: v1 kind: PersistentVolume metadata: name: "block-storage-pv" # Enter a name for your PV. For example, my-static-pv. labels: failure-domain.beta.kubernetes.io/region: "<region>" # Example us-east. failure-domain.beta.kubernetes.io/zone: "<zone>" # Example: wdc04. See /docs/containers?topic=containers-regions-and-zones#zones-sz spec: capacity: storage: "<storage>" accessModes: - ReadWriteOnce flexVolume: driver: "ibm/ibmc-block" fsType: "<fs_type>" # Enter ext or xfs options: "Lun": "<Lun_ID>" "TargetPortal": "<TargetPortal>" "VolumeID": "<VolumeID>" "volumeName": "block-storage-pv" # Enter the same value as your PV name from metadata.namename- Donnez un nom à votre volume persistant. Par exemple,
block-storage-pv. Notez que vous devez également entrer cette valeur dansspec.FlexVolume.optionsen tant quevolumeName. labels- Entrez la région et la zone que vous avez récupérées précédemment. Vous devez disposer d'au moins un noeud worker dans la même région et dans la même zone que votre stockage persistant pour monter le stockage sur votre cluster. Pour
extraire vos détails de volume, exécutez
ibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>pour obtenir les détails de votre volume. region- Entrez la région où se trouve votre espace de stockage de blocs. Notez que votre cluster et votre espace de stockage doivent être dans la même région. Pour rechercher l'emplacement de votre cluster, exécutez
ibmcloud ks cluster ls. Pour plus d'informations sur les régions et zones disponibles, voir Régions et zones. Par exemple,us-east. zone- Entrez la zone dans laquelle se trouve votre volume de stockage. Pour extraire vos détails de volume, exécutez
ibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>pour obtenir les détails de votre volume. Notez que pour connecter le stockage de bloc à votre cluster, vous devez disposer d'un poste de travail dans la même zone que le volume à joindre. Pour rechercher les zones de vos nœuds worker, exécutezibmcloud ks worker ls -c <cluster>. Par exemple,wdc04. storage- Entrez la taille de stockage du volume de stockage de bloc existant que vous souhaitez connecter à votre cluster. La taille de stockage doit être indiquée en gigaoctets, par exemple 20Gi (20 Go) ou 1000Gi (1 To). Pour extraire vos détails
de volume, exécutez
ibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>pour obtenir les détails de votre volume. fsType- Entrez le type de système de fichiers configuré pour votre stockage par blocs existant. Choisissez entre
ext4ouxfs. Si vous ne spécifiez pas cette option, la valeur par défaut estext4. Si le mauvais typefsTypeest défini, la création du volume persistant aboutit, mais le montage de ce volume sur un pod est voué à l'échec. Pour extraire vos détails de volume, exécutezibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>pour obtenir les détails de votre volume. Lun- Entrez l'ID du numéro d'unité logique de votre volume de stockage de bloc. Pour extraire vos détails de volume, exécutez
ibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>pour obtenir les détails de votre volume. TargetPortal- Entrez l'adresse IP de votre espace de stockage. Pour extraire le paramètre
TargetPortal, exécutezibmcloud sl block volume-listpour obtenir l'ID volume, puis exécutezibmcloud sl block volume-detail <volume_ID>et notez leTarget IPdans la sortie. VolumeId- Entrez l'ID de votre espace de stockage. Pour extraire les détails de votre volume, exécutez
ibmcloud sl block volume-list. volumeName- Entrez la même valeur que votre nom de volume persistant. Par exemple,
block-storage-pv.
-
Créez le volume persistant dans votre cluster.
kubectl apply -f pv.yaml -
Vérifiez que le volume persistant (PV) est créé.
kubectl get pv -
Créez un autre fichier de configuration pour créer votre PVC. Pour que cette réservation corresponde au volume persistant que vous avez créé auparavant, vous devez sélectionner la même valeur pour
storageetaccessMode. La zonestorage-classdoit contenir une chaîne vide. Si l'un de ces champs ne correspond pas au volume persistant, alors un nouveau volume persistant est créé automatiquement.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: block-storage-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: "20Gi" storageClassName: "" -
Créez votre PVC.
kubectl apply -f static-pvc.yaml -
Vérifiez que votre PVC est créée et liée au volume persistant que vous avez créé auparavant. Ce processus peut prendre quelques minutes.
kubectl describe pvc static-pvcExemple de sortie
Name: static-pvc Namespace: default StorageClass: Status: Bound -
Facultatif Sauvegardez l'exemple de configuration de pod suivant en tant que fichier appelé
pod.yaml.apiVersion: v1 kind: Pod metadata: name: block-storage labels: app: block-storage spec: containers: - name: block-storage image: nginx command: ["/bin/sh"] args: ["-c", "while true; do date \"+%Y-%m-%d %H:%M:%S\"; sleep 3600; done"] workingDir: /home imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: block-storage-pv mountPath: /home volumes: - name: block-storage-pv persistentVolumeClaim: claimName: block-storage-pvc -
Créez le pod dans votre cluster.
kubectl create -f pod.yaml -
Une fois que le pod est à l'état
Running, obtenez les journaux.kubectl logsExemple de sortie
2022-01-21 16:11:00
Vous venez de créer un volume persistant que vous avez lié à une PVC. Ensuite, vous avez déployé cette application qui utilise le stockage par bloc. Les utilisateurs de cluster peuvent désormais monter le circuit virtuel permanent à leurs déploiements et commencer à lire et à écrire dans le volume persistant.
Utilisation de stockage par blocs dans un ensemble avec état (StatefulSet)
Si vous disposez d'une application avec état, telle qu'une base de données, vous pouvez créer des ensembles avec état utilisant du stockage par blocs pour stocker les données de votre application. Sinon, vous pouvez utiliser IBM Cloud DaaS (Database-as-a-Service) et stocker vos données dans le cloud.
- À quoi dois-je faire attention lorsque j'ajoute un stockage en blocs à un « stateful set »?
- Pour ajouter du stockage dans un ensemble avec état, vous spécifiez la configuration de votre stockage dans la section
volumeClaimTemplatesdu fichier YAML de l'ensemble avec état. La sectionvolumeClaimTemplatesconstitue la base de votre PVC et peut inclure la classe de stockage et la taille ou le nombre d'opérations d'entrée-sortie par seconde (IOPS) du stockage par blocs que vous souhaitez mettre à disposition. Cependant, si vous prévoyez d'ajouter des libellés (labels) dans la sectionvolumeClaimTemplates, Kubernetes n'inclut pas ces libellés en créant la PVC. Vous devez les ajouter directement dans l'ensemble avec état à la place.
Vous ne pouvez pas déployer deux ensembles avec état en même temps. Si vous essayez de créer un ensemble avec état avant le déploiement complet d'un autre ensemble, le déploiement de votre ensemble avec état peut entraîner des résultats imprévisibles.
- Comment puis-je créer mon « stateful set » dans une zone spécifique?
- Dans un cluster multizone, vous pouvez spécifier la zone et la région dans lesquelles créer votre ensemble avec état dans les sections
spec.selector.matchLabelsetspec.template.metadata.labelsdu fichier YAML de votre ensemble avec état. Sinon, vous pouvez ajouter ces libellés dans une classe de stockage personnalisée et utiliser cette classe de stockage dans la sectionvolumeClaimTemplatesde votre ensemble avec état. - Puis-je reporter l'association d'un PV à mon pod avec état jusqu'à ce que ce dernier soit prêt?
- Oui, vous pouvez créer votre propre classe de stockage pour votre PVC qui inclut la zone
volumeBindingMode: WaitForFirstConsumer. - Quelles sont les options dont je dispose pour ajouter un stockage en blocs à un « stateful set »?
- Si vous souhaitez créer automatiquement votre PVC lorsque vous créez l'ensemble avec état, utilisez la mise à disposition dynamique. Vous pouvez également opter pour une mise à disposition anticipée de vos PVC ou utiliser des PVC existantes avec votre ensemble avec état.
Création du circuit virtuel permanent à l'aide de l'application des accès dynamique lorsque vous créez un ensemble avec état
Utilisez cette option pour créer automatiquement la PVC lorsque vous créez l'ensemble avec état.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
Procédez comme suit pour vérifier que tous les ensembles avec état existants dans votre cluster sont entièrement déployés. Si un ensemble avec état est encore en cours de déploiement, vous ne pouvez pas commencer à créer votre ensemble avec état. Vous devez attendre jusqu'à ce que tous les ensembles avec état de votre cluster soient entièrement déployés pour éviter d'obtenir des résultats imprévisibles.
-
Répertoriez les ensembles avec état existants dans votre cluster.
kubectl get statefulset --all-namespacesExemple de sortie
NAME DESIRED CURRENT AGE mystatefulset 3 3 6s -
Affichez le statut des pods de chaque ensemble avec état pour vérifier que le déploiement de tous les ensembles avec état est terminé.
kubectl describe statefulset <statefulset_name>Exemple de sortie
Name: nginx Namespace: default CreationTimestamp: Fri, 05 Oct 2022 13:22:41 -0400 Selector: app=nginx,billingType=hourly,region=us-south,zone=dal10 Labels: app=nginx billingType=hourly region=us-south zone=dal10 Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"podManagementPolicy":"Par..." Replicas: 3 desired | 3 total Pods Status: 0 Running / 3 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: app=nginx billingType=hourly region=us-south zone=dal10 ...Un ensemble avec état est entièrement déployé lorsque le nombre de répliques que vous trouvez dans la section Replicas de la sortie de l'interface de ligne de commande est égale au nombre de pods en cours d'exécution (Running) dans la section Pods Status. Si un ensemble avec état n'est pas tout à fait déployé, patientez jusqu'à ce que le déploiement soit terminé avant de poursuivre.
-
Créez un fichier de configuration pour votre ensemble avec état et le service que vous utilisez pour exposer cet ensemble. L'exemple suivant montre comment déployer NGINX sous forme d'ensemble avec état avec trois répliques. Pour chaque réplique, une unité de stockage par blocs de 20 gigaoctets est mise à disposition en fonction des spécifications qui sont définies dans la classe de stockage
ibmc-block-retain-bronze. Toutes les unités de stockage sont mises à disposition dans la zonedal10. Étant donné que l'espace de stockage de bloc n'est pas accessible à partir d'autres zones, toutes les répliques de l'ensemble avec état sont également déployées sur des nœuds worker situés dansdal10.apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx spec: serviceName: "nginx" replicas: 3 podManagementPolicy: Parallel selector: matchLabels: app: nginx billingType: "hourly" region: "us-south" # Enter the region where your cluster is located. zone: "dal10" template: metadata: labels: app: nginx billingType: "hourly" region: "us-south" zone: "dal10" spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: myvol mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: myvol spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi iops: "300" #required only for performance storage storageClassName: ibmc-block-retain-bronzeL'exemple suivant montre comment déployer NGINX sous forme d'ensemble avec état avec trois répliques. L'ensemble avec état n'indique pas la région et la zone où est créé le stockage par blocs. A la place, l'ensemble avec état utilise une règle d'anti-affinité pour garantir que les pods sont répartis sur les noeuds worker et les zones. En définissant
topologykey: failure-domain.beta.kubernetes.io/zone, le planificateur de Kubernetes ne peut pas planifier un pod sur un nœud worker si celui-ci se trouve dans la même zone qu'un pod portant le libelléapp: nginx. Pour chaque pod d'ensemble avec état, deux PVC sont créées selon la définition indiquée à la sectionvolumeClaimTemplates, mais la création des instances de stockage par blocs est retardée jusqu'à ce qu'un pod d'ensemble avec état qui utilise le stockage soit planifié. Cette configuration est appelée « planification des volumes tenant compte de la topologie ».apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-block-bronze-delayed parameters: billingType: hourly classVersion: "2" fsType: ext4 iopsPerGB: "2" sizeRange: '[20-12000]Gi' type: Endurance provisioner: ibm.io/ibmc-block reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 3 podManagementPolicy: "Parallel" selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: failure-domain.beta.kubernetes.io/zone containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: myvol1 mountPath: /usr/share/nginx/html - name: myvol2 mountPath: /tmp1 volumeClaimTemplates: - metadata: name: myvol1 spec: accessModes: - ReadWriteOnce # access mode resources: requests: storage: 20Gi storageClassName: ibmc-block-bronze-delayed - metadata: name: myvol2 spec: accessModes: - ReadWriteOnce # access mode resources: requests: storage: 20Gi storageClassName: ibmc-block-bronze-delayedname- Entrez un nom pour votre ensemble avec état. Le nom entré est utilisé pour créer le nom de votre PVC au format :
<volume_name>-<statefulset_name>-<replica_number>. serviceName- Entrez le nom du service que vous souhaitez utiliser pour exposer votre ensemble avec état.
replicas- Entrez le nombre de répliques de votre ensemble avec état.
podManagementPolicy- Entrez la règle de gestion de pod que vous souhaitez utiliser pour votre ensemble avec état.
- OrderedReady : avec cette option, les répliques de l'ensemble avec état sont déployées l'une après l'autre. Par exemple, si vous avez spécifié trois répliques, Kubernetes crée la PVC pour la première réplique, attend
jusqu'à ce que la PVC soit liée, déploie la réplique de l'ensemble avec état et monte la PVC sur la réplique. Une fois le déploiement terminé, la deuxième réplique est déployée. Pour plus d'informations sur cette option, consultez
la section « Gestion des pods » sur
OrderedReady - Parallel : avec cette option, le déploiement de toutes les répliques de l'ensemble avec état démarre en même temps. Si votre application prend en charge le déploiement parallèle des répliques, utilisez cette option afin de gagner du temps pour le déploiement de vos PVC et des répliques de l'ensemble avec état.
- OrderedReady : avec cette option, les répliques de l'ensemble avec état sont déployées l'une après l'autre. Par exemple, si vous avez spécifié trois répliques, Kubernetes crée la PVC pour la première réplique, attend
jusqu'à ce que la PVC soit liée, déploie la réplique de l'ensemble avec état et monte la PVC sur la réplique. Une fois le déploiement terminé, la deuxième réplique est déployée. Pour plus d'informations sur cette option, consultez
la section « Gestion des pods » sur
matchLabels- Dans la section spec.selector, entrez tous les libellés que vous souhaitez inclure dans votre ensemble avec état et votre PVC. Les libellés que vous indiquez dans la section
volumeClaimTemplatesde votre ensemble avec état ne sont pas reconnus par Kubernetes. Exemples de libellés que vous pouvez envisager d'inclure :- Région et Zone : si vous souhaitez que toutes les répliques d'ensemble avec état et les PVC soient créées dans une zone spécifique, ajoutez les deux libellés. Vous pouvez également indiquer la zone et la région dans la classe de stockage que vous utilisez. Si vous ne spécifiez pas de zone et de région et que vous disposez d'un cluster à zones multiples, la zone dans laquelle votre espace de stockage est mis à disposition est sélectionnée sur une base de permutation circulaire pour équilibrer les demandes de volume également dans toutes les zones.
billingType: Indiquez le type de facturation que vous souhaitez utiliser pour vos PVC. Choisissez entre une facturation à l'heure (hourly) ou au mois (monthly). Si vous ne spécifiez pas ce libellé, tous les PVC sont créés avec un type de facturation horaire.
labels- Dans la section de métadonnées du modèle de spécification, entrez les mêmes libellés que ceux que vous avez ajoutés dans la section
spec.selector.matchLabels. affinity- Dans la section spec.templace.sec, spécifiez votre règle d'anti-affinité pour garantir que les pods de votre ensemble avec état sont répartis sur les noeuds worker et les zones. L'exemple montre une règle d'anti-affinité dans laquelle
le pod de l'ensemble avec état préfère ne pas être planifié sur un noeud worker où s'exécute un pod avec le libellé
app: nginx. La sectiontopologykey: failure-domain.beta.kubernetes.io/zonelimite davantage cette règle d'anti-affinité et empêche la planification du pod sur un noeud worker si ce noeud figure dans la même zone que le pod ayant le libelléapp: nginx. En utilisant cette règle d'anti-affinité, vous pouvez appliquer l'anti-affinité aux différents noeuds worker et aux différentes zones. name- Dans la section spec.volume.claim.templates.metadata, entrez un nom pour votre volume. Utilisez le même nom que vous avez défini dans la section
spec.containers.volumeMount.name. Le nom que vous entrez ici est utilisé pour créer le nom de votre PVC au format :<volume_name>-<statefulset_name>-<replica_number>. storage- Dans la section spec.volume.claim.templates.spec.resources.requests, entrez la taille du stockage par blocs en gigaoctets (Gi).
iops- Dans la section spec.volume.claim.templates.spec.resources.requests, si vous souhaitez mettre à disposition du stockage de type performance, entrez le nombre d'IOPS. Si vous utilisez une classe de stockage Endurance et que vous indiquez un nombre d'IOPS, le nombre d'IOPS est ignoré. Le nombre d'IOPS indiqué dans votre classe de stockage est utilisé à la place.
storageClassName- Dans la section spec.volume.claim.templates.spec, entrez la classe de stockage que vous souhaitez utiliser. Pour afficher la liste des classes de stockage existantes, exécutez la commande «
kubectl get sc | grep block». Si vous ne spécifiez pas de classe de stockage, le PVC est créé avec la classe de stockage par défaut définie dans votre cluster. Vérifiez que la classe de stockage par défaut comporteibm.io/ibmc-blockdans la section 'provisioner' de sorte que votre ensemble avec état soit mis à disposition avec du stockage par blocs.
-
Créez votre ensemble avec état.
kubectl apply -f statefulset.yaml -
Patientez jusqu'à ce que votre ensemble avec état soit déployé.
kubectl describe statefulset <statefulset_name>Pour voir le statut actuel de vos PVC, exécutez la commande
kubectl get pvc. Le nom de votre PVC est formaté en tant que<volume_name>-<statefulset_name>-<replica_number>.
Provisionnement statique à l'aide de PVC existants avec un « stateful set »
Vous pouvez mettre à disposition vos PVC de manière anticipée avant de créer votre ensemble avec état ou utiliser des PVC existantes avec votre ensemble avec état.
Lorsque vous effectuez une mise à disposition dynamique de vos PVC lors de la création de l'ensemble avec état, le nom de la PVC est affecté en fonction des valeurs que vous avez utilisées dans le fichier YAML de l'ensemble avec état. Pour que l'ensemble avec état utilise des PVC existantes, le nom de vos PVC doit correspondre à celui qui serait automatiquement créé via une mise à disposition dynamique.
Avant de commencer : Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
- Si vous souhaitez effectuer une mise à disposition préalable de la PVC pour votre ensemble avec état avant de créer l'ensemble avec état, suivez les étapes 1 à 3 de la section Ajout de stockage par blocs à des applications pour créer une PVC pour chaque réplique de l'ensemble avec état. Assurez-vous de créer votre PVC avec un nom qui suit le format suivant :
<volume_name>-<statefulset_name>-<replica_number>.
volume_name-
Utilisez le nom que vous souhaitez spécifier dans la section
spec.volumeClaimTemplates.metadata.namede votre ensemble avec état, par exemplenginxvol. statefulset_name-
Utilisez le nom que vous souhaitez spécifier dans la section
metadata.namede votre ensemble avec état, par exemplenginx_statefulset. replica_number-
Entrez le numéro de votre réplique, en commençant par 0.
Par exemple, si vous devez créer trois répliques de l'ensemble avec état, créez trois PVC avec les noms suivants :
nginxvol-nginx_statefulset-0,nginxvol-nginx_statefulset-1etnginxvol-nginx_statefulset-2.Vous envisagez de créer une PVC et un volume persistant pour une unité de stockage existante ? Créez votre PVC et le volume persistant en utilisant une mise à disposition statique.
- Suivez les étapes indiquées à la section Mise à disposition dynamique : Création de la PVC lorsque vous créez un ensemble avec état pour créer votre ensemble avec état. Le nom de votre PVC suit le
format
<volume_name>-<statefulset_name>-<replica_number>. Veillez à utiliser les valeurs suivantes pour le nom de votre PVC dans la spécification de l'ensemble avec état :spec.volumeClaimTemplates.metadata.name: Entrez le<volume_name>de votre nom de PVC.
metadata.name-
Entrez le
<statefulset_name>de votre nom de PVC. spec.replicas-
Entrez le nombre de répliques que vous souhaitez créer pour votre ensemble avec état. Le nombre de répliques doit être égal au nombre de PVC que vous avez créées précédemment.
Si vos PVC se trouvent dans des zones différentes, n'incluez pas d'étiquette de région ou de zone dans votre ensemble avec état.
-
Vérifiez que les réservations de volume persistant sont utilisées dans vos pods de réplique d'ensemble avec état en répertoriant les pods de votre cluster. Identifiez les pods appartenant à votre ensemble avec état.
kubectl get pods -
Vérifiez que votre PVC existante est montée sur la réplique de votre ensemble avec état. Examinez la valeur de
ClaimNamedans la sectionVolumesde la sortie de l'interface de ligne de commande.kubectl describe pod <pod_name>Exemple de sortie
Name: nginx-0 Namespace: default Node: 10.xxx.xx.xxx/10.xxx.xx.xxx Start Time: Fri, 05 Oct 2022 13:24:59 -0400 ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: myvol-nginx-0 ...
Modification de la taille et du nombre d'opérations d'entrée-sortie par seconde (IOPS) de votre unité de stockage
Si vous envisagez d'augmenter la capacité de stockage ou les performances, vous pouvez modifier votre volume existant.
Pour toute question concernant la facturation ou la procédure à suivre pour modifier votre stockage en utilisant la console IBM Cloud, voir Extension de la capacité de stockage par blocs et Ajustement des IOPS. Les mises à jour que vous effectuez à partir de la console ne sont pas reflétées dans le volume persistant (PV). Pour ajouter ces informations au volume
persistant, exécutez kubectl patch pv <pv_name> et mettez à jour manuellement la taille et IOPS dans la section Libellés et Annotation de votre volume persistant.
-
Répertoriez les réservations de volume persistant (PVC) et notez le nom du volume persistant (PV) associé indiqué dans la colonne VOLUME.
kubectl get pvcExemple de sortie
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE myvol Bound pvc-01ac123a-123b-12c3-abcd-0a1234cb12d3 20Gi RWO ibmc-block-bronze 147d -
Si vous souhaitez modifier les IOPS et la taille de votre stockage par blocs, commencez par éditer les IOPS dans la section
metadata.labels.IOPSde votre volume persistant. Vous pouvez augmenter ou diminuer la valeur d'IOPS. Prenez soin d'entrer une valeur IOPS qui est prise en charge pour votre type de stockage. Par exemple, si vous disposez d'un stockage par blocs de type Endurance avec 4 IOPS, vous pouvez remplacer la valeur IOPS par 2 ou 10. Pour obtenir davantage de valeurs IOPS prises en charge, voir Détermination de la configuration de votre stockage par blocs.kubectl edit pv <pv_name>Pour modifier la valeur IOPS à partir de l'interface de ligne de commande, vous devez également modifier la taille de votre stockage par blocs Si vous souhaitez modifier uniquement la valeur IOPS, mais pas la taille, vous devez demander la modification de la valeur IOPS à partir de la console.
-
Editez la réservation de volume persistant et la nouvelle taille dans la section
spec.resources.requests.storagede votre réservation de volume persistant. Vous pouvez passer à une taille supérieure mais uniquement dans la limite de la capacité maximale qui est définie par votre classe de stockage. Vous ne pouvez pas réduire la taille de votre stockage existant. Pour connaître les tailles valides pour votre classe de stockage, voir Détermination de la configuration de stockage par blocs.kubectl edit pvc <pvc_name> -
Vérifiez que l'extension de volume a été demandée. Vous pouvez déterminer que la demande de l'extension de volume a abouti lorsqu'un message
FileSystemResizePendingapparaît dans la section Conditions de la sortie de votre interface de ligne de commande.kubectl describe pvc <pvc_name>Exemple de sortie
... Conditions: Type Status LastProbeTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- FileSystemResizePending True Mon, 01 Jan 0001 00:00:00 +0000 Thu, 25 Apr 2022 15:52:49 -0400 Waiting for user to (re-)start a pod to finish file system resize of volume on node. -
Répertoriez tous les pods qui montent la réservation de volume persistant. Si votre réservation de volume persistant est montée par un pod, l'extension de volume est traitée automatiquement. Si votre réservation de volume persistant n'est pas montée par un pod, vous devez effectuer cette opération afin que l'extension de volume puisse être traitée.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"Les pods montés sont renvoyés au format suivant :
<pod_name>: <pvc_name>. -
Si votre réservation de volume persistant n'est pas montée par un pod, créez un pod ou un déploiement et montez la réservation de volume persistant. Si votre réservation de volume persistant est montée par un pod, passez à l'étape suivante.
-
Vérifiez que la taille les IOPS ont été modifiés dans la section Labels de la sortie de l'interface CLI. L'exécution de ce processus peut prendre quelques minutes.
kubectl describe pv <pv_name>Exemple de sortie
... Labels: CapacityGb=50 Datacenter=dal10 IOPS=500 -
Connectez-vous au pod qui monte le PVC.
kubectl exec <pod-name> -it -- bash -
Exécutez la commande suivante pour utiliser les fichiers binaires de l'hôte.
chroot /host -
Redimensionnez le système de fichiers.
sudo resize2fs <filesystem-path>Exemple de commande
sudo resize2fs /dev/vdg -
Vérifiez que le système de fichiers est redimensionné.
df -h
Sauvegarde et restauration de données
Le stockage par blocs est mis à disposition au même emplacement que les noeuds worker dans votre cluster. Le stockage est hébergé par IBM sur des serveurs en cluster pour qu'il soit disponible si un serveur tombe en panne. Cependant, le stockage par blocs n'est pas sauvegardé automatiquement et risque d'être inaccessible en cas de défaillance de l'emplacement global. Pour éviter que vos données soient perdues ou endommagées, vous pouvez configurer des sauvegardes régulières que vous pourrez utiliser pour récupérer vos données si nécessaire.
Passez en revue les options de sauvegarde et restauration suivantes pour votre stockage par blocs :
Configuration de la prise régulière d'instantanés
Vous pouvez configurer la prise régulière d'instantanés pour votre stockage par blocs, ce qui consiste en une image en lecture seule qui capture l'état de l'instance à un moment donné.
Pour stocker l'instantané, vous devez demander de l'espace d'instantané dans votre stockage par blocs. Les instantanés sont stockés dans l'instance de stockage existante figurant dans la même zone. Vous pouvez restaurer des données à partir d'un instantané si un utilisateur supprime accidentellement des données importantes du volume. \n \n ** Pour créer une image instantanée pour votre volume, procédez comme suit.
-
Connectez-vous à l'interface de ligne de commande
ibmcloud sl.ibmcloud sl init -
Répertoriez les volumes persistants existants dans votre cluster.
kubectl get pv -
Obtenez les détails du volume persistant pour lequel vous voulez créer un espace d'instantané et notez l'ID du volume, la taille et le nombre d'entrées-sorties par seconde (IOPS). La taille et le nombre d'IOPS sont affichés dans la section Labels de la sortie de l'interface de ligne de commande.
kubectl describe pv <pv_name> -
Pour trouver l'ID du volume, consultez l'annotation
ibm.io/network-storage-iddans la sortie de l'interface de ligne de commande. -
Créez la taille de l'instantané pour le volume existant à l'aide des paramètres que vous avez récupérés à l'étape précédente.
ibmcloud sl block snapshot-order <volume_ID> --size <size> --tier <iops> -
Attendez que la taille de l'instantané soit créée. La taille de l'instantané est mise à disposition lorsque la section Snapshot Size (GB) de la sortie de l'interface de ligne de commande passe de 0 à la taille que vous avez commandée.
ibmcloud sl block volume-detail <volume_ID> -
Créez l'instantané de votre volume et notez l'ID de l'instantané qui a été créé pour vous.
ibmcloud sl block snapshot-create <volume_ID> -
Vérifiez que la création de l'instantané a abouti.
ibmcloud sl block snapshot-list <volume_ID> -
Définissez la planification de l'image instantanée. Pour plus d'informations sur les options disponibles pour votre planification d'instantané, voir la documentation de l'interface de ligne de commande.
ibmcloud sl block snapshot-enable VOLUME_ID <OPTIONS> -
Pour restaurer les données d'un instantané sur un volume existant, exécutez la commande suivante :
ibmcloud sl block snapshot-restore <volume_ID> <snapshot_ID>
Réplication d'instantanés dans une autre zone
Pour protéger vos données en cas de défaillance d'une zone, vous pouvez répliquer des instantanés sur une instance de stockage par blocs configurée dans une autre zone.
Les données peuvent être répliquées du stockage principal uniquement vers le stockage de sauvegarde. Vous ne pouvez pas monter une instance de stockage de blocs répliquée sur un cluster. En cas de défaillance de votre stockage principal, vous pouvez manuellement définir votre stockage de sauvegarde répliqué comme stockage principal. Vous pouvez ensuite le monter sur votre cluster. Une fois votre stockage principal restauré, vous pouvez récupérer les données dans le stockage de sauvegarde.
Duplication du stockage
Vous pouvez dupliquer votre instance de stockage par blocs dans la même zone que l'instance de stockage d'origine.
Un doublon contient les mêmes données que l'instance de stockage d'origine au moment où vous créez le doublon. Contrairement aux répliques, le doublon s'utilise comme une instance de stockage indépendante de l'original. Pour effectuer la duplication, configurez d'abord des instantanés pour le volume.
Sauvegarde des données dans IBM Cloud® Object Storage
Vous pouvez utiliser la charte Helm ibm-backup-restore pour constituer un pod de sauvegarde et de restauration dans votre cluster.
Ce pod contient un script pour exécuter une sauvegarde unique ou régulière d'une réservation de volume persistant (PVC) dans votre cluster. Les données sont stockées dans votre instance IBM Cloud® Object Storage que vous avez configurée dans une zone.
Le stockage par blocs est monté avec un mode d'accès RWO. Ce type d'accès autorise uniquement le montage d'un pod à la fois sur le stockage par blocs. Pour sauvegarder vos données, vous devez démonter le pod d'application du stockage, le monter sur votre pod de sauvegarde, sauvegarder les données et monter à nouveau le stockage sur votre pod d'application.
Pour rendre vos données hautement disponibles et protéger votre application en cas de défaillance d'une zone, configurez une deuxième instance Object Storage et répliquez les données entre les différentes zones. Si vous devez restaurer des données à partir de votre instance Object Storage, utilisez le pod de restauration fourni avec la charte Helm.
Copie de données vers et depuis des pods et des conteneurs
Vous pouvez utiliser la commande kubectl cp pour copier des fichiers et des répertoires vers
et depuis des pods ou des conteneurs spécifiques de votre cluster.
Lorsque vous exécutez la commande kubectl cp, si vous ne spécifiez pas de conteneur avec -c, la commande utilise le premier conteneur disponible dans le pod.
Copiez les données de votre machine locale vers un pod de votre cluster.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>
Copiez les données d'un pod de votre cluster vers votre machine locale.
kubectl cp <namespace>/<pod>:<pod_filepath>/<filename> <local_filepath>/<filename>
Copiez les données de votre machine locale vers un conteneur spécifique qui s'exécute dans un pod de votre cluster.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER
Référence des classes de stockage
Bronze
- Nom
ibmc-block-bronzeibmc-block-retain-bronze- Type
- Stockage d'endurance
- Système de fichiers
ext4- IOPS par gigaoctet
- 2
- Plage de tailles en gigaoctets
- 20 - 12000 Gi
- Disque dur
- SSD
- Stratégie de récupération
ibmc-block-bronze: Supprimeribmc-block-retain-bronze: Conserver
Silver
- Nom
ibmc-block-silveribmc-block-retain-silver- Type
- Stockage d'endurance
- Système de fichiers
ext4- IOPS par gigaoctet
- 4
- Plage de tailles en gigaoctets
- 20 - 12000 Gi
- Disque dur
- SSD
- Stratégie de récupération
ibmc-block-silver: Supprimeribmc-block-retain-silver: Conserver
Gold
- Nom
ibmc-block-goldibmc-block-retain-gold- Type
- Stockage d'endurance
- Système de fichiers
ext4- IOPS par gigaoctet
- 10
- Plage de tailles en gigaoctets
- 20 - 4000 Gi
- Disque dur
- SSD
- Stratégie de récupération
ibmc-block-gold: Supprimeribmc-block-retain-gold: Conserver
Personnalisé
- Nom
ibmc-block-customibmc-block-retain-custom- Type
- Système de fichiers de performances
ext4- IOPS et taille
- Plage de taille en gigaoctets / plage IOPS en multiples de 100
- 20-39 Gi / 100-1000 IOPS
- 40-79 Gi / 100-2000 IOPS
- 80-99 Gi / 100-4000 IOPS
- 100-499 Gi / 100-6000 IOPS
- 500-999 Gi / 100-10000 IOPS
- 1000-1999 Gi / 100-20000 IOPS
- 2000-2999 Gi / 200-40000 IOPS
- 3000-3999 Gi / 200-48000 IOPS
- 4000-7999 Gi / 300-48000 IOPS
- 8000-9999 Gi / 500-48000 IOPS
- 10000-12000 Gi / 1000-48000 IOPS
- Disque dur
- Rapport IOPS/gigaoctet qui détermine le type de disque dur mis à disposition. Pour déterminer ce rapport, divisez la valeur des IOPS par la taille de votre stockage.
- Exemple : Vous avez choisi 500Gi de stockage avec 100 IOPS. Votre rapport est 0,2 (100 IOPS/500Gi).
- Présentation des types de disque dur par ratio :
- Inférieur ou égal à 0,3 : SATA
- Supérieur à 0,3 : SSD
- Stratégie de récupération
ibmc-block-custom: Supprimeribmc-block-retain-custom: Conserver
Exemples de classes de stockage personnalisées
Vous pouvez créer une classe de stockage personnalisée et l'utiliser dans votre PVC.
IBM Cloud Kubernetes Service fournit des classes de stockage prédéfinies pour mettre à disposition du stockage par blocs avec une configuration et un niveau particuliers. Parfois, vous pouvez souhaiter stocker une mémoire avec une configuration différente qui n'est pas couverte dans les classes de stockage prédéfinies. Vous pouvez utiliser les exemples de cette rubrique pour trouver des modèles de classes de stockage personnalisées.
Pour créer votre classe de stockage personnalisée, voir Personnalisation d'une classe de stockage. Utilisez ensuite votre classe de stockage personnalisée dans votre PVC.
Création de stockage tenant compte de la topologie
Pour utiliser du stockage par blocs dans un cluster multizone, votre pod doit être planifié dans la même zone que votre instance de stockage par blocs pour que vous puissiez effectuer des opérations de lecture et d'écriture dans le volume. Avant l'introduction de ce type de planification par Kubernetes, la mise à disposition dynamique de votre stockage créait automatiquement l'instance de stockage par blocs dès qu'une PVC était créée. Ensuite, lorsque vous créiez votre pod, le planificateur de Kubernetes essayait de déployer le pod dans le même centre de données que votre instance de stockage par blocs.
La création de l'instance de stockage par blocs sans connaître les contraintes liées au pod peut entraîner des résultats indésirables. Par exemple, il peut arriver que votre pod ne puisse pas être planifié sur le même noeud worker que votre stockage car ce noeud ne dispose pas de ressources suffisantes ou une tache lui est appliquée et il n'autorise pas la planification du pod. Avec une planification de volume tenant compte de la topologie, la création de l'instance de stockage par blocs est différée jusqu'à ce que le premier pod utilisant le stockage soit créé.
Pour utiliser la planification de volume tenant compte de la topologie, vérifiez que vous avez installé le plug-in IBM Cloud Block Storage version 1.2.0 ou ultérieure.
Les exemples suivants montrent comment créer des classes de stockage qui retardent la création de l'instance de stockage par blocs jusqu'à ce que le premier pod utilisant ce stockage soit prêt à être planifié. Pour différer la création, vous
devez inclure l'option volumeBindingMode: WaitForFirstConsumer. Si vous n'incluez pas cette option, volumeBindingMode est automatiquement défini sur Immediate et l'instance de stockage de bloc est créée
lorsque vous créez le PVC.
Exemple relatif au stockage par blocs de type Endurance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-bronze-delayed
parameters:
billingType: hourly
classVersion: "2"
fsType: ext4
iopsPerGB: "2"
sizeRange: '[20-12000]Gi'
type: Endurance
provisioner: ibm.io/ibmc-block
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
Exemple relatif au stockage par blocs de type Performance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
billingType: "hourly"
classVersion: "2"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
type: "Performance"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
Spécification de la zone et de la région
Si vous souhaitez créer votre stockage par blocs dans une zone précise, vous pouvez spécifier la zone et la région dans une classe de stockage personnalisée.
Utilisez la classe de stockage personnalisée avec le plug-in IBM Cloud Block Storage version 1.0.0 ou pour mettre à disposition du stockage par blocs de manière statique dans une zone spécifique. Dans tous les autres cas, indiquez la zone directement dans votre PVC.
Le fichier .yaml suivant personnalise une classe de stockage basée sur la classe de stockage ibm-block-silver sans retain : le type type est "Endurance", le nombre d'IOPS par gigaoctet
(iopsPerGB) est 4, la plage de tailles (sizeRange) est "[20-12000]Gi" et la règle de récupération (reclaimPolicy) est définie par "Delete".
La zone indiquée est dal12. Pour utiliser une autre classe de stockage comme référence, voir la rubrique Référence des classes de stockage.
Créez la classe de stockage dans la même région et dans la même zone que votre cluster et vos noeuds worker. Pour obtenir la région de votre cluster, exécutez ibmcloud ks cluster get --cluster <cluster_name_or_ID> et recherchez
le préfixe de région dans URL principale, tel que eu-de dans https://c2.eu-de.containers.cloud.ibm.com:11111. Pour obtenir la zone de votre noeud worker, exécutez ibmcloud ks worker ls --cluster <cluster_name_or_ID>.
Exemple relatif au stockage par blocs de type Endurance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-silver-mycustom-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
zone: "dal12"
region: "us-south"
type: "Endurance"
iopsPerGB: "4"
sizeRange: "[20-12000]Gi"
reclaimPolicy: "Delete"
Exemple relatif au stockage par blocs de type Performance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-block
parameters:
zone: "dal12"
region: "us-south"
type: "Performance"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
reclaimPolicy: "Delete"
Montage de stockage par blocs avec un système de fichiers XFS
Les exemples suivants illustrent la création d'une classe de stockage qui met à disposition du stockage par blocs avec un système de fichiers XFS.
Exemple relatif au stockage par blocs de type Endurance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-custom-xfs
labels:
addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
type: "Endurance"
iopsPerGB: "4"
sizeRange: "[20-12000]Gi"
fsType: "xfs"
reclaimPolicy: "Delete"
Exemple relatif au stockage par blocs de type Performance.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-block-custom-xfs
labels:
addonmanager.kubernetes.io/mode: Reconcile
provisioner: ibm.io/ibmc-block
parameters:
classVersion: "2"
type: "Performance"
sizeIOPSRange: |-
[20-39]Gi:[100-1000]
[40-79]Gi:[100-2000]
[80-99]Gi:[100-4000]
[100-499]Gi:[100-6000]
[500-999]Gi:[100-10000]
[1000-1999]Gi:[100-20000]
[2000-2999]Gi:[200-40000]
[3000-3999]Gi:[200-48000]
[4000-7999]Gi:[300-48000]
[8000-9999]Gi:[500-48000]
[10000-12000]Gi:[1000-48000]
fsType: "xfs"
reclaimPolicy: "Delete"
Retrait de stockage persistant d'un cluster
Lorsque vous configurez du stockage persistant dans votre cluster, vous disposez de trois composants principaux : la réservation de volume persistant (PVC) Kubernetes qui sollicite le stockage, le volume persistant (PV) Kubernetes qui est monté sur un pod et décrit dans la PVC, et l'instance d'infrastructure IBM Cloud, comme par exemple du stockage de fichiers ou du stockage par blocs classiques. Selon la façon dont vous avez créé votre stockage, il vous faudra peut-être supprimer les trois composants séparément.
Description de vos options de retrait de stockage
La procédure de retrait du stockage persistant de votre compte IBM Cloud varie en fonction de la façon dont vous avez mis à disposition le stockage et des composants que vous avez déjà retirés.
- Mon stockage persistant est-il supprimé lorsque je supprime mon cluster?
- Lors de la suppression du cluster, vous avez la possibilité de retirer votre stockage persistant. Toutefois, selon la façon dont votre stockage a été mis à disposition, la procédure de retrait de votre stockage peut ne pas inclure tous les
composants de stockage. Si vous avez provisionné dynamiquement du stockage avec une classe de stockage définissant l'option «
reclaimPolicy: Delete», votre PVC, votre PV et l'instance de stockage sont automatiquement supprimés lorsque vous supprimez le cluster. Pour le stockage provisionné de manière statique ou celui que vous avez provisionné avec une classe de stockage définissant l'option «reclaimPolicy: Retain», le PVC et le PV sont supprimés lorsque vous supprimez le cluster, mais votre instance de stockage et vos données sont conservées. L'utilisation de votre instance de stockage vous est toujours facturée. Par ailleurs, si vous avez supprimé votre cluster alors qu'il n'était pas à l'état sain, le stockage peut encore exister, même si vous choisissez de le supprimer. - Comment puis-je supprimer l'espace de stockage tout en conservant mon cluster?
- Lorsque vous avez mis à disposition le stockage de façon dynamique avec une classe de stockage indiquant
reclaimPolicy: Delete, vous pouvez retirer la réservation de volume persistant (PVC) pour lancer le processus de suppression de votre stockage persistant. Votre réservation de volume persistant (PVC), votre volume persistant (PV) et votre instance de stockage sont automatiquement retirés. Pour le stockage provisionné de manière statique ou celui que vous avez provisionné avec une classe de stockage définissant l'option «reclaimPolicy: Retain», vous devez supprimer manuellement le PVC, le PV et l'instance de stockage afin d'éviter toute facturation supplémentaire. - Comment la facturation prend-elle fin une fois que j'ai supprimé mon espace de stockage?
- Selon les composants de stockage que vous supprimez et le moment auquel vous les supprimez, il se peut que le cycle de facturation ne s'arrête pas immédiatement. Si vous supprimez la réservation de volume persistant et le volume persistant, mais pas l'instance dans votre compte IBM Cloud, cette instance continue à exister et vous êtes facturé pour son utilisation.
Si vous supprimez la PVC, le PV et l'instance de stockage, le cycle de facturation s'arrête en fonction du type de facturation (billingType) que vous avez choisi lors de la mise à disposition de votre stockage et de la façon dont
vous avez choisi de supprimer le stockage.
-
Lorsque vous supprimez manuellement l'instance de stockage persistant depuis la console IBM Cloud ou l'interface de ligne de commande (CLI), la facturation prend fin comme suit :
- Stockage horaire : la facturation cesse immédiatement. Une fois votre stockage annulé, il se peut que votre instance de stockage soit toujours visible dans la console pendant une durée maximale de 72 heures.
- Stockage mensuel : vous pouvez choisir l'option Annulation immédiate ou Annulation à la date anniversaire. Dans les deux cas, la facturation se poursuit jusqu'à la fin du cycle de facturation en cours et cesse pour le cycle de facturation suivant. Une fois votre stockage annulé, il se peut que votre instance de stockage soit toujours visible dans la console ou l'interface de ligne de commande pendant une durée maximale de 72 heures.
- Annulation immédiate : choisissez cette option pour retirer immédiatement votre stockage. Ni vous ni vos utilisateurs ne pouvez plus utiliser le stockage ou récupérer les données.
- Annulation à la date anniversaire : choisissez cette option pour annuler votre stockage à la date anniversaire suivante. Vos instances de stockage restent actives jusqu'à la date anniversaire suivante et vous pouvez continuer de les utiliser jusqu'à cette date, par exemple, afin de permettre à votre équipe de créer des copies de sauvegarde de vos données.
-
Lorsque vous avez mis à disposition le stockage de façon dynamique avec une classe de stockage indiquant
reclaimPolicy: Deleteque vous choisissez de retirer la réservation de volume persistant (PVC), le volume persistant (PV) et l'instance de stockage sont immédiatement retirés. Pour le stockage facturé à l'heure, la facturation s'arrête immédiatement. Pour le stockage facturé au mois, vous êtes facturé jusqu'à la fin du mois en cours. Une fois votre stockage retiré et la facturation arrêtée, il se peut que votre instance de stockage soit toujours visible dans la console ou l'interface de ligne de commande pendant une durée maximale de 72 heures.
- Que dois-je savoir avant de supprimer un espace de stockage persistant?
- Lorsque vous nettoyez du stockage persistant, vous supprimez toutes les données qui y sont stockées. Si vous avez besoin d'une copie des données, effectuez une sauvegarde.
- J'ai supprimé mon instance de stockage. Pourquoi est-ce que je vois toujours mon instance?
- Une fois que vous avez retiré le stockage persistant, il peut s'écouler jusqu'à 72 heures avant que le retrait soit total et que le stockage disparaisse de votre console ou interface de ligne de commande IBM Cloud.
Nettoyage de stockage persistant
Retirez la PVC, le PV et l'instance de stockage de votre compte IBM Cloud afin d'éviter d'autres frais liés à votre stockage persistant.
Avant de commencer :
- Vérifiez que vous avez sauvegardé les données que vous souhaitez conserver.
- Connectez-vous à votre compte. Le cas échéant, ciblez le groupe de ressources approprié. Définissez le contexte de votre cluster.
Pour nettoyer des données persistantes :
-
Répertoriez les réservations de volume persistant (PVC) figurant dans votre cluster et notez le nom de la PVC (
NAME), la classe de stockage (STORAGECLASS) et le nom du volume persistant lié à la PVC indiqué sousVOLUME.kubectl get pvcExemple de sortie
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE claim1 Bound pvc-06886b77-102b-11e8-968a-f6612bb731fb 20Gi RWO class 78d claim2 Bound pvc-457a2b96-fafc-11e7-8ff9-b6c8f770356c 4Gi RWX class 105d claim3 Bound pvc-1efef0ba-0c48-11e8-968a-f6612bb731fb 24Gi RWX class 83d -
Passez en revue la
ReclaimPolicyet lebillingTypecorrespondant à la classe de stockage.kubectl describe storageclass <storageclass_name>Si la politique de récupération indique
Delete, votre volume persistant et le stockage physique sont supprimés en même temps que la PVC. Si la politique de récupération indiqueRetainou si vous avez mis à disposition votre stockage sans classe de stockage, votre volume persistant et votre stockage physique ne sont pas supprimés en même temps que la PVC. Vous devez supprimer la PVC, le volume persistant et le stockage physique séparément.Si vous êtes facturé tous les mois pour le stockage, vous êtes redevable pour le mois complet, même si vous supprimez le stockage avant la fin du cycle de facturation.
-
Supprimez les pods qui montent la PVC. Répertoriez les pods qui montent la PVC. Si aucun pod n'est retourné dans votre sortie CLI, vous n'avez pas de pod qui utilise le PVC.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"Exemple de sortie
depl-12345-prz7b: claim1 -
Supprimez le pod utilisant la PVC. Si le pod fait partie d'un déploiement, retirez ce déploiement.
kubectl delete pod <pod_name> -
Vérifiez que le pod est supprimé.
kubectl get pods -
Supprimez la PVC.
kubectl delete pvc <pvc_name> -
Examinez le statut de votre volume persistant. Utilisez le nom du volume persistant que vous avez récupéré précédemment sous
VOLUME. Lorsque vous supprimez la PVC, le volume persistant lié à cette PVC est libéré. Selon le mode de mise à disposition de votre stockage, votre volume persistant va passer à l'étatDeleting(suppression) si sa suppression est automatique ou à l'étatReleased(libéré) si vous devez le supprimer manuellement. Remarque : pour les volumes persistants supprimés automatiquement, l'état peut brièvement indiquerReleasedavant sa suppression définitive. Exécutez à nouveau la commande au bout de quelques minutes pour voir si le volume persistant est supprimé.kubectl get pv <pv_name> -
Si votre volume persistant n'est pas supprimé, supprimez-le manuellement.
kubectl delete pv <pv_name> -
Vérifiez que le volume persistant (PV) est supprimé.
kubectl get pv -
Répertoriez l'instance de stockage physique que votre volume persistant a pointé et notez la
idde l'instance de stockage physique.ibmcloud sl block volume-list --columns id --columns notes | grep <pv_name>Exemple de sortie
12345678 {"plugin":"ibmcloud-block-storage-plugin-689df949d6-4n9qg","region":"us-south","cluster":"aa1a11a1a11b2b2bb22b22222c3c3333","type":"Endurance","ns":"default","pvc":"block-storage-pvc","pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7","storageclass":"ibmc-block-silver","reclaim":"Delete"}Description des informations indiquées sous notes :
"plugin":"ibm-file-plugin-5b55b7b77b-55bb7"- Le plug-in de stockage utilisé par le cluster.
"region":"us-south"- Région dans laquelle se trouve votre cluster.
"cluster":"aa1a11a1a11b2b2bb22b22222c3c3333"- L'ID du cluster associé à l'instance de stockage.
"type":"Endurance"- Le type de stockage de fichier ou de bloc,
EnduranceouPerformance. "ns":"default"- L'espace de nom sur lequel l'instance de stockage est déployée.
"pvc":"block-storage-pvc"- Le nom du circuit virtuel permanent associé à l'instance de stockage.
"pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7"- Le PV qui est associé à l'instance de stockage.
"storageclass":"ibmc-file-gold"- Type de classe de stockage: bronze, argent, or ou personnalisé.
-
Retirez l'instance de stockage physique.
ibmcloud sl block volume-cancel <classic_block_id> -
Vérifiez que l'instance de stockage physique est supprimée.
L'exécution du processus de suppression peut durer jusqu'à 72 heures.
ibmcloud sl block volume-list
Configuration de la surveillance pour les volumes persistants de connectivité limited
Lorsque vous créez un pod et une réservation de volume persistant qui utilisent Block Storage for Classic, 2 ports cible sont affectés au volume persistant (PV) sous-jacent sur lequel le stockage est monté. Plusieurs ports cible permettent la reprise en ligne en cas de panne d'un port.
Dans les versions précédentes du pilote Block Storage for Classic, l'impossibilité de trouver 2 ports cible lors du montage d'un volume persistant lors du déploiement a provoqué l'échec du déploiement.
Toutefois, parfois, par exemple pendant les fenêtres de maintenance IaaS, vous pouvez souhaiter que vos pods soient déployés avec succès avec un seul port cible disponible sur le volume persistant.
A partir de la version 2.4.12 du pilote Block Storage for Classic, les pods seront déployés avec succès même si un seul port cible peut être affecté par le volume persistant. En plus de ce changement de comportement, les volumes
persistants incluent désormais un nouveau libellé pour indiquer la disponibilité du réseau où un libellé de healthy signifie que 2 ports cible ont été affectés et limited indique qu'un seul port cible a pu être affecté
lors du montage.
Pour surveiller les instances dans lesquelles la connectivité du pod à Block Storage for Classic est limitée, vous pouvez configurer une alerte personnalisée qui recherche le libellé limited. Configurez ensuite le seuil d'alerte
sur >0.
-
Dans le tableau de bord IBM Cloud Monitoring, sélectionnez Nouvelle alerte > Métrique.
-
Sélectionnez Prom query et entrez
kube_persistentvolume_labels{label_ibm_io_pv_connectivity_status='limited'}. -
Définissez le seuil sur
>0et la gravité à utiliser pour cette alerte. -
Sélectionnez votre canal de notification et sauvegardez l'alerte.
Attribution de profils de confiance au stockage en bloc
Vous pouvez utiliser des profils de confiance pour accorder à différentes identités IBM Cloud l'accès aux ressources de votre compte, y compris à vos solutions de stockage. Les profils de confiance centralisent le contrôle d'accès, éliminent le besoin de clés API à longue durée de vie et vous permettent de limiter les autorisations au strict minimum requis pour une tâche spécifique. Pour plus d'informations, voir Configuration d'un profil de confiance pour les composants de stockage.