Installation du module complémentaire de cluster IBM Cloud Object Storage
Vous pouvez activer le module complémentaire « IBM Cloud Object Storage » depuis la console IBM Cloud ou via l'interface de ligne de commande (CLI).
Prérequis :
- Le module complémentaire IBM Cloud Object Storage nécessite au moins 0.3 vCPU et 360 Mo de mémoire.
- Le module complémentaire est disponible pour les nœuds de travail Red Hat CoreOS (RHCOS) et Ubuntu. Si votre cluster comporte à la fois des nœuds RHEL et RHCOS, le module complémentaire n'est déployé que sur les nœuds RHCOS.
- Créez une instance IBM Cloud Object Storage.
- Facultatif Si vous prévoyez d'utiliser le versionnement des seaux, vos identifiants de service doivent disposer des autorisations Manager ou Writer pour activer ou désactiver le versionnement des seaux sur le seau. Pour plus d'informations, consultez la section Premiers pas avec la gestion des versions.
Comprendre la création et la suppression des seaux
- Vous pouvez utiliser un seau existant en spécifiant le nom du seau dans votre PVC.
- Si vous fournissez un nom de seau et que ce seau n'existe pas, un seau portant ce nom est créé.
- Si vous ne fournissez pas de nom de compartiment, un compartiment respectant la convention de nommage
s3fs-<timestamp>-xxxourclone-<timestamp>-xxxest créé, en fonction du type de montage. - Les bacs sont supprimés en fonction de la politique de récupération définie dans votre classe de stockage.
- Si
reclaimPolicy: Deleteest défini, le seau est supprimé lorsque le PVC est supprimé. - Si
reclaimPolicy: Retainest défini, le seau est conservé même après la suppression du PVC.
- Si
Activation du module complémentaire IBM Cloud Object Storage depuis la console
- Dans le tableau de bord des clusters d' Red Hat OpenShift on IBM Cloud, sélectionnez le cluster sur lequel vous souhaitez activer le module complémentaire.
- Dans la section « Extensions », repérez l'Cloud Object Storage module complémentaire et cliquez sur « Installer ».
- Dans le panneau « Installer l'extension : Cloud Object Storage », sélectionnez une version dans le menu déroulant « Version ».
- Facultatif : configurez les paramètres suivants.
maxVolumesPerNode- Définissez le nombre maximal de volumes « IBM Cloud Object Storage » pouvant être montés sur un même nœud. La valeur par défaut est «
0», ce qui signifie qu'aucune limite n'est appliquée. restrictNodeServerScheduling- Définissez la valeur sur «
true» pour limiter l'exécution des pods du serveur de nœuds aux nœuds portant l'étiquette «cos.csi.ibm.io/csi-node=true». La valeur par défaut est «false», ce qui signifie que les pods « nodeserver » sont planifiés sur tous les nœuds.
- Cliquez sur Install. Le déploiement du module complémentaire peut durer plusieurs minutes, ce dernier est ensuite prêt à être utilisé.
- Vérification de l'installation. Dans la section « Modules complémentaires », vérifiez que le Cloud Object Storage module affiche un état de santé « Normal ».
Activation du module complémentaire IBM Cloud Object Storage à partir du CLI
Avant de commencer : accédez à votre cluster Red Hat OpenShift.
- Mettez à jour le plug-in
container-servicevers la version la plus récente.ibmcloud update && ibmcloud plugin update container-service - Listez les modules complémentaires et trouvez la version que vous souhaitez installer.
ibmcloud oc cluster addon versions - Examinez les options du module complémentaire.
ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION] - Installer le module complémentaire.
ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION] - Vérification de l'installation.
ibmcloud oc cluster addon ls --cluster CLUSTEROK Name Version Health State Health Status ibm-object-csi-driver 1.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) - Énumérez les classes de stockage disponibles. Le pilote prend en charge les classes de stockage régionales et interrégionales pour les montages «
s3fs» et «rclone».oc get sc | grep objectibm-object-storage-smart-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h
Restriction de la planification des pods « nodeserver »
Par défaut, les pods « nodeserver » du pilote COS CSI sont planifiés sur tous les nœuds du cluster. Vous pouvez utiliser le paramètre restrictNodeServerScheduling pour limiter la planification des pods du serveur
de nœuds aux seuls nœuds portant le libellé « cos.csi.ibm.io/csi-node=true ».
Vous pouvez configurer restrictNodeServerScheduling lors de l'activation du module complémentaire, ou le mettre à jour ultérieurement en appliquant un correctif à l' ConfigMap.
- Pour définir la variable d'
restrictNodeServerSchedulingation lors de l'activation du module complémentaire, incluez l'indicateur «--param» dans la commande d'activation.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "restrictNodeServerScheduling=true" - Pour mettre à jour «
restrictNodeServerScheduling» une fois que l'extension est déjà activée, procédez comme suit.
- Répertoriez les nœuds de votre cluster et déterminez où vous souhaitez que les pods du pilote COS s'exécutent.
Exemple de sortieoc get nodesNAME STATUS ROLES AGE VERSION 10.241.0.11 Ready <none> 5d2h v1.35.5+IKS 10.241.0.12 Ready <none> 5d2h v1.35.5+IKS 10.241.0.13 Ready <none> 5d2h v1.35.5+IKS 10.241.128.10 Ready <none> 5d2h v1.35.5+IKS 10.241.128.11 Ready <none> 5d2h v1.35.5+IKS 10.241.128.9 Ready <none> 5d2h v1.35.5+IKS 10.241.65.12 Ready <none> 5d2h v1.35.5+IKS 10.241.65.13 Ready <none> 5d2h v1.35.5+IKS 10.241.65.14 Ready <none> 5d2h v1.35.5+IKS - Vérifiez que les pods « nodeserver » sont bien en cours d'exécution sur tous les nœuds.
Exemple de sortieoc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-2pj2j 3/3 Running 0 145m 172.17.14.10 10.241.0.12 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none> ibm-object-csi-node-7l9hc 3/3 Running 0 145m 172.17.17.6 10.241.128.9 <none> <none> ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-dw6qs 3/3 Running 0 145m 172.17.46.77 10.241.128.10 <none> <none> ibm-object-csi-node-rpcvr 3/3 Running 0 145m 172.17.32.198 10.241.65.13 <none> <none> ibm-object-csi-node-swqtg 3/3 Running 0 145m 172.17.16.69 10.241.0.13 <none> <none> ibm-object-csi-node-sxbbs 3/3 Running 0 145m 172.17.26.7 10.241.65.14 <none> <none> ibm-object-csi-node-xm8bt 3/3 Running 0 145m 172.17.20.200 10.241.128.11 <none> <none> - Attribuez une étiquette aux nœuds sur lesquels vous souhaitez que les pods « nodeserver » soient planifiés.
Exemple de sortieoc label nodes NODE-NAME-1 NODE-NAME-2 cos.csi.ibm.io/csi-node=truenode/10.241.0.11 labeled node/10.241.0.12 labeled - Pour activer cette restriction, mettez à jour le fichier « ConfigMap ».
Exemple de sortieoc patch cm managed-addon-ibm-object-csi-driver -n kube-system \ --type merge -p '{"data":{"restrictNodeServerScheduling":"true"}}'configmap/managed-addon-ibm-object-csi-driver patched - Vérifiez que les pods « nodeserver » ne sont planifiés que sur des nœuds étiquetés.
Exemple de sortieoc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none>
| Paramètre | Comportement |
|---|---|
restrictNodeServerScheduling: "false" (par défaut) |
Les pods « nodeserver » sont planifiés sur tous les nœuds. |
restrictNodeServerScheduling: "true" |
Les pods « nodeserver » sont planifiés uniquement sur les nœuds portant l'étiquette « cos.csi.ibm.io/csi-node=true ». |
Définition du nombre maximal de volumes par nœud
Par défaut, le pilote COS CSI ne limite pas le nombre de volumes pouvant être montés sur un même nœud. Vous pouvez utiliser le paramètre « maxVolumesPerNode » pour définir le nombre maximal de volumes par nœud.
Vous pouvez configurer maxVolumesPerNode lors de l'activation du module complémentaire, ou le mettre à jour ultérieurement en appliquant un correctif à l' ConfigMap.
- Pour définir la variable d'
maxVolumesPerNodeation lors de l'activation du module complémentaire, incluez l'indicateur «--param» dans la commande d'activation.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "maxVolumesPerNode=VALUE" - Pour mettre à jour
maxVolumesPerNodeune fois que l'extension est déjà activée, appliquez le correctif à l'extension gérée ConfigMap.Exemple de sortieoc patch cm managed-addon-ibm-object-csi-driver -n kube-system --type merge -p '{"data":{"maxVolumesPerNode":"VALUE"}}'configmap/managed-addon-ibm-object-csi-driver patched
| Paramètre | Comportement |
|---|---|
maxVolumesPerNode: "0" (par défaut) |
Il n'y a pas de limite quant au nombre de volumes pouvant être montés par nœud. |
maxVolumesPerNode: "VALUE" |
Limite à la valeur spécifiée le nombre de volumes pouvant être montés sur un même nœud. |
Déploiement d'une application utilisant l' IBM Cloud Object Storage
Créez un secret Kubernetes contenant vos identifiants COS.
-
Enregistrez la configuration suivante dans un fichier appelé
secret.yaml. Fournissez soit les identifiants IAM, soit les identifiants HMAC, mais pas les deux.- Pour les identifiants IAM, utilisez
apiKeyetserviceIdprovenant de votre instance du service IBM Cloud Object Storage. - Pour les identifiants HMAC, utilisez
accessKeyetsecretKeyprovenant de votre instance du service IBM Cloud Object Storage.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. This same name is used for the PVC in the following steps. namespace: <namespace> # Specify the namespace where you want to create the secret. data: # --- IAM credentials (provide apiKey + serviceId) --- apiKey: <base64-encoded-COS-Service-Instance-apikey> serviceId: <base64-encoded-COS-resource_instance_id> # --- HMAC credentials --- accessKey: <base64-encoded-HMAC-access_key_id> secretKey: <base64-encoded-HMAC-secret_access_key> # --- Optional credential fields (base64-encoded) --- kpRootKeyCRN: <base64-encoded-Key-Protect-root-key-CRN> resourceConfigApiKey: <base64-encoded-apikey> # Required only when quotaLimit is "true". stringData: # --- Optional config fields (plain text) --- cosEndpoint: "https://<cos_s3_service_endpoint>" # Overrides the cosEndpoint from the storage class. locationConstraint: "<region>-standard" # Overrides the locationConstraint from the storage class. iamEndpoint: "<iam-endpoint-url>" # Overrides the default iam endpoint set in COS CSI Driver objectPath: "<subdirectory>" # Optional. Subdirectory within the bucket to mount, for example "data". bucketName: <bucket-name> # Optional. If you don't provide a bucket name, a bucket with the naming convention s3fs-<timestamp>-xxx or rclone-<timestamp>-xxx is created. bucketVersioning: "false" # Set to "true" to enable bucket versioning. Set to "false" to disable versioning. Must be a string value. quotaLimit: "false" # Set to "true" to enforce a hard quota on the bucket equal to the PVC storage size. Requires resourceConfigApiKey. mountOptions: | # uid=3000 # Optional: Run as non-root user. Must match runAsUser in SecurityContext of pod spec. # Review or update the following default s3fs mount options #multipart_size=52 #multireq_max=20 #max_dirty_data=5120 #parallel_count=20 #max_stat_cache_size=100000 #retries=5 #kernel_cache #max_background=1000 # Review or update the following default rclone mount options #acl=private #bucket_acl=private #upload_cutoff=100Mi #chunk_size=16Mi #max_upload_parts=1000 #upload_concurrency=8 #multi_thread_streams=8 #disable_checksum=trueapiKey- Requis pour l'authentification IAM. Saisissez la clé API IAM base64-encoded IBM Cloud correspondant à votre instance du service IBM Cloud Object Storage. Vous trouverez la clé API dans vos identifiants de service sous
apikey. Fournir soitapiKey+serviceId**ou **accessKey+secretKeymais pas les deux. serviceId- Requis pour l'authentification IAM. Saisissez l’ID d’instance de la ressource base64-encoded correspondant à votre instance du service IBM Cloud Object Storage. Vous trouverez cette valeur dans vos identifiants de service, sous
resource_instance_id. accessKey- Requis pour l'authentification HMAC. Saisissez l'ID de clé d'accès HMAC base64-encoded. Vous trouverez cette valeur dans vos identifiants de service, sous
cos_hmac_keys.access_key_id. Fournir soitaccessKey+secretKey**ou **apiKey+serviceIdmais pas les deux. secretKey- Requis pour l'authentification HMAC. Saisissez la clé d’accès secrète HMAC de l’ base64-encoded. Vous trouverez cette valeur dans vos identifiants de service, sous
cos_hmac_keys.secret_access_key. kpRootKeyCRN- Optionnel. Saisissez le CRN de la clé racine base64-encoded de votre instance Key Protect. Pour récupérer le CRN, accédez à votre instance KMS dans la console d' IBM Cloud, ouvrez Clés, cliquez sur la clé racine, puis copiez le CRN à partir des détails de la clé. S'applique uniquement aux nouveaux compartiments; vous ne pouvez pas activer le chiffrement sur un compartiment existant.
iamEndpoint- Optionnel. Saisissez le point de terminaison du jeton IAM d' IBM Cloud, URL, en texte clair. Par défaut, le pilote utilise pour
https://private.iam.cloud.ibm.comles clusters VPC ethttps://iam.cloud.ibm.compour les clusters Classic. Ne modifiez cette valeur que si vous devez utiliser un autre point de terminaison IAM. cosEndpoint- Optionnel. Saisissez le point de terminaison de l' IBM Cloud Object Storage, URL, sous forme de texte brut, par exemple
https://s3.us.cloud-object-storage.appdomain.cloud. Lorsqu'elle est fournie, cette valeur remplace celle définiecosEndpointdans la classe de stockage. Utilisez ce champ si votre compartiment se trouve dans une autre région ou utilise un point de terminaison direct ou privé. Pour obtenir la liste des points de terminaison disponibles, consultez la page Points de terminaison d' IBM Cloud Object Storage. locationConstraint- Optionnel. Saisissez la chaîne de contraintes de localisation sous forme de texte brut, par exemple
us-standardouus-geo-smart. Lorsqu'elle est fournie, cette valeur remplace celle définielocationConstraintdans la classe de stockage. La contrainte de localisation détermine la classe du compartiment et la région dans laquelle celui-ci est stocké. objectPath- Optionnel. Saisissez le chemin d'accès à un sous-répertoire du compartiment à monter en texte brut, par exemple
data. Utilisez cette option pour autoriser une application à accéder uniquement à un dossier spécifique au sein d'un compartiment partagé, plutôt qu'à l'ensemble de la racine du compartiment. resourceConfigApiKey- Obligatoire lorsque
quotaLimitest défini sur"true". Saisissez la même valeurapikeybase64-encoded issue de vos identifiants de connexion au service IBM Cloud Object Storage que celle utilisée pour le champapiKeyci-dessus. bucketName- Optionnel. Saisissez le nom d'un compartiment existant à utiliser ou le nom d'un nouveau compartiment à créer. Si le nom de compartiment que vous indiquez n'existe pas, le pilote le crée. Si vous laissez ce champ vide, un compartiment
est automatiquement créé selon la convention de nommage
s3fs-<timestamp>-xxxourclone-<timestamp>-xxxen fonction du type de montage. Le nom du compartiment doit être unique au niveau mondial dans IBM Cloud Object Storage. bucketVersioning- Optionnel. Gère la gestion des versions des compartiments. Définissez la valeur
"true"pour activer la gestion des versions, ou"false"pour la désactiver sur un compartiment où elle est déjà activée. Doit être une chaîne de caractères. Lorsque la gestion des versions est activée, IBM Cloud Object Storage conserve plusieurs versions de chaque objet du compartiment, ce qui offre une protection contre les suppressions et les écrasements accidentels. Notez que les identifiants de service doivent disposer des autorisations Manager ou Writer pour activer ou désactiver le versionnage des compartiments. Pour plus d'informations, consultez la section Premiers pas avec la gestion des versions. quotaLimit- Optionnel. Définissez la valeur
"true"pour appliquer un quota de stockage strict au compartiment. Lorsqu'elle est activée, la limite de capacité du compartiment est définie à la taillestoragedemandée dans le PVC. Si le quota est atteint, les opérations d'écriture vers le compartiment échouent jusqu'à ce que des données soient supprimées. DoitresourceConfigApiKeyêtre défini. Par défaut :"false". Doit être une chaîne de caractères. mountOptions- Vous pouvez personnaliser les options de montage pour
s3fsourcloneen modifiantmountOptionsdans votre secret. Pour exécuter en tant qu'utilisateur non root, décommentez et définissezuid=<value>afin qu'il corresponde au champrunAsUserdans lesecurityContextde la spécification de votre pod. Alignez les options que vous spécifiez avec la classe de stockage utilisée par votre PVC. Pour consulter les valeurs par défaut d'une classe de stockage, exécutezoc describe storageclass <storageclass_name>ouoc describe storageclass <storageclass_name>. Pour plus d'informations, consultez le s3fs options de montage et lercloneoptions de montage.
Actuellement, le module complémentaire est activé pour prendre en charge un ensemble fixe d'options de montage avec une validation appropriée pour chaque option de montage. Si vous souhaitez utiliser d'autres options de montage qui ne figurent pas dans la liste de validation, contactez le service d'assistance pour activer ces options.
- Pour les identifiants IAM, utilisez
-
Coder tous les paramètres des données secrètes sur base64.
echo -n "<value>" | base64 -
Mettre à jour le site
secret.yamlavec les valeurs encodées de base64. -
Créez le secret.
oc apply -f secret.yaml
Créer un PVC
Vous pouvez utiliser un seul secret pour plusieurs PVC ou un secret par PVC.
Vous pouvez gérer ce comportement en utilisant les annotations suivantes dans le PVC yaml. Ces annotations aident le conducteur à associer le PVC au bon secret.
cos.csi.driver/secret: "<custom-secret>"
Assurez-vous que votre secret, votre PVC et vos pods se trouvent tous dans le même espace de noms.
Exemple PVC pour un 1-to-1 secret to PVC mapping en donnant à votre PVC le même nom que le secret que vous avez créé précédemment.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-secret-1 # Give your PVC the same name as the secret you created in the previous step.
namespace: <namespace> # The namespace where you want to create the PVC.
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: <storage_class_name> # The storage class you want to use.
Exemple de PVC pour l'utilisation d'un secret pour plusieurs PVC en utilisant des annotations pour spécifier le secret.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-csi-pvc1
namespace: <namespace> # The namespace where you want to create the PVC.
annotations:
cos.csi.driver/secret: "<custom-secret>"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: <storage_class_name> # The storage class you want to use.
-
Choisissez l'un des exemples précédents et adaptez-le à votre cas d'utilisation. Pour une liste des classes de stockage, voir la référence des classes de stockage.
-
Créez le PVC (circuit virtuel permanent).
oc apply -f pvc.yaml
Créer un déploiement
-
Enregistrez la configuration suivante dans un fichier nommé
dep.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: <name> labels: app: <name> spec: replicas: 1 selector: matchLabels: app: <name> template: metadata: labels: app: <name> spec: containers: - name: app-frontend image: <image> # Enter your app image. imagePullPolicy: IfNotPresent volumeMounts: - mountPath: <path_you_want_to_mount_the_volume_on> # For example `/dev` name: cos-csi-volume volumes: - name: cos-csi-volume persistentVolumeClaim: claimName: <pvc_name> # Enter the name of the PVC you created earlier. -
Créez le déploiement.
oc apply -f dep.yaml
Désactivation du module complémentaire IBM Cloud Object Storage
Les secrets, les PVC et les déploiements existants ne sont pas supprimés par la désactivation du module complémentaire ou par les mises à jour des correctifs. Il n'y a pas de perturbation des charges de travail existantes des clients.
- Exécutez la commande suivante pour désactiver le module complémentaire.
Exemple de sortieibmcloud oc cluster addon disable ibm-object-csi-driver --cluster CLUSTERData and resources that you created for the add-on might be deleted when the add-on is disabled. Continue? [y/N]> y Disabling add-on ibm-object-csi-driver for cluster XXX... OK - Vérifiez que le module complémentaire a bien été supprimé.
ibmcloud oc cluster addon ls --cluster CLUSTER
Migration du plug-in Helm vers le module complémentaire cluster
-
Obtenez les détails de vos PVC et sélectionnez-en un à migrer.
oc get pvc --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name' | tail -n +2 | while read namespace pvc; do kubectl describe pvc "$pvc" -n "$namespace" | grep 'volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs' > /dev/null ; if [ $? -eq 0 ]; then echo "PVC: $pvc in Namespace: $namespace uses ibm.io/ibmc-s3fs storage provisioner"; fi; doneExemple de sortie
PVC: pvc-test in Namespace: default uses ibm.io/ibmc-s3fs storage provisioner -
Décrire le PVC et obtenir le nom du seau.
oc describe pvc <pvc_name> | grep ibm.io/bucket:Exemple de sortie
ibm.io/bucket: test-s3 -
Recréez votre secret avec le nom du seau inclus.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. namespace: <namespace> # Specify the namespace where you want to create the secret. data: accessKey: <base64-encoded-HMAC-access-key> secretKey: <base64-encoded-HMAC-secret-key> stringData: bucketName: <bucket-name> mountOptions: | # uid=3000 # Optional: Run as non-root user. Must match runAsUser in SecurityContext of pod spec. key1=value1 key2=value2 -
Recherchez la classe de stockage utilisée dans votre PVC.
oc describe pvc <pvc_name> | grep StorageClass:Exemple de commande pour un PVC appelé
test-s3.oc describe pvc test-s3 | grep StorageClass:Exemple de sortie
StorageClass: ibmc-s3fs-smart-perf-regional -
Examinez les nouvelles classes de stockage disponibles avec le module complémentaire et sélectionnez une classe de remplacement.
- Si vous avez utilisé une classe
flex, choisissez l'une des nouvelles classessmart - Si vous avez utilisé une classe
standard, choisissez l'une des nouvelles classesstandard - Les classes
coldetvaultne sont plus disponibles avec le module complémentaire ; choisissez une classesmartoustandardà la place.
- Si vous avez utilisé une classe
-
Examinez les détails de votre PVC.
oc describe pvc test-s3Exemple de sortie
Name: pvc-test Namespace: default StorageClass: ibmc-s3fs-smart-perf-regional Status: Bound Volume: pvc-c625474d-31f0-4929-bc3e-feace1fb42fb Labels: <none> Annotations: ibm.io/auto-create-bucket: true ibm.io/auto-delete-bucket: true ibm.io/bucket: bha-test-s23 ibm.io/secret-name: satstoragesecret pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs Finalizers: [kubernetes.io/pvc-protection] Capacity: 3Gi Access Modes: RWO VolumeMode: Filesystem Used By: test-pod Events: <none> -
Créez un PVC de remplacement qui utilise une nouvelle classe de stockage et fait référence au secret que vous avez créé précédemment.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cos-csi-pvc1 namespace: <namespace> # The namespace where you want to create the PVC. annotations: cos.csi.driver/secret: "cos-secret-1" # Secret created in step 4 spec: accessModes: - ReadWriteOnce resources: requests: storage: 256Mi storageClassName: <storage_class_name> # The storage class you picked based on old storage class mapping. -
Vérifier que le PVC est
Bound.oc get pvc -
Obtenez les détails de votre application.
oc get pods -
Réduisez votre application à zéro.
kubectl scale deployment --replicas=0 my-app -
Créez un déploiement de remplacement qui fait référence au PVC que vous avez créé à l'étape précédente.
-
Une fois la nouvelle répartition en cours d'exécution, vous pouvez supprimer l'ancienne répartition.
-
Répétez ces étapes pour chaque PVC que vous souhaitez migrer.
IBM Cloud Object Storage classes de stockage supplémentaires pour les clusters
Le module complémentaire de cluster IBM Cloud Object Storage fournit des classes de stockage pour les supports s3fs et rclone. Sélectionnez une classe de stockage qui convient à vos exigences en matière d'accès aux
données. La classe de stockage détermine la classe de bac, la politique de récupération et le comportement de montage par défaut du bac créé pour votre charge de travail.
- standard
- À utiliser pour les données chaudes auxquelles on accède fréquemment. Les cas d'utilisation courants sont les applications Web ou mobiles.
- Coffre
- À utiliser pour les charges de travail ou les données cool auxquelles on accède rarement, par exemple une fois par mois ou moins. Les cas d'utilisation courants sont les archives, la conservation à court-terme des données, la conservation de documents numériques, le remplacement d'une bande et la reprise après incident.
- Froid
- À utiliser pour les données froides rarement consultées (tous les 90 jours ou moins) ou les données inactives. Les cas d'utilisation courants sont les archives, les sauvegardes à long terme, les données d'historique que vous conservez à des fins de conformité ou les charges de travail ou les applications auxquelles l'accès est plutôt rare.
- Intelligence
- A utiliser pour les charges de travail et les données qui ne suivent pas un schéma d'utilisation spécifique, ou lorsque le schéma d'utilisation est difficile à prévoir.
Déterminez le niveau de résilience des données stockées dans votre compartiment. Pour plus d'informations, voir Régions et noeuds finaux.
- interrégion
- Vos données sont stockées dans trois régions au sein d'une même zone géographique afin de garantir une disponibilité optimale. Si vous disposez de charges de travail réparties sur plusieurs régions, les demandes sont acheminées vers le noeud
final régional le plus proche. Le point de terminaison IBM Cloud Object Storage pour la géolocalisation est automatiquement défini en fonction de l'emplacement de votre cluster. Par exemple, si votre cluster se trouve dans
US South, vos classes de stockage sont alors configurées pour utiliser le pointUS GEOde terminaison de vos compartiments. Choisissez une classe de stockage dont le nom contientcross-region. - Régional
- Vos données sont répliquées dans plusieurs zones au sein d'une même région. Si vous disposez de charges de travail situées dans la même région, vous observez des temps d'attente plus faibles et de meilleures performances qu'avec une configuration
inter-régionale. Le point de terminaison régional est défini automatiquement en fonction de l'emplacement de votre cluster. Par exemple, si votre cluster se trouve dans
US South, vos classes de stockage sont alors configurées pour utiliserUS Southcomme point de terminaison régional pour vos compartiments. Choisissez une classe de stockage dont le nom necross-regioncontient pas « ».
| Nom | Classe de compartiment | Résilience | Monteur | Stratégie de récupération | Mode de liaison |
|---|---|---|---|---|---|
| ibm-stockage-objet-smart-inter-régional-rclone | Intelligence | Interrégional | rclone |
Supprimer | Immédiate |
| ibm-stockage-objet-smart-inter-régions-rclone-conservation | Intelligence | Interrégional | rclone |
Conserver | Immédiate |
| ibm-object-storage-smart-cross-region-s3fs | Intelligence | Interrégional | s3fs |
Supprimer | Immédiate |
| ibm-object-storage-smart-cross-region-s3fs-retain | Intelligence | Interrégional | s3fs |
Conserver | Immédiate |
| ibm-stockage-objet-smart-rclone | Intelligence | Régional | rclone |
Supprimer | Immédiate |
| ibm-stockage-objet-smart-rclone-conservation | Intelligence | Régional | rclone |
Conserver | Immédiate |
| ibm-object-storage-smart-s3fs | Intelligence | Régional | s3fs |
Supprimer | Immédiate |
| ibm-object-storage-smart-s3fs-retain | Intelligence | Régional | s3fs |
Conserver | Immédiate |
| ibm-stockage-objet-standard-inter-régions-rclone | standard | Interrégional | rclone |
Supprimer | Immédiate |
| ibm-stockage-objet-standard-inter-régions-rclone-conservation | standard | Interrégional | rclone |
Conserver | Immédiate |
| ibm-object-storage-standard-cross-region-s3fs | standard | Interrégional | s3fs |
Supprimer | Immédiate |
| ibm-object-storage-standard-cross-region-s3fs-retain | standard | Interrégional | s3fs |
Conserver | Immédiate |
| ibm-objet-stockage-standard-rclone | standard | Régional | rclone |
Supprimer | Immédiate |
| ibm-stockage-objet-standard-rclone-conservation | standard | Régional | rclone |
Conserver | Immédiate |
| ibm-object-storage-standard-s3fs | standard | Régional | s3fs |
Supprimer | Immédiate |
| ibm-object-storage-standard-s3fs-retain | standard | Régional | s3fs |
Conserver | Immédiate |
Pour examiner la configuration détaillée des seaux d'une classe de stockage, exécutez oc describe storageclass <storageclass_name> ou oc describe storageclass <storageclass_name>.
Paramètres de classe de stockage
Toutes les classes de stockage complémentaires pour clusters comprennent les paramètres de base suivants.
| Paramètre | Description |
|---|---|
client |
Identifie le type de client utilisé par le pilote. Les classes de stockage supplémentaires utilisent awss3. |
cosEndpoint |
Définit le point d'arrivée IBM Cloud Object Storage pour la région du seau. |
csi.storage.k8s.io/node-publish-secret-name |
Fait référence au nom du secret qui contient vos informations d'identification IBM Cloud Object Storage. |
csi.storage.k8s.io/node-publish-secret-namespace |
Fait référence à l'espace de noms du secret qui contient vos informations d'identification IBM Cloud Object Storage. |
locationConstraint |
Définit la classe et la région du seau, par exemple au-syd-smart ou au-syd-standard. |
mounter |
Indique si la classe de stockage utilise le monteur s3fs ou rclone. |
Options de montage par défaut de la classe de stockage s3fs
Les classes de stockage s3fs utilisent les options de montage par défaut suivantes.
| Option de montage | Description |
|---|---|
multipart_size=52 |
Définit la taille de la partie, en Mo, pour chaque demande multipartite. |
multireq_max=20 |
Définit le nombre maximal de requêtes parallèles pour l'établissement de listes d'objets. |
max_dirty_data=5120 |
Vide les données sales sur S3 après l'écriture d'un nombre spécifié de Mo. La valeur minimale supportée est 50. Une valeur de -1 désactive ce comportement. |
parallel_count=20 |
Définit le nombre de requêtes parallèles pour le téléchargement d'objets volumineux. s3fs télécharge des objets volumineux en utilisant des requêtes multipartites et envoie des requêtes en parallèle. |
max_stat_cache_size=100000 |
Définit le nombre maximal d'entrées dans le cache de statuts et le cache de liens symboliques. |
retries=5 |
Définit le nombre de tentatives d'échec d'une transaction S3. |
kernel_cache |
Active le cache tampon du noyau pour le point de montage du volume. Les données lues sur le site IBM Cloud Object Storage sont stockées dans le cache du noyau afin d'accélérer l'accès à la lecture. Le cache du noyau est activé pour les
classes de stockage standard et smart s3fs. |
max_background=1000 |
Définit le nombre maximal de requêtes FUSE en arrière-plan pouvant être mises en file d'attente avant que le noyau ne bloque les nouvelles requêtes. L'augmentation de cette valeur améliore le débit pour les charges de travail présentant un niveau élevé de concurrence. |
Options de montage par défaut de la classe de stockage rclone
Les classes de stockage rclone utilisent les options de montage par défaut suivantes.
| Option de montage | Description |
|---|---|
acl=private |
Veille à ce que les objets téléchargés ne soient pas accessibles au public. |
bucket_acl=private |
Définit l'ACL par défaut pour les buckets créés par rclone à private. |
upload_cutoff=100Mi |
Chargement de fichiers plus grands que 100 MiB en utilisant le téléchargement en plusieurs parties. Les petits fichiers sont téléchargés en une seule fois. |
chunk_size=16Mi |
Définit la taille de chaque partie dans un téléchargement en plusieurs parties. |
max_upload_parts=1000 |
Définit le nombre maximal de pièces par téléchargement multipartite et plafonne indirectement la taille maximale du fichier pris en charge avec la valeur configurée chunk_size. Avec chunk_size=16Mi, la taille
maximale du fichier est de 16 GiB. |
upload_concurrency=8 |
Définit le nombre de pièces qui sont téléchargées en parallèle lors d'un téléchargement multipartite. |
multi_thread_streams=8 |
Définit le nombre de threads utilisés pour télécharger un seul objet lors d'un téléchargement multithread. |
disable_checksum=true |
Désactive le calcul de la somme de contrôle MD5 lors du téléchargement. Améliore les performances pour les fichiers volumineux, pour lesquels le calcul de la somme de contrôle entraîne une surcharge importante. |