Instalación del complemento de clúster IBM Cloud Object Storage
Puedes activar el complemento « IBM Cloud Object Storage » desde la consola de IBM Cloud o desde la CLI.
Requisitos previos:
- El complemento IBM Cloud Object Storage requiere al menos 0.3 vCPU y 360 MB de memoria.
- El complemento está disponible para Red Hat CoreOS (RHCOS) y Ubuntu worker nodes. Si su clúster tiene nodos RHEL y RHCOS, el complemento se implementa sólo en los nodos RHCOS.
- Configure una instancia de IBM Cloud Object Storage.
- Opcional Si planea utilizar el versionado de cubos, sus credenciales de servicio deben tener permisos de Administrador o Escritor para activar o desactivar el versionado de cubos en el cubo. Para obtener más información, consulta Introducción al control de versiones.
Comprender la creación y eliminación de cubos
- Puede utilizar un cubo existente especificando el nombre del cubo en su PVC.
- Si proporciona un nombre de cubo y ese cubo no existe, se creará un cubo con ese nombre.
- Si no se especifica un nombre de bucket,
rclone-<timestamp>-xxxse creará un bucket con la convención de nomenclaturas3fs-<timestamp>-xxxo, en función del tipo de montador. - Los cubos se eliminan en función de la política de recuperación definida en la clase de almacenamiento.
- Si se establece
reclaimPolicy: Delete, el cubo se elimina cuando se elimina el PVC. - Si se establece
reclaimPolicy: Retain, el bucket se conserva incluso después de eliminar el PVC.
- Si se establece
Activación del complemento IBM Cloud Object Storage desde la consola
- En el panel de control de clústeres de Red Hat OpenShift on IBM Cloud, selecciona el clúster en el que deseas activar el complemento.
- En la sección «Complementos», busca el Cloud Object Storage complemento y haz clic en « Instalar ».
- En el panel « Instalar complemento: Cloud Object Storage », selecciona una versión en el menú desplegable « Versión ».
- Opcional: Configura los siguientes parámetros.
maxVolumesPerNode- Establece el número máximo de volúmenes de « IBM Cloud Object Storage » que se pueden montar en un único nodo. El valor por defecto es «
0», lo que significa que no se aplica ningún límite. restrictNodeServerScheduling- Establece el valor en «
true» para restringir que los pods de nodeserver se ejecuten únicamente en nodos etiquetados como «cos.csi.ibm.io/csi-node=true». El valor por defecto es «false», lo que significa que los pods de nodeserver se programan en todos los nodos.
- Pulse Instalar. El complemento puede tardar algunos minutos en desplegarse y estar listo para su uso.
- Verifique la instalación. En la sección «Complementos», comprueba que el Cloud Object Storage complemento muestra un estado de salud « Normal ».
Activación del complemento IBM Cloud Object Storage desde la CLI
Antes de empezar: acceda al clúster de Red Hat OpenShift.
- Actualiza el complemento
container-servicea la versión más reciente.ibmcloud update && ibmcloud plugin update container-service - Enumera los complementos y busca la versión que deseas instalar.
ibmcloud oc cluster addon versions - Revise las opciones del complemento.
ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION] - Instala el complemento.
ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION] - Verifique la instalación.
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) - Enumera las clases de almacenamiento disponibles. El controlador es compatible con clases de almacenamiento tanto regionales como interregionales para los montadores
s3fsyrclone.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
Restricción de la programación de pods de nodoserver
De forma predeterminada, los pods del servidor de nodos del controlador COS CSI se programan en todos los nodos del clúster. Puedes utilizar el parámetro « restrictNodeServerScheduling » para restringir la programación de los pods
de nodeserver únicamente a los nodos etiquetados con « cos.csi.ibm.io/csi-node=true ».
Puedes configurar « restrictNodeServerScheduling » al habilitar el complemento, o actualizarlo más adelante aplicando el parche « ConfigMap ».
- Para establecer «
restrictNodeServerScheduling» al habilitar el complemento, incluye el indicador «--param» en el comando de habilitación.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "restrictNodeServerScheduling=true" - Para actualizar «
restrictNodeServerScheduling» una vez que el complemento ya esté activado, sigue estos pasos.
- Enumera los nodos de tu clúster y determina dónde quieres que se ejecuten los pods del controlador COS.
Salida de ejemplooc 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 - Comprueba que los pods de nodeserver estén actualmente en ejecución en todos los nodos.
Salida de ejemplooc 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> - Etiqueta los nodos en los que quieras que se programen los pods de nodeserver.
Salida de ejemplooc 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 - Activa la restricción actualizando el archivo « ConfigMap ».
Salida de ejemplooc 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 - Comprueba que los pods de nodeserver solo se programen en nodos etiquetados.
Salida de ejemplooc 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>
| Valor | Comportamiento |
|---|---|
restrictNodeServerScheduling: "false" (Valor predeterminado) |
Los pods de Nodeserver se programan en todos los nodos. |
restrictNodeServerScheduling: "true" |
Los pods de Nodeserver solo se programan en nodos etiquetados como « cos.csi.ibm.io/csi-node=true ». |
Configuración de los volúmenes máximos por nodo
Por defecto, el controlador COS CSI no limita el número de volúmenes que se pueden montar en un único nodo. Puedes utilizar el parámetro « maxVolumesPerNode » para establecer el número máximo de volúmenes por nodo.
Puedes configurar « maxVolumesPerNode » al habilitar el complemento, o actualizarlo más adelante aplicando el parche « ConfigMap ».
- Para establecer «
maxVolumesPerNode» al habilitar el complemento, incluye el indicador «--param» en el comando de habilitación.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "maxVolumesPerNode=VALUE" - Para actualizar
maxVolumesPerNodeuna vez que el complemento ya esté activado, aplica el parche al complemento gestionado ConfigMap.Salida de ejemplooc 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
| Valor | Comportamiento |
|---|---|
maxVolumesPerNode: "0" (Valor predeterminado) |
No hay límite en el número de volúmenes que se pueden montar por nodo. |
maxVolumesPerNode: "VALUE" |
Limita el número de volúmenes que se pueden montar en un único nodo al valor especificado. |
Implementación de una aplicación que utiliza IBM Cloud Object Storage
Crea un secreto de Kubernetes que contenga tus credenciales de COS.
-
Guarde la siguiente configuración como un archivo llamado
secret.yaml. Proporcione credenciales de IAM o credenciales de HMAC, pero no ambas.- Para las credenciales de IAM, utiliza
apiKeyyserviceIdde tu instancia del servicio IBM Cloud Object Storage. - Para las credenciales HMAC, utiliza
accessKeyysecretKeyde tu instancia del servicio 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- Requerido para la autenticación IAM. Introduce la clave API de IAM de base64-encoded IBM Cloud para tu instancia del servicio IBM Cloud Object Storage. Puede encontrar la clave de API en las credenciales de su servicio, en la sección
apikey. IndicaapiKey+ **o **serviceIdaccessKey+secretKey, pero no ambos. serviceId- Requerido para la autenticación IAM. Introduce el ID de instancia del recurso base64-encoded correspondiente a tu instancia del servicio IBM Cloud Object Storage. Puede encontrar este valor en las credenciales de su servicio, en la sección
resource_instance_id. accessKey- Requerido para la autenticación HMAC. Introduce el ID de la clave de acceso HMAC de base64-encoded. Puede encontrar este valor en las credenciales de su servicio, en la sección
cos_hmac_keys.access_key_id. IndicaaccessKey+ **o **secretKeyapiKey+serviceId, pero no ambos. secretKey- Requerido para la autenticación HMAC. Introduce la clave de acceso secreta HMAC de base64-encoded. Puede encontrar este valor en las credenciales de su servicio, en la sección
cos_hmac_keys.secret_access_key. kpRootKeyCRN- Opcional. Introduce el CRN de la clave raíz base64-encoded de tu instancia de Key Protect. Para recuperar el CRN, ve a tu instancia de KMS en la consola de IBM Cloud, abre Claves, haz clic en la clave raíz y copia el CRN de los detalles de la clave. Esto solo se aplica a los nuevos depósitos; no se puede añadir cifrado a un depósito ya existente.
iamEndpoint- Opcional. Introduce el punto final del token IAM de IBM Cloud URL como texto sin formato. De forma predeterminada, el controlador utiliza
https://private.iam.cloud.ibm.compara los clústeres VPC yhttps://iam.cloud.ibm.compara los clústeres Classic. Modifica este valor solo si necesitas utilizar un punto final de IAM diferente. cosEndpoint- Opcional. Introduce el punto final de IBM Cloud Object Storage ( URL ) como texto sin formato, por ejemplo
https://s3.us.cloud-object-storage.appdomain.cloud. Cuando se especifica, este valor anula el establecidocosEndpointen la clase de almacenamiento. Utiliza este campo si tu bucket se encuentra en una región diferente o utiliza un punto de conexión directo o privado. Para consultar una lista de los puntos de conexión disponibles, véase Puntos de conexión de IBM Cloud Object Storage. locationConstraint- Opcional. Introduce la cadena de restricción de ubicación como texto sin formato, por ejemplo, o
us-standardus-geo-smart. Cuando se especifica, este valor anula el establecidolocationConstrainten la clase de almacenamiento. La restricción de ubicación determina la clase del depósito y la región en la que se almacena. objectPath- Opcional. Introduce la ruta a un subdirectorio dentro del bucket que se va a montar como texto sin formato, por ejemplo
data. Utiliza esta opción para conceder a una aplicación acceso únicamente a una carpeta específica dentro de un depósito compartido, en lugar de a toda la raíz del depósito. resourceConfigApiKey- Obligatorio cuando
quotaLimitestá configurado en"true". Introduce el mismo valorapikeyde base64-encoded de tus credenciales del servicio IBM Cloud Object Storage que has utilizado en el campoapiKeyanterior. bucketName- Opcional. Introduce el nombre de un depósito existente que quieras utilizar o el nombre de un nuevo depósito que quieras crear. Si el nombre del bucket que indiques no existe, el controlador lo creará. Si deja este campo en blanco, se
creará automáticamente un bucket con la convención de nomenclatura
s3fs-<timestamp>-xxxorclone-<timestamp>-xxxsegún el tipo de montador. El nombre del bucket debe ser único a nivel global en IBM Cloud Object Storage. bucketVersioning- Opcional. Controla el control de versiones de los buckets. Establece en
"true"para activar el control de versiones, o en"false"para desactivarlo en un depósito en el que ya esté activado. Debe ser un valor de cadena. Cuando se habilita el control de versiones, IBM Cloud Object Storage conserva varias versiones de cada objeto del depósito, lo que protege contra eliminaciones y sobrescrituras accidentales. Ten en cuenta que las credenciales del servicio deben tener permisos de Manager o Writer para habilitar o deshabilitar el control de versiones de los buckets. Para obtener más información, consulta Introducción al control de versiones. quotaLimit- Opcional. Establece en para
"true"aplicar una cuota de almacenamiento estricta al depósito. Cuando está habilitada, la cuota del depósito se establece igual al tamañostoragesolicitado en el PVC. Si se alcanza el límite, las operaciones de escritura en el depósito fallarán hasta que se eliminen datos. Es necesarioresourceConfigApiKeyconfigurarlo. El valor predeterminado es"false". Debe ser un valor de cadena. mountOptions- Puedes personalizar las opciones de montaje para
s3fsorcloneeditandomountOptionsen tu secreto. Para ejecutarlo como usuario no root, descomenta y configurauid=<value>para que coincida con el camporunAsUseren el desecurityContextla especificación de tu pod. Alinea las opciones que especifiques con la clase de almacenamiento que utiliza tu PVC. Para consultar los valores predeterminados de una clase de almacenamiento, ejecuteoc describe storageclass <storageclass_name>ooc describe storageclass <storageclass_name>. Para obtener más información, consulta el s3fs opciones de montaje y elrcloneopciones de montaje.
Actualmente, el complemento está habilitado para admitir un conjunto fijo de opciones de montaje con la validación adecuada para cada opción de montaje. Si desea utilizar otras opciones de montaje que no figuran en la lista de validación, póngase en contacto con el servicio de asistencia para activarlas.
- Para las credenciales de IAM, utiliza
-
Codifica todos los parámetros de datos secretos en base64.
echo -n "<value>" | base64 -
Actualice
secret.yamlcon los valores codificados en base64. -
Cree el secreto:
oc apply -f secret.yaml
Crear un PVC
Puedes utilizar un único secreto para varios PVC o un secreto por PVC.
Puedes gestionar este comportamiento utilizando las siguientes anotaciones en el PVC yaml. Estas anotaciones ayudan al conductor a asignar el PVC al secreto correcto.
cos.csi.driver/secret: "<custom-secret>"
Asegúrate de que tu «secret», «PVC» y «pods» estén todos en el mismo espacio de nombres
Ejemplo PVC para un 1-to-1 secreto a PVC mapeo dando a su PVC el mismo nombre que el secreto que creó anteriormente.
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.
Ejemplo de PVC para utilizar 1 secreto a muchos PVC utilizando anotaciones para especificar el secreto.
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.
-
Elija uno de los ejemplos anteriores y personalícelo para su caso de uso. Para obtener una lista de las clases de almacenamiento, consulte la referencia de clases de almacenamiento.
-
Cree la PVC.
oc apply -f pvc.yaml
Crear un despliegue
-
Guarda la siguiente configuración en un archivo llamado
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. -
Cree el despliegue.
oc apply -f dep.yaml
Desactivación del complemento IBM Cloud Object Storage
Los secretos, PVCs y despliegues existentes no se eliminan al desactivar el complemento ni con las actualizaciones de parches. No hay interrupciones en las cargas de trabajo existentes de los clientes.
- Ejecuta el siguiente comando para desactivar el complemento.
Salida de ejemploibmcloud 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 - Comprueba que se haya eliminado el complemento.
ibmcloud oc cluster addon ls --cluster CLUSTER
Migración del complemento Helm al complemento clúster
-
Obtenga los detalles de sus PVC y seleccione uno para migrar.
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; doneSalida de ejemplo
PVC: pvc-test in Namespace: default uses ibm.io/ibmc-s3fs storage provisioner -
Describe el PVC y obtén el nombre del cubo.
oc describe pvc <pvc_name> | grep ibm.io/bucket:Salida de ejemplo
ibm.io/bucket: test-s3 -
Vuelve a crear tu secreto con el nombre del cubo incluido.
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 -
Busque la clase de almacenamiento que se utilizó en su PVC.
oc describe pvc <pvc_name> | grep StorageClass:Ejemplo de comando para un PVC llamado
test-s3.oc describe pvc test-s3 | grep StorageClass:Salida de ejemplo
StorageClass: ibmc-s3fs-smart-perf-regional -
Revise las nuevas clases de almacenamiento disponibles con el complemento y seleccione una clase de sustitución.
- Si utilizó una clase
flex, elija una de las nuevas clasessmart. - Si utilizó una clase
standard, elija una de las nuevas clasesstandard. - Las clases
coldyvaultya no están disponibles con el complemento; elija en su lugar una clasesmartostandard.
- Si utilizó una clase
-
Revise los detalles de su PVC.
oc describe pvc test-s3Salida de ejemplo
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> -
Crea un PVC de sustitución que utilice una nueva clase de almacenamiento y haga referencia al secreto que creaste anteriormente.
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. -
Verifique que el PVC es
Bound.oc get pvc -
Consulta los detalles de tu aplicación.
oc get pods -
Reduzca su aplicación a cero.
kubectl scale deployment --replicas=0 my-app -
Cree una implantación de sustitución que haga referencia a la PVC creada en el paso anterior.
-
Una vez que se haya ejecutado la nueva implantación, puede eliminar la antigua.
-
Repite estos pasos para cada PVC que desees migrar.
IBM Cloud Object Storage clases de almacenamiento de clústeres adicionales
El complemento de clúster IBM Cloud Object Storage proporciona clases de almacenamiento para los montadores s3fs y rclone. Elija una clase de almacenamiento que se ajuste a sus requisitos de acceso a datos. La clase
de almacenamiento determina la clase de bucket, la política de recuperación y el comportamiento de montaje predeterminado para el bucket que se crea para su carga de trabajo.
- Standard
- Úselos para datos de uso frecuente a los que se accede con asiduidad. Las apps web o móviles son ejemplos habituales de este caso.
- Caja fuerte
- Úselos para cargas de trabajo o datos poco activos a los que se accede con poca frecuencia, por ejemplo, una vez al mes o menos. El archivado, la retención de datos a corto plazo, la conservación de activos digitales, la sustitución de cinta y la recuperación tras desastre son ejemplos habituales de este caso.
- Frío
- Se utiliza para datos fríos a los que se accede con poca frecuencia (cada 90 días o menos) o para datos inactivos. Los archivados, las copias de seguridad a largo plazo, los datos históricos que se conservan por motivos de conformidad o las cargas de trabajo y apps a las que se accede con muy poca frecuencia son ejemplos habituales de este caso.
- Inteligente
- Se utiliza para cargas de trabajo y datos que no siguen un patrón de uso específico, o cuando el patrón de uso es difícil de predecir.
Decida el nivel de resiliencia de los datos que se almacenan en el grupo. Para obtener más información, consulte Regiones y puntos finales.
- varias regiones
- Tus datos se almacenan en tres regiones dentro de una misma zona geográfica para garantizar la máxima disponibilidad. Si tiene cargas de trabajo que se distribuyen entre regiones, las solicitudes se direccionan al punto final regional más
próximo. El punto final IBM Cloud Object Storage para la geolocalización se configura automáticamente en función de la ubicación de tu clúster. Por ejemplo, si su clúster se encuentra en
US South, sus clases de almacenamiento estarán configuradas para utilizar el puntoUS GEOfinal de sus buckets. Elige una clase de almacenamiento que incluya encross-regionsu nombre. - Regional
- Tus datos se replican en varias zonas dentro de una misma región. Si tiene cargas de trabajo que se encuentran en la misma región, observará una menor latencia y un mejor rendimiento que en una configuración entre regiones. El punto de conexión
regional se configura automáticamente en función de la ubicación de tu clúster. Por ejemplo, si tu clúster se encuentra en
US South, tus clases de almacenamiento estarán configuradas para utilizarUS Southcomo punto final regional para tus buckets. Elige una clase de almacenamiento que no incluya encross-regionsu nombre.
| Nombre | Clase de grupo | Resiliencia | Montador | Política de reclamación | Modalidad de enlace |
|---|---|---|---|---|---|
| ibm-almacenamiento-de-objetos-smart-cross-region-rclone | Inteligente | Interregional | rclone |
Suprimir | Inmediato |
| ibm-almacenamiento-de-objetos-smart-cross-region-rclone-retain | Inteligente | Interregional | rclone |
Retener | Inmediato |
| ibm-object-storage-smart-cross-region-s3fs | Inteligente | Interregional | s3fs |
Suprimir | Inmediato |
| ibm-object-storage-smart-cross-region-s3fs-retain | Inteligente | Interregional | s3fs |
Retener | Inmediato |
| ibm-almacenamiento-de-objetos-smart-rclone | Inteligente | Regional | rclone |
Suprimir | Inmediato |
| ibm-almacenamiento-de-objetos-smart-rclone-retain | Inteligente | Regional | rclone |
Retener | Inmediato |
| ibm-object-storage-smart-s3fs | Inteligente | Regional | s3fs |
Suprimir | Inmediato |
| ibm-object-storage-smart-s3fs-retain | Inteligente | Regional | s3fs |
Retener | Inmediato |
| ibm-object-storage-standard-cross-region-rclone | Standard | Interregional | rclone |
Suprimir | Inmediato |
| ibm-almacenamiento-de-objetos-estándar-entre-regiones-rclone-retain | Standard | Interregional | rclone |
Retener | Inmediato |
| ibm-object-storage-standard-cross-region-s3fs | Standard | Interregional | s3fs |
Suprimir | Inmediato |
| ibm-object-storage-standard-cross-region-s3fs-retain | Standard | Interregional | s3fs |
Retener | Inmediato |
| ibm-almacenamiento-de-objetos-estándar-rclone | Standard | Regional | rclone |
Suprimir | Inmediato |
| ibm-object-storage-standard-rclone-retain | Standard | Regional | rclone |
Retener | Inmediato |
| ibm-object-storage-standard-s3fs | Standard | Regional | s3fs |
Suprimir | Inmediato |
| ibm-object-storage-standard-s3fs-retain | Standard | Regional | s3fs |
Retener | Inmediato |
Para revisar la configuración detallada de los cubos de una clase de almacenamiento, ejecute oc describe storageclass <storageclass_name> o oc describe storageclass <storageclass_name>.
Parámetros de clase de almacenamiento
Todas las clases de almacenamiento adicionales del clúster incluyen los siguientes parámetros básicos.
| Parámetro | Descripción |
|---|---|
client |
Identifica el tipo de cliente que utiliza el controlador. Las clases de almacenamiento adicionales utilizan awss3. |
cosEndpoint |
Define el punto final de IBM Cloud Object Storage para la región del cubo. |
csi.storage.k8s.io/node-publish-secret-name |
Hace referencia al nombre del secreto que contiene sus credenciales IBM Cloud Object Storage. |
csi.storage.k8s.io/node-publish-secret-namespace |
Hace referencia al espacio de nombres del secreto que contiene sus credenciales IBM Cloud Object Storage. |
locationConstraint |
Define la clase de cubo y la región, como au-syd-smart o au-syd-standard. |
mounter |
Especifica si la clase de almacenamiento utiliza el montador s3fs o rclone. |
Opciones de montaje por defecto de la clase de almacenamiento s3fs
Las clases de almacenamiento s3fs utilizan las siguientes opciones de montaje por defecto.
| Opción de montaje | Descripción |
|---|---|
multipart_size=52 |
Establece el tamaño de la parte, en MB, para cada solicitud multiparte. |
multireq_max=20 |
Establece el número máximo de peticiones paralelas para listar objetos. |
max_dirty_data=5120 |
Descarga los datos sucios en S3 después de escribir un número especificado de MB. El valor mínimo admitido es 50. Un valor de -1 desactiva este comportamiento. |
parallel_count=20 |
Establece el número de peticiones paralelas para subir objetos grandes. s3fs sube objetos grandes utilizando peticiones multiparte y envía peticiones en paralelo. |
max_stat_cache_size=100000 |
Establece el número máximo de entradas en la caché de estadísticas y la caché de enlaces simbólicos. |
retries=5 |
Establece el número de veces que se reintentará una transacción fallida en S3. |
kernel_cache |
Habilita la caché del búfer del núcleo para el punto de montaje del volumen. Los datos que se leen de IBM Cloud Object Storage se almacenan en la caché del núcleo para facilitar un acceso de lectura más rápido. La caché del kernel está
activada para las clases de almacenamiento estándar e inteligente s3fs. |
max_background=1000 |
Establece el número máximo de solicitudes FUSE en segundo plano que se pueden poner en cola antes de que el núcleo bloquee nuevas solicitudes. Al aumentar este valor, se mejora el rendimiento de las cargas de trabajo con alta concurrencia. |
Opciones de montaje por defecto de la clase de almacenamiento rclone
Las clases de almacenamiento rclone utilizan las siguientes opciones de montaje por defecto.
| Opción de montaje | Descripción |
|---|---|
acl=private |
Garantiza que los objetos cargados no sean de acceso público. |
bucket_acl=private |
Establece la ACL predeterminada para los buckets que crea rclone en private. |
upload_cutoff=100Mi |
Sube archivos mayores que 100 MiB utilizando la subida multiparte. Los archivos más pequeños se cargan en una sola solicitud. |
chunk_size=16Mi |
Establece el tamaño de cada parte en una carga multiparte. |
max_upload_parts=1000 |
Establece el número máximo de partes por carga multiparte y limita indirectamente el tamaño máximo de archivo admitido con el chunk_size configurado. Con chunk_size=16Mi, el tamaño máximo de archivo es 16 GiB. |
upload_concurrency=8 |
Establece el número de partes que se cargan en paralelo durante una carga multiparte. |
multi_thread_streams=8 |
Establece el número de subprocesos que se utilizan para descargar un único objeto cuando se emplea la descarga multihilo. |
disable_checksum=true |
Desactiva el cálculo de la suma de comprobación de MD5 al realizar la carga. Mejora el rendimiento con archivos de gran tamaño en los que el cálculo de la suma de comprobación supone una sobrecarga significativa. |