Installazione del componente aggiuntivo del cluster IBM Cloud Object Storage
È possibile abilitare il componente aggiuntivo " IBM Cloud Object Storage " dalla console IBM Cloud o tramite la CLI.
Prerequisiti
- Il componente aggiuntivo IBM Cloud Object Storage richiede almeno 0.3 vCPU e 360 MB di memoria.
- Il componente aggiuntivo è disponibile per i nodi worker Red Hat CoreOS (RHCOS) e Ubuntu. Se il cluster ha sia nodi RHEL che RHCOS, il componente aggiuntivo viene distribuito solo sui nodi RHCOS.
- Impostare un' istanza di IBM Cloud Object Storage.
- Opzionale Se si intende usare il versioning del bucket, le credenziali del servizio devono avere le autorizzazioni di Manager o Writer per abilitare o disabilitare il versioning del bucket sul bucket. Per ulteriori informazioni, consultare il sito Introduzione al controllo delle versioni.
Comprendere la creazione e la rimozione dei bucket
- È possibile utilizzare un bucket esistente specificando il nome del bucket nel PVC.
- Se si fornisce il nome di un bucket e questo non esiste, viene creato un bucket con quel nome.
- Se non si specifica il nome di un bucket, verrà creato un bucket con la convenzione di denominazione
s3fs-<timestamp>-xxxorclone-<timestamp>-xxx, a seconda del tipo di mounter. - I bucket vengono eliminati in base ai criteri di recupero definiti nella classe di archiviazione.
- Se è impostato
reclaimPolicy: Delete, il bucket viene eliminato quando il PVC viene cancellato. - Se viene impostato
reclaimPolicy: Retain, il bucket viene mantenuto anche dopo la cancellazione del PVC.
- Se è impostato
Attivazione del componente aggiuntivo “ IBM Cloud Object Storage ” dalla console
- Dalla dashboard dei cluster di Red Hat OpenShift on IBM Cloud, seleziona il cluster in cui desideri abilitare il componente aggiuntivo.
- Nella sezione " Componenti aggiuntivi ", individua il Cloud Object Storage componente aggiuntivo e fare clic su Installa.
- Nel pannello "Installa componente aggiuntivo": Cloud Object Storage, selezionare una versione dal menu a tendina " Versione".
- Facoltativo: configurare i seguenti parametri.
maxVolumesPerNode- Imposta il numero massimo di volumi " IBM Cloud Object Storage " che possono essere montati su un singolo nodo. Il valore predefinito è
0, il che significa che non viene applicato alcun limite. restrictNodeServerScheduling- Impostare il valore su
trueper limitare l'esecuzione dei pod del nodeserver esclusivamente sui nodi contrassegnati con l'etichettacos.csi.ibm.io/csi-node=true. Il valore predefinito è ` `false, il che significa che i podnodeservervengono pianificati su tutti i nodi.
- Fai clic su Install. Potrebbero essere necessari diversi minuti prima che il componente aggiuntivo sia distribuito e pronto per l'utilizzo.
- Verificare l'installazione. Nella sezione " Componenti aggiuntivi ", verifica che il Cloud Object Storage componente aggiuntivo presenti uno stato di integrità " Normale ".
Abilitazione del componente aggiuntivo IBM Cloud Object Storage dalla CLI
Prima di iniziare: accedi al tuo cluster Red Hat OpenShift.
- Aggiorna il plug-in "
container-service" alla versione più recente.ibmcloud update && ibmcloud plugin update container-service - Elencare i componenti aggiuntivi e trovare la versione che si desidera installare.
ibmcloud oc cluster addon versions - Esaminare le opzioni aggiuntive.
ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION] - Installare il componente aggiuntivo.
ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION] - Verificare l'installazione.
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) - Elenca le classi di archiviazione disponibili. Il driver supporta sia le classi di archiviazione regionali che quelle interregionali per i programmi di montaggio
s3fserclone.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
Limitazione della pianificazione dei pod del nodeserver
Per impostazione predefinita, i pod del driver COS CSI nodeserver vengono pianificati su tutti i nodi del cluster. È possibile utilizzare il parametro restrictNodeServerScheduling per limitare la pianificazione dei
pod del nodeserver esclusivamente ai nodi contrassegnati con l'etichetta cos.csi.ibm.io/csi-node=true``.
È possibile configurare l' restrictNodeServerScheduling e al momento dell'attivazione del componente aggiuntivo oppure aggiornarla in un secondo momento applicando una patch all' ConfigMap.
- Per impostare
restrictNodeServerSchedulingall'attivazione del componente aggiuntivo, includere il flag--paramnel comando di abilitazione.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "restrictNodeServerScheduling=true" - Per aggiornare
restrictNodeServerSchedulingdopo che l'estensione è già stata abilitata, segui questi passaggi.
- Elenca i nodi del tuo cluster e stabilisci dove desideri che vengano eseguiti i pod del driver COS.
Output di esempiooc 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 - Verificare che i pod di nodeserver siano attualmente in esecuzione su tutti i nodi.
Output di esempiooc 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> - Contrassegna i nodi su cui desideri che vengano pianificati i pod di nodeserver.
Output di esempiooc 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 - Per attivare la restrizione, aggiorna il file
ConfigMap.Output di esempiooc 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 - Verificare che i pod dei nodi server vengano pianificati esclusivamente su nodi contrassegnati.
Output di esempiooc 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>
| Impostazione | Modalità di funzionamento |
|---|---|
restrictNodeServerScheduling: "false" (predefinito) |
I pod di Nodeserver vengono pianificati su tutti i nodi. |
restrictNodeServerScheduling: "true" |
I pod dei server di nodo vengono pianificati solo sui nodi contrassegnati con l'etichetta " cos.csi.ibm.io/csi-node=true". |
Impostazione dei volumi massimi per nodo
Per impostazione predefinita, il driver COS CSI non limita il numero di volumi che possono essere montati su un singolo nodo. È possibile utilizzare il parametro maxVolumesPerNode per impostare il numero massimo di
volumi per nodo.
È possibile configurare l' maxVolumesPerNode e al momento dell'attivazione del componente aggiuntivo oppure aggiornarla in un secondo momento applicando una patch all' ConfigMap.
- Per impostare
maxVolumesPerNodeall'attivazione del componente aggiuntivo, includere il flag--paramnel comando di abilitazione.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "maxVolumesPerNode=VALUE" - Per aggiornare
maxVolumesPerNodedopo che l'add-on è già stato abilitato, applicare la patch all'add-on gestito ConfigMap.Output di esempiooc 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
| Impostazione | Modalità di funzionamento |
|---|---|
maxVolumesPerNode: "0" (predefinito) |
Non vi è alcun limite al numero di volumi che possono essere montati per ogni nodo. |
maxVolumesPerNode: "VALUE" |
Limita il numero di volumi che possono essere montati su un singolo nodo al valore specificato. |
Distribuzione di un'applicazione che utilizza IBM Cloud Object Storage
Creare un segreto Kubernetes che contenga le credenziali COS.
-
Salvate la seguente configurazione in un file chiamato
secret.yaml. Fornire le credenziali IAM oppure quelle HMAC, ma non entrambe.- Per le credenziali IAM, utilizzare
apiKeyeserviceIddall’istanza del servizio IBM Cloud Object Storage. - Per le credenziali HMAC, utilizzare
accessKeyesecretKeydalla propria istanza del servizio 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- Necessario per l'autenticazione IAM. Inserisci la chiave API IAM di base64-encoded IBM Cloud relativa alla tua istanza del servizio IBM Cloud Object Storage. Puoi trovare la chiave API nelle credenziali del servizio alla pagina
apikey. Indicare una delle seguenti opzioni:apiKey+serviceIdoppureaccessKey+secretKey, ma non entrambe. serviceId- Necessario per l'autenticazione IAM. Inserisci l'ID dell'istanza della risorsa " base64-encoded " relativa alla tua istanza del servizio " IBM Cloud Object Storage ". Puoi trovare questo valore nelle tue credenziali
di servizio alla pagina
resource_instance_id. accessKey- Necessario per l'autenticazione HMAC. Inserisci l'ID della chiave di accesso HMAC " base64-encoded ". Puoi trovare questo valore nelle tue credenziali di servizio alla pagina
cos_hmac_keys.access_key_id. Indicare una delle seguenti opzioni:accessKey+secretKeyoppureapiKey+serviceId, ma non entrambe. secretKey- Necessario per l'autenticazione HMAC. Inserisci la chiave di accesso segreta HMAC dell’ base64-encoded. Puoi trovare questo valore nelle tue credenziali di servizio alla pagina
cos_hmac_keys.secret_access_key. kpRootKeyCRN- Facoltativo. Inserisci il CRN della chiave root " base64-encoded " della tua istanza di Key Protect. Per recuperare il CRN, accedi alla tua istanza KMS nella console di IBM Cloud, apri la sezione "Chiavi", fai clic sulla chiave radice e copia il CRN dai dettagli della chiave. Si applica solo ai nuovi bucket; non è possibile aggiungere la crittografia a un bucket esistente.
iamEndpoint- Facoltativo. Inserisci l'endpoint del token IAM di IBM Cloud URL come testo in chiaro. Per impostazione predefinita, il driver utilizza
https://private.iam.cloud.ibm.comper i cluster VPC ehttps://iam.cloud.ibm.comper i cluster Classic. Modifica questo valore solo se devi utilizzare un endpoint IAM diverso. cosEndpoint- Facoltativo. Inserisci l'endpoint IBM Cloud Object Storage URL come testo in chiaro, ad esempio
https://s3.us.cloud-object-storage.appdomain.cloud. Se specificato, questo valore ha la precedenza sull'cosEndpointe impostato nella classe di archiviazione. Utilizza questo campo se il tuo bucket si trova in una regione diversa o utilizza un endpoint diretto o privato. Per un elenco degli endpoint disponibili, consultare la pagina " IBM Cloud Object Storage endpoints ". locationConstraint- Facoltativo. Inserisci la stringa di vincolo di posizione come testo semplice, ad esempio
us-standardous-geo-smart. Se specificato, questo valore ha la precedenza sull’locationConstrainte impostato nella classe di archiviazione. Il vincolo di ubicazione determina la classe del bucket e la regione in cui è archiviato il bucket. objectPath- Facoltativo. Inserisci il percorso di una sottodirectory all'interno del bucket da montare come testo semplice, ad esempio
data. Utilizza questa opzione per consentire a un'app di accedere solo a una cartella specifica all'interno di un bucket condiviso, anziché all'intera radice del bucket. resourceConfigApiKey- Obbligatorio quando l'opzione "
quotaLimit" è impostata su ""true"". Inserisci lo stesso valore " base64-encoded " (apikey) presente nelle credenziali del servizio IBM Cloud Object Storage che hai utilizzato per il campo "apiKey" sopra indicato. bucketName- Facoltativo. Inserisci il nome di un bucket esistente da utilizzare oppure il nome di un nuovo bucket da creare. Se il nome del bucket specificato non esiste, il driver lo crea. Se si lascia questo campo vuoto, viene creato automaticamente
un bucket con la convenzione di denominazione
s3fs-<timestamp>-xxxorclone-<timestamp>-xxx, a seconda del tipo di mounter. Il nome del bucket deve essere univoco a livello globale su IBM Cloud Object Storage. bucketVersioning- Facoltativo. Gestisce il controllo delle versioni delle bucket. Impostare il valore su
"true"per abilitare il versioning, oppure su"false"per disabilitarlo su un bucket in cui il versioning è già abilitato. Deve essere un valore di tipo stringa. Quando la gestione delle versioni è abilitata, IBM Cloud Object Storage conserva più versioni di ogni oggetto presente nel bucket, proteggendolo da cancellazioni e sovrascritture accidentali. Si noti che le credenziali del servizio devono disporre dei permessi di tipo “Manager” o “Writer” per poter abilitare o disabilitare il controllo delle versioni del bucket. Per ulteriori informazioni, consultare il sito Introduzione al controllo delle versioni. quotaLimit- Facoltativo. Impostare il valore su
"true"per applicare una quota di spazio di archiviazione rigida al bucket. Se abilitata, la quota del bucket viene impostata in modo da corrispondere alla dimensione “storage” richiesta nel PVC. Se la quota viene raggiunta, le operazioni di scrittura nel bucket non vanno a buon fine finché non vengono eliminati dei dati. È necessario che sia impostata la variabileresourceConfigApiKey. Il valore predefinito è"false". Deve essere un valore di tipo stringa. mountOptions- È possibile personalizzare le opzioni di montaggio per
s3fsorclonemodificandomountOptionsnel proprio segreto. Per eseguire il processo come utente non root, rimuovi il commento e impostauid=in modo che corrisponda al camporunAsUsernel filesecurityContextdella specifica del tuo pod. Allineare le opzioni specificate con la classe di archiviazione utilizzata dal PVC. Per visualizzare i valori predefiniti di una classe di archiviazione, eseguire il comandooc describe storageclass <storageclass_name>oppureoc describe storageclass <storageclass_name>. Per ulteriori informazioni, consultare il sito s3fs opzioni di montaggio e il sitorcloneopzioni di montaggio.
Attualmente, il componente aggiuntivo è abilitato a supportare un insieme fisso di opzioni di montaggio con una corretta convalida per ogni opzione di montaggio. Se si desidera utilizzare altre opzioni di montaggio non presenti nell'elenco di convalida, contattare l'assistenza per abilitarle.
- Per le credenziali IAM, utilizzare
-
Codificare tutti i parametri dei dati segreti in base64.
echo -n "<value>" | base64 -
Aggiornare
secret.yamlcon i valori codificati in base64. -
Crea il segreto.
oc apply -f secret.yaml
Creare un PVC
È possibile utilizzare un unico segreto per più PVC o un segreto per PVC.
È possibile gestire questo comportamento utilizzando le seguenti annotazioni nel PVC yaml. Queste annotazioni aiutano il driver a mappare il PVC sul segreto corretto.
cos.csi.driver/secret: "<custom-secret>"
Assicurati che "secret", "PVC" e "pod" si trovino tutti nello stesso namespace
Esempio di PVC per una mappatura da segreto a PVC 1-to-1 assegnando al PVC lo stesso nome del segreto creato in precedenza.
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.
Esempio di PVC per l'utilizzo di 1 segreto per molti PVC utilizzando le annotazioni per specificare il segreto.
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.
-
Scegliete uno degli esempi precedenti e personalizzatelo per il vostro caso d'uso. Per un elenco delle classi di archiviazione, vedere il riferimento alle classi di archiviazione.
-
Crea la PVC.
oc apply -f pvc.yaml
Crea una distribuzione
-
Salvate la seguente configurazione in un file chiamato
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. -
Crea la distribuzione.
oc apply -f dep.yaml
Disabilitazione del componente aggiuntivo IBM Cloud Object Storage
I segreti, i PVC e le distribuzioni esistenti non vengono cancellati dalla disattivazione del componente aggiuntivo o dagli aggiornamenti della patch. Non ci sono interruzioni nei carichi di lavoro esistenti dei clienti.
- Eseguire il seguente comando per disattivare il componente aggiuntivo.
Output di esempioibmcloud 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 - Verificare che il componente aggiuntivo sia stato rimosso.
ibmcloud oc cluster addon ls --cluster CLUSTER
Migrazione dal plug-in Helm al componente aggiuntivo per cluster
-
Ottenete i dettagli dei vostri PVC e selezionatene uno da migrare.
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; doneOutput di esempio
PVC: pvc-test in Namespace: default uses ibm.io/ibmc-s3fs storage provisioner -
Descrivere il PVC e ottenere il nome del secchio.
oc describe pvc <pvc_name> | grep ibm.io/bucket:Output di esempio
ibm.io/bucket: test-s3 -
Ricreate il vostro segreto con il nome del secchio incluso.
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 -
Trovare la classe di archiviazione utilizzata nel PVC.
oc describe pvc <pvc_name> | grep StorageClass:Esempio di comando per un PVC chiamato
test-s3.oc describe pvc test-s3 | grep StorageClass:Output di esempio
StorageClass: ibmc-s3fs-smart-perf-regional -
Esaminare le nuove classi di archiviazione disponibili con il componente aggiuntivo e selezionare una classe sostitutiva.
- Se si è utilizzata una classe
flex, scegliere una delle nuove classismart. - Se avete usato una classe
standard, scegliete una delle nuove classistandard. - Le classi
coldevaultnon sono più disponibili con il componente aggiuntivo; scegliete invece una classesmartostandard.
- Se si è utilizzata una classe
-
Esaminate i dettagli del vostro PVC.
oc describe pvc test-s3Output di esempio
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> -
Creare un PVC sostitutivo che utilizzi una nuova classe di archiviazione e faccia riferimento al segreto creato in precedenza.
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. -
Verificare che il PVC sia
Bound.oc get pvc -
Scopri i dettagli della tua app.
oc get pods -
Riducete la vostra applicazione a zero.
kubectl scale deployment --replicas=0 my-app -
Creare un'installazione sostitutiva che faccia riferimento al PVC creato nel passaggio precedente.
-
Dopo che la nuova installazione client è in esecuzione, è possibile eliminare la vecchia installazione client.
-
Ripeti questi passaggi per ogni PVC che desideri migrare.
IBM Cloud Object Storage classi di archiviazione aggiuntive al cluster
Il componente aggiuntivo per cluster IBM Cloud Object Storage fornisce classi di archiviazione per i montaggi s3fs e rclone. Scegli una classe di archiviazione adatta ai tuoi requisiti di accesso ai dati. La classe
di archiviazione determina la classe del bucket, il criterio di recupero e il comportamento di montaggio predefinito per il bucket creato per il carico di lavoro.
- Standard
- Da utilizzare per i dati più importanti a cui si accede frequentemente. I casi d'uso comuni sono le applicazioni web o mobili.
- Vault
- Da utilizzare per carichi di lavoro o dati inattivi a cui si accede raramente, ad esempio una volta al mese o meno. I casi d'uso comuni sono gli archivi, la conservazione dei dati a breve termine, la conservazione di asset digitali, la sostituzione dei nastri e il ripristino d'emergenza.
- Cold
- Da utilizzare per i dati “freddi”, a cui si accede raramente (ogni 90 giorni o meno), o per i dati inattivi. I casi d'uso comuni sono gli archivi, i backup a lungo termine, i dati cronologici che conservi per la conformità oppure i carichi di lavoro e le applicazioni a cui si accede raramente.
- Intelligenza
- Da utilizzare per carichi di lavoro e dati che non seguono un modello di utilizzo specifico o quando il modello di utilizzo è difficile da prevedere.
Decidi il livello di resilienza per i dati archiviati nel tuo bucket. Per ulteriori informazioni, vedi Regioni ed endpoint.
- Interregionale
- I tuoi dati vengono archiviati in tre regioni all'interno di una stessa area geografica per garantire la massima disponibilità. Se hai dei carichi di lavoro distribuiti tra le regioni, le richieste vengono instradate all'endpoint regionale
più vicino. L'endpoint IBM Cloud Object Storage per la geolocalizzazione viene impostato automaticamente in base alla posizione in cui si trova il cluster. Ad esempio, se il cluster si trova all'indirizzo
US South, le classi di archiviazione sono configurate per utilizzare l'endpointUS GEOper i bucket. Scegli una classe di archiviazione che contenga la dicitura “cross-region” nel nome. - Regionale
- I tuoi dati vengono replicati in più zone all’interno di una stessa regione. Se hai dei carichi di lavoro che si trovano nella stessa regione, vedi una latenza più bassa e delle prestazioni migliori rispetto a una configurazione interregionale.
L'endpoint regionale viene impostato automaticamente in base alla posizione in cui si trova il cluster. Ad esempio, se il cluster si trova in
US South, le classi di archiviazione sono configurate per utilizzareUS Southcome endpoint regionale per i bucket. Scegli una classe di archiviazione che non contenga la dicitura “cross-region” nel nome.
| Nome | Classe Secchiello | Resilienza | Montatore | Politica di riacquisizione | Modalità di binding |
|---|---|---|---|---|---|
| ibm-object-storage-smart-cross-region-rclone | Intelligenza | Interregionale | rclone |
Elimina | Immediato |
| ibm-object-storage-smart-cross-region-rclone-retain | Intelligenza | Interregionale | rclone |
Conserva | Immediato |
| ibm-object-storage-smart-cross-region-s3fs | Intelligenza | Interregionale | s3fs |
Elimina | Immediato |
| ibm-object-storage-smart-cross-region-s3fs-retain | Intelligenza | Interregionale | s3fs |
Conserva | Immediato |
| ibm-object-storage-smart-rclone | Intelligenza | Regionale | rclone |
Elimina | Immediato |
| ibm-object-storage-smart-rclone-retain | Intelligenza | Regionale | rclone |
Conserva | Immediato |
| ibm-object-storage-smart-s3fs | Intelligenza | Regionale | s3fs |
Elimina | Immediato |
| ibm-object-storage-smart-s3fs-retain | Intelligenza | Regionale | s3fs |
Conserva | Immediato |
| ibm-object-storage-standard-interregionale-rclone | Standard | Interregionale | rclone |
Elimina | Immediato |
| ibm-object-storage-standard-interregionale-rclone-retain | Standard | Interregionale | rclone |
Conserva | Immediato |
| ibm-object-storage-standard-cross-region-s3fs | Standard | Interregionale | s3fs |
Elimina | Immediato |
| ibm-object-storage-standard-cross-region-s3fs-retain | Standard | Interregionale | s3fs |
Conserva | Immediato |
| ibm-object-storage-standard-rclone | Standard | Regionale | rclone |
Elimina | Immediato |
| ibm-object-storage-standard-rclone-retain | Standard | Regionale | rclone |
Conserva | Immediato |
| ibm-object-storage-standard-s3fs | Standard | Regionale | s3fs |
Elimina | Immediato |
| ibm-object-storage-standard-s3fs-retain | Standard | Regionale | s3fs |
Conserva | Immediato |
Per esaminare la configurazione dettagliata dei bucket per una classe di archiviazione, eseguire oc describe storageclass <storageclass_name> o oc describe storageclass <storageclass_name>.
Parametri classe di storage
Tutte le classi di archiviazione aggiuntive al cluster includono i seguenti parametri fondamentali.
| Parametro | Descrizione |
|---|---|
client |
Identifica il tipo di client utilizzato dal driver. Le classi di archiviazione aggiuntive utilizzano awss3. |
cosEndpoint |
Definisce l'endpoint IBM Cloud Object Storage per la regione del bucket. |
csi.storage.k8s.io/node-publish-secret-name |
Fa riferimento al nome del segreto che contiene le credenziali di IBM Cloud Object Storage. |
csi.storage.k8s.io/node-publish-secret-namespace |
Fa riferimento allo spazio dei nomi del segreto che contiene le credenziali di IBM Cloud Object Storage. |
locationConstraint |
Definisce la classe e la regione del secchio, ad esempio au-syd-smart o au-syd-standard. |
mounter |
Specifica se la classe di archiviazione utilizza il mounter s3fs o rclone. |
Opzioni di montaggio predefinite della classe di archiviazione s3fs
Le classi di archiviazione di s3fs utilizzano le seguenti opzioni di montaggio predefinite.
| Opzione di montaggio | Descrizione |
|---|---|
multipart_size=52 |
Imposta la dimensione della parte, in MB, per ogni richiesta multipart. |
multireq_max=20 |
Imposta il numero massimo di richieste parallele per gli oggetti dell'elenco. |
max_dirty_data=5120 |
Esegue il flussaggio dei dati sporchi su S3 dopo un numero specificato di MB scritti. Il valore minimo supportato è 50. Un valore di -1 disabilita questo comportamento. |
parallel_count=20 |
Imposta il numero di richieste parallele per il caricamento di oggetti di grandi dimensioni. s3fs carica oggetti di grandi dimensioni utilizzando richieste multipart e invia le richieste in parallelo. |
max_stat_cache_size=100000 |
Imposta il numero massimo di voci nella cache delle statistiche e nella cache dei collegamenti simbolici. |
retries=5 |
Imposta il numero di volte in cui riprovare una transazione S3 fallita. |
kernel_cache |
Abilita la cache del buffer del kernel per il punto di montaggio del volume. I dati letti da IBM Cloud Object Storage vengono memorizzati nella cache del kernel per garantire un accesso più rapido alla lettura. La cache del kernel è
abilitata per le classi di archiviazione standard e smart s3fs. |
max_background=1000 |
Imposta il numero massimo di richieste FUSE in background che possono essere messe in coda prima che il kernel blocchi le nuove richieste. Aumentando questo valore si migliora la produttività per i carichi di lavoro con un elevato livello di concorrenza. |
Opzioni di montaggio predefinite della classe di archiviazione rclone
Le classi di archiviazione di rclone utilizzano le seguenti opzioni di montaggio predefinite.
| Opzione di montaggio | Descrizione |
|---|---|
acl=private |
Assicura che gli oggetti caricati non siano accessibili pubblicamente. |
bucket_acl=private |
Imposta l'ACL predefinita per i bucket creati da rclone a private. |
upload_cutoff=100Mi |
Carica file di dimensioni superiori a 100 MiB utilizzando il caricamento multipart. I file più piccoli vengono caricati in un'unica richiesta. |
chunk_size=16Mi |
Imposta la dimensione di ciascuna parte in un caricamento multipart. |
max_upload_parts=1000 |
Imposta il numero massimo di parti per il caricamento multipart e, indirettamente, limita la dimensione massima del file supportata con il sito chunk_size. Con chunk_size=16Mi, la dimensione massima del file
è 16 GiB. |
upload_concurrency=8 |
Imposta il numero di parti caricate in parallelo durante un caricamento multipart. |
multi_thread_streams=8 |
Imposta il numero di thread utilizzati per scaricare un singolo oggetto quando si utilizza il download multithread. |
disable_checksum=true |
Disattiva il calcolo del checksum “ MD5 ” durante il caricamento. Migliora le prestazioni con file di grandi dimensioni, nei quali il calcolo del checksum comporta un sovraccarico significativo. |