Despliegue de OpenShift Data Foundation en clústeres clásicos
OpenShift Data Foundation es una solución de almacenamiento altamente disponible que puede utilizar para gestionar el almacenamiento persistente para las cargas de trabajo contenerizadas en clústeres de Red Hat® OpenShift® on IBM Cloud®.
La instalación de OpenShift Data Foundation desde OperatorHub no está soportada en clústeres IBM Cloud. Para instalar ODF, siga los pasos siguientes para desplegar el complemento de clúster.
Planificación de la configuración
Antes de instalar ODF en el clúster, debe asegurarse de que se cumplen las siguientes condiciones de requisito previo:
Para instalar OpenShift Data Foundation en clústeres clásicos, hay que habilitar VRF en la cuenta.
- Instale o actualice la CLI de
oc - Si no ha habilitado el reenvío de rutas virtuales (VRF) en la cuenta, habilítelo.
- Después de haber habilitado VRF, habilite Puntos finales de servicio.
- Revise los tipos de nodos trabajadores SDS. En las tablas de cada sección de área metropolitana, los sabores SDS están en las pestañas Metal desnudo y terminan
con
.ssd. - Cree un clúster clásico con un mínimo de un nodo trabajador por zona en tres zonas. Elija nodos trabajadores de tipo
mb4c.32x384.3.8tb.ssdomb4c.20x64.2x1.9tb.ssdque tengan los discos locales necesarios para ODF. - Prepare su clúster clásico.
Opcional: Configuración de una instancia de servicio de IBM Cloud Object Storage
Si desea configurar IBM Cloud Object Storage como el almacén de copia de seguridad predeterminado en el clúster de almacenamiento, cree una instancia de IBM Cloud Object Storage. A continuación, cree un conjunto de credenciales de HMAC y un secreto de Kubernetes que utilice credenciales de HMAC de Object Storage. Si no especifica credenciales de IBM Cloud Object Storage durante la instalación, el almacén de copia de seguridad predeterminado en el clúster de almacenamiento se crea utilizando las PV del clúster. Puede configurar almacenes de copia de seguridad adicionales después de desplegar ODF, pero no puede cambiar el almacén de copia de seguridad predeterminado.
Acceda al clúster de Red Hat OpenShift.
- Cree un espacio de nombres
openshift-storageen el clúster. Los pods de controlador se despliegan en este espacio de nombres. Copie el siguiente archivo YAML y guárdelo comoos-namespace.yamlen la máquina local.apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-storage - Cree el espacio de nombres
openshift-storageutilizando el archivo YAML que ha guardado.oc create -f os-namespace.yaml - Verifique que se ha creado el espacio de nombres.
oc get namespaces | grep storage - Cree una instancia de servicio de IBM Cloud Object Storage.
ibmcloud resource service-instance-create noobaa-store cloud-object-storage standard global - Cree credenciales de HMAC. Anote las credenciales.
ibmcloud resource service-key-create cos-cred-rw Writer --instance-name noobaa-store --parameters '{"HMAC": true}' - Cree el secreto de Kubernetes denominado
ibm-cloud-cos-credsen el espacio de nombresopenshift-storageque utiliza las credenciales de HMAC de Object Storage. Cuando ejecute el mandato, especifique el ID de clave de acceso de HMAC de Object Storage y la clave de acceso secreta. Tenga en cuenta que el secreto debe denominarseibm-cloud-cos-creds.oc -n 'openshift-storage' create secret generic 'ibm-cloud-cos-creds' --type=Opaque --from-literal=IBM_COS_ACCESS_KEY_ID=<access_key_id> --from-literal=IBM_COS_SECRET_ACCESS_KEY=<secret_access_key> - Verifique que se ha creado el secreto.
oc get secrets -A | grep cos
Opcional: Configuración del cifrado utilizando Hyper Protect Crypto Services
Si desea configurar el cifrado, cree una instancia de Hyper Protect Crypto Services o Key Protect. A continuación, crea una clave raíz y un secreto de Kubernetes que utilice tus credenciales de Hyper Protect Crypto Services o Key Protect.
IBM Cloud está cambiando los servicios de gestión de claves dedicados de Hyper Protect Crypto Services a Key Protect Dedicated.
- La clave de API para Hyper Protect Crypto Services o Key Protect debe tener los permisos mínimos necesarios siguientes:
ReaderReader Plus- Si está utilizando el cifrado a nivel de clúster y el cifrado de clase de almacenamiento, la clave de API debe tener los siguientes permisos necesarios:
ReaderReader PlusWriter
-
Cree una instancia de servicio de Hyper Protect Crypto Services o Key Protect.
-
Crear clave raíz
-
Una vez creada la instancia y la clave raíz, anota el nombre de la instancia de Hyper Protect Crypto Services o Key Protect, el ID de la instancia, el ID de la clave raíz y el punto de conexión público.
-
Cree un ID de servicio, clave de API y política de acceso que permita el acceso a Hyper Protect Crypto Services y Red Hat OpenShift on IBM Cloud o Key Protect y Red Hat OpenShift on IBM Cloud. Anote la API que ha creado.
Acceda al clúster de Red Hat OpenShift.
- Liste los espacios de nombres para determinar si tiene un espacio de nombres de
openshift-storage. Si no tiene un espacio de nombres deopenshift-storage, créelo.oc get namespaces | grep openshift-storage- Cree un espacio de nombres
openshift-storageen el clúster. Los pods de controlador se despliegan en este espacio de nombres. Copie el siguiente archivo YAML y guárdelo comoos-namespace.yamlen la máquina local.
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-storage ``` 1. Cree el espacio de nombres `openshift-storage` utilizando el archivo YAML que ha guardado. ```sh {: pre} oc create -f os-namespace.yaml ``` 1. Verifique que se ha creado el espacio de nombres. ```sh {: pre} oc get namespaces | grep storage ``` - Cree un espacio de nombres
- Codifique el ID de la clave raíz y la clave de API del ID de servicio que ha creado en base64.
printf "ROOT-KEY-ID" | base64printf "SERVICE-ID-API-KEY" | base64 - Cree el secreto de Kubernetes en el espacio de nombres de
openshift-storageque utiliza las credenciales de Hyper Protect Crypto Services.- Guarde el siguiente secreto como un archivo YAML llamado
ibm-hpcs-secret.yaml.
apiVersion: v1 data: IBM_KP_CUSTOMER_ROOT_KEY: AaAAAaZAAAAy11AAAyAAkaAaQtAAk0AAA2AzY5AjYaaa67aa # your base64 encoded root key ID IBM_KP_SERVICE_API_KEY: AAAaaajAAAAAncmAAaaaaAAAAdAAId1AtVjBJRU1aAAaAeTh1aEw=AaaaA # your base64 encoded API kind: Secret metadata: name: ibm-hpcs-secret namespace: openshift-storage type: Opaque ``` 1. Cree el secreto en el clúster. ```sh {: pre} oc apply -f ibm-hpcs-secret.yaml ``` - Guarde el siguiente secreto como un archivo YAML llamado
- Verifique que se ha creado el secreto.
oc get secrets -A | grep ibm-hpcs-secret
Preparación del clúster para una instalación de OpenShift Data Foundation
Antes de instalar OpenShift Data Foundation, prepare el clúster.
Acceda al clúster de Red Hat OpenShift.
-
Inicie una sesión en cada nodo trabajador del clúster utilizando el mandato
oc debugy complete los pasos siguientes.- Inicie la sesión en el nodo trabajador. Sustituye por
<worker_node_IP>el nombre de tu nodo de trabajo. Para obtener los nombres de tus nodos de trabajo, ejecuta el comandooc get nodes.
oc debug node/<node name> -- chroot /host rm -rvf /var/lib/rook /mnt/local-storage ``` - Para cada partición de disco, borre el sistema de archivos de `xfs` en el nodo de trabajador. Si no borra el sistema de archivos, no se crea el OSD. ```sh {: pre} file -sL /dev/<partition> wipefs -a /dev/<partition> ``` - Edite el archivo `/etc/kubernetes/kubelet.conf` y cambie el valor del parámetro `EnableControllerAttachDetach` a `true`. ```sh {: pre} nano /etc/kubernetes/kubelet.conf ``` - Guarde y salga utilizando `ctrl + X`. - Reinicie el kubelet. ```sh {: pre} systemctl restart kubelet ``` - Cierre la sesión del nodo de trabajador. ```sh exit ``` - Inicie la sesión en el nodo trabajador. Sustituye por
-
Repita los pasos anteriores para borrar el sistema de archivos para cada nodo de trabajador que desee utilizar en el despliegue de ODF.
Cómo obtener los detalles del dispositivo
Puede utilizar el descubrimiento de disco automático para buscar los dispositivos disponibles para ODF. Sin embargo, si desea especificar manualmente dispositivos de almacenamiento para ODF, siga estos pasos para recuperar los detalles del dispositivo de almacenamiento.
Antes de instalar ODF, obtenga los detalles de los discos locales en los nodos trabajadores.
-
Inicie una sesión en el clúster y obtenga una lista de los nodos trabajadores disponibles. Anote los nodos trabajadores que desea utilizar en el despliegue de OCS.
oc get nodes -
Inicie sesión en cada nodo trabajador que desee utilizar para el ODF.
oc debug node/<node-name> -
Después de desplegar el pod de depuración en el nodo trabajador, ejecute el mandato siguiente para permitir los binarios de host.
chroot /host -
Liste los discos disponibles en el nodo trabajador.
lsblk -
Revise la salida del mandato para los discos disponibles. Sólo puede utilizar discos no montados para despliegues de ODF como, por ejemplo, discos
sdcen el ejemplo siguiente. Tenga en cuenta que la capacidad de almacenamiento inicial del despliegue de ODF es igual al tamaño del disco que especifique comoosd-device-path. En este ejemplo, el discosdcestá desmontado y tiene dos particiones disponibles:sdc1ysdc2.NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931G 0 disk |-sda1 8:1 0 256M 0 part /boot |-sda2 8:2 0 1G 0 part -sda3 8:3 0 929.8G 0 part / sdb 8:16 0 744.7G 0 disk -sdb1 8:17 0 744.7G 0 part /disk1 sdc 8:32 0 744.7G 0 disk |-sdc1 8:33 0 18.6G 0 part -sdc2 8:34 0 260.8G 0 part -
Para cada disco no montado que desea utilizar en el despliegue, busque el ID de disco. En el siguiente ejemplo, el ID para la partición
sdc1esscsi-3600605b00d87b43027b3bc310a64c6c9-part1y el ID para la particiónsdc2esscsi-3600605b00d87b43027b3bc310a64c6c9-part2.ls -l /dev/disk/by-id/Salida de ejemplo
total 0 lrwxrwxrwx. 1 root root 9 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6 -> ../../sda lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part1 -> ../../sda1 lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part2 -> ../../sda2 lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbb603150cc6-part3 -> ../../sda3 lrwxrwxrwx. 1 root root 9 Feb 9 04:15 scsi-3600605b00d87b43027b3bbf306bc28a7 -> ../../sdb lrwxrwxrwx. 1 root root 10 Feb 9 04:15 scsi-3600605b00d87b43027b3bbf306bc28a7-part1 -> ../../sdb1 lrwxrwxrwx. 1 root root 9 Feb 9 04:17 scsi-3600605b00d87b43027b3bc310a64c6c9 -> ../../sdc lrwxrwxrwx. 1 root root 10 Feb 11 03:14 scsi-3600605b00d87b43027b3bc310a64c6c9-part1 -> ../../sdc1 lrwxrwxrwx. 1 root root 10 Feb 11 03:15 scsi-3600605b00d87b43027b3bc310a64c6c9-part2 -> ../../sdc2 -
Repita los pasos anteriores para cada nodo trabajador que desee utilizar para el despliegue de OpenShift Data Foundation.
Instalación del complemento desde la CLI
Puedes instalar el complemento utilizando el ibmcloud oc cluster addon enable comando.
Si desea utilizar una instancia de servicio de IBM Cloud Object Storage como almacenamiento de copia de seguridad predeterminado, asegúrese de que ha creado la instancia de servicio y que ha creado el secreto
de Kubernetes en el clúster. Cuando crea el CRD de ODF en el clúster, ODF busca un secreto denominado ibm-cloud-cos-creds para configurar el almacén de copia de seguridad predeterminado que utiliza las credenciales de Object Storage
HMAC.
-
Revise la referencia de parámetro. Al habilitar el complemento, puede anular los valores predeterminados especificando la opción
--param "key=value"correspondiente para cada parámetro que desee anular. -
Antes de habilitar el complemento, revise el registro de cambios para obtener la información de versiones más reciente. Tenga en cuenta que el complemento da soporte a las versiones de clúster
n+1. Por ejemplo, puede implementar la versión4.10.0del complemento en un clúster OCP 4.9 o 4.11. Si tienes una versión de clúster distinta de la predeterminada, debes especificar la opción--versional habilitar el complemento.- Revise las opciones de complemento para la versión del complemento que desee desplegar.
ibmcloud oc cluster addon options --addon openshift-data-foundation --version 4.15.0Para obtener el mejor rendimiento, se recomienda incluir la opción
resourceProfileespecificada comoperformance. Esta opción ayuda a obtener niveles de rendimiento mejorados en función de la disponibilidad de recursos durante el despliegue. Para obtener más información sobre la opción «resourceProfile», consulta la sección «Perfiles de rendimiento» en la documentación de ODF de Red Hat OpenShift.Observe que las clases de almacenamiento predeterminadas de
monStorageClassNameyosdStorageClassNameson clases de almacenamiento de Block Storage for VPC.Ejemplo de opciones adicionales para la versión 4.15.0
Add-on Options Option Default Value osdStorageClassName ibmc-vpc-block-metro-10iops-tier ocsUpgrade false billingType advanced autoDiscoverDevices false hpcsBaseUrl <Please provide the KMS Base (public) URL> taintNodes false enableNFS false resourceProfile performance useCephRBDAsDefaultStorageClass false clusterEncryption false hpcsEncryption false hpcsSecretName <Please provide the KMS secret name> encryptionInTransit false disableNoobaaLB false osdSize 512Gi numOfOsd 1 ignoreNoobaa true addSingleReplicaPool false prepareForDisasterRecovery false workerPool - odfDeploy true osdDevicePaths <Please provide IDs of the disks to be used for OSD pods if using local disks or standard classic cluster> workerNodes all hpcsServiceName <Please provide the KMS Service instance name> hpcsInstanceId <Please provide the KMS Service instance ID> hpcsTokenUrl <Please provide the KMS token URL> -
Habilite el complemento
openshift-data-foundation. Si solo quieres implementar el complemento ODF, puedes especificar la opción"odfDeploy=false". Si desea anular alguno de los parámetros predeterminados, especifique la opción--param "key=value"correspondiente para cada parámetro que desee anular. Si no desea crear el clúster de almacenamiento cuando habilite el complemento, puede habilitar el complemento primero y, a continuación, crear el clúster de almacenamiento más adelante creando una CRD.Comando de ejemplo para habilitar el complemento y descubrir automáticamente volúmenes locales, habilitando el
performanceopción de perfil de recurso y habilitar el cifrado con Hyper Protect Crypto Services o Key Protect.ibmcloud oc cluster addon enable openshift-data-foundation -c CLUSTER_NAME --version VERSION --param "odfDeploy=true" --param "resourceProfile=performance" --param "osdSize=250" --param "autoDiscoverDevices=true" --param "hpcsTokenUrl=https://iam.cloud.ibm.com/identity/token" --param "hpcsEncryption=true" --param "hpcsBaseUrl=HPCS_INSTANCE_PUBLIC_ENDPOINT" --param "hpcsInstanceId=HPCS_INSTANCE_ID" --param "hpcsServiceName=HPCS_INSTANCE_NAME" --param "hpcsSecretName=HPCS_SECRET_NAME" -
Verifique que el complemento esté en un estado
Ready.ibmcloud oc cluster addon ls -c CLUSTER_NAME -
Verifique que el pod de
ibm-ocs-operator-controller-manager-*****se está ejecutando en el espacio de nombreskube-system.oc get pods -A | grep ibm-ocs-operator-controller-manager -
Si ha habilitado el complemento y ha establecido la opción
odfDeploy=false, siga los pasos para crear un recurso personalizado ODF.
Instalación del complemento OpenShift Data Foundation desde la consola
Para instalar ODF en el clúster, realice los pasos siguientes.
La versión 4.11 sólo está disponible actualmente para los nuevos clusters. No se puede actualizar una implantación de 4.10 a 4.11. No obstante, puede seguir utilizando la versión de ODF 4.10.
- Antes de habilitar el complemento, revise el registro de cambios para obtener la información de versiones más reciente. Tenga en cuenta que el complemento da
soporte a las versiones de clúster
n+1. - Revise la referencia de parámetro.
- Desde la consola, selecciona el clúster en el que deseas instalar el complemento.
- En la tarjeta OpenShift Data Foundation, pulse Instalar. Se abrirá el panel Instalar ODF.
- En el panel Instalar ODF, especifique los parámetros de configuración que desee usar en el despliegue de ODF.
- Seleccione Conceptos básicos o Avanzado como plan de facturación.
- Para los clústeres clásicos, seleccione Almacenamiento local para utilizar volúmenes locales en los nodos de trabajador.
- Si desea descubrir automáticamente los dispositivos de almacenamiento disponibles en los nodos de trabajador y utilizarlos en ODF, seleccione Descubrimiento de disco local.
- Si desea especificar manualmente los dispositivos de almacenamiento en los nodos de trabajador que desea utilizar en ODF, especifique una lista separada por comas de los ID de disco que desee utilizar. Para encontrar estos ID de disco, consulte Recopilación de los detalles del dispositivo.
- En el campo Nodos de trabajador, especifique los nombres de los nodos de trabajador en los que desea desplegar ODF. Debe especificar al menos 3 nombres de nodo de trabajador. Para encontrar los nombres de nodo, ejecute el
mandato
oc get nodesen el clúster. Deje este campo en blanco para desplegar ODF en todos los nodos de trabajador. Los nombres de Node deben estar separados por comas sin espacios entre nombres. Por ejemplo:10.240.0.24,10.240.0.26,10.240.0.25. - En el campo Número de discos de OSD necesarios, especifique el número de discos de OSD (almacenamiento de aplicaciones) que se suministran en cada nodo de trabajador.
- Si está volviendo a habilitar el complemento para actualizar la versión del complemento, seleccione la opción Actualizar ODF.
- Si desea cifrar los volúmenes utilizados por los pods del sistema ODF, seleccione Habilitar el cifrado de clúster.
- Si desea habilitar el cifrado en los volúmenes de OSD (almacenamiento de aplicaciones), seleccione Habilitar el cifrado de volúmenes.
- En el campo Nombre de la instancia, introduce el nombre de tu instancia de Hyper Protect Crypto Services o Key Protect. Por ejemplo:
Hyper-Protect-Crypto-Services-eugb. - En el campo ID de instancia, introduce el ID de tu instancia de Hyper Protect Crypto Services o Key Protect. Por ejemplo:
d11a1a43-aa0a-40a3-aaa9-5aaa63147aaa. - En el campo Nombre del secreto, introduce el nombre del secreto que has creado utilizando tus credenciales de Hyper Protect Crypto Services o Key Protect. Por ejemplo:
ibm-hpcs-secret. - En el campo Base URL, introduce el punto final público de tu instancia de Hyper Protect Crypto Services o Key Protect. Por ejemplo:
https://api.eu-gb.hs-crypto.cloud.ibm.com:8389. - En el campo URL de señal, escriba
https://iam.cloud.ibm.com/identity/token.
- En el campo Nombre de la instancia, introduce el nombre de tu instancia de Hyper Protect Crypto Services o Key Protect. Por ejemplo:
Creación del clúster de almacenamiento
Para desplegar ODF en el clúster clásico, puede crear una definición de recurso personalizada para especificar los detalles del dispositivo de almacenamiento.
Si desea utilizar una instancia de servicio de IBM Cloud Object Storage como almacenamiento de copia de seguridad predeterminado, asegúrese de que ha creado la instancia de servicio y que ha creado el secreto
de Kubernetes en el clúster. Cuando crea el CRD de ODF en el clúster, ODF busca un secreto denominado ibm-cloud-cos-creds para configurar el almacén de copia de seguridad predeterminado que utiliza las credenciales de Object Storage
HMAC.
-
Cree un recurso personalizado denominado
OcsCluster. Guarde y edite la siguiente definición de recurso personalizado para incluir las vías de acceso de dispositivo para los discos locales que ha recuperado anteriormente. Si no especifica el parámetro opcionalworkerNodes, todos los nodos trabajadores del clúster se utilizan para el despliegue de ODF. Asegúrese de incluir la vía de acceso/dev/disk/by-id/al especificar los dispositivos de almacenamiento.- En cada nodo trabajador que tenga discos en bruto con particiones, hará falta una partición para el OSD y otra para el MON. Una buena práctica, que además maximiza la capacidad de almacenamiento de los discos particionados, consiste en
especificar la partición o disco de menor tamaño para el MON y la partición o disco de mayor tamaño para el OSD. Tenga en cuenta que la capacidad de almacenamiento inicial de la configuración ODF es igual al tamaño del disco que se especifica
en
osd-device-pathcuando se crea la configuración. - Si los dispositivos no están particionados, hay que especificar un disco en bruto para el MON y otro para el OSD en cada nodo trabajador que se desee usar.
Recurso personalizado de ejemplo para instalar ODF en todos los nodos de trabajador de un clúster de la versión 4.8 utilizando el descubrimiento de disco automático.
apiVersion: ocs.ibm.io/v1 kind: OcsCluster metadata: name: ocscluster-classic spec: osdStorageClassName: localblock osdSize: "1" autoDiscoverDevices: trueRecurso personalizado de ejemplo para instalar ODF en todos los nodos de trabajador de un clúster de la versión 4.8 con discos particionados.
apiVersion: ocs.ibm.io/v1 kind: OcsCluster metadata: name: ocscluster # Kubernetes resource names can't contain capital letters or special characters. Specify a name for your resource that uses only lowercase letters, numbers, `-` or `.` spec: osdStorageClassName: localblock osdSize: "1" numOfOsd: 1 billingType: advanced ocsUpgrade: false osdDevicePaths: - <device-by-id> # Example: /dev/disk/by-id/scsi-0000000a00a00a00000a0aa000a00a0a0-part2 - <device-by-id> # Example: /dev/disk/by-id/scsi-1111111a11a11a11111a1aa111a11a1a1-part2 - <device-by-id> # Example: dev/disk/by-id/scsi-2222222a22a22a22222a2aa222a22a2a2-part2 - En cada nodo trabajador que tenga discos en bruto con particiones, hará falta una partición para el OSD y otra para el MON. Una buena práctica, que además maximiza la capacidad de almacenamiento de los discos particionados, consiste en
especificar la partición o disco de menor tamaño para el MON y la partición o disco de mayor tamaño para el OSD. Tenga en cuenta que la capacidad de almacenamiento inicial de la configuración ODF es igual al tamaño del disco que se especifica
en
-
Guarde el archivo y cree el recurso personalizado
OcsClusteren el clúster.oc create -f <ocs_cluster_filename> -
Verifique que el recurso personalizado
OcsClusterestá en ejecución.oc describe OcsCluster ocscluster
Limitaciones
No puede utilizar tanto el complemento ibmcloud-block-storage-plugin como el complemento ODF al mismo tiempo. Para instalar ODF, primero debe editar el archivo /etc/kubernetes/kubelet.conf y cambiar el valor del parámetro
EnableControllerAttachDetach a true que cambia el comportamiento de conexión de volumen predeterminado para el clúster. Esto significa que no puede suministrar volúmenes dinámicamente utilizando las clases de almacenamiento
ibmc-block-*. En su lugar, debe crear volúmenes utilizando las clases de almacenamiento ODF.