Actualización de nodos de trabajo de Classic que utilizan OpenShift Data Foundation
Infraestructura clásica
En el caso de los clústeres Classic con una solución de almacenamiento como OpenShift Data Foundation, debe aislar, vaciar y sustituir cada nodo de trabajo de forma secuencial. Si ha desplegado OpenShift Data Foundation en un subconjunto de nodos
de trabajador del clúster, después de sustituir el nodo de trabajador, debe editar el recurso de ocscluster para incluir el nuevo nodo de trabajador.
En la siguiente guía de aprendizaje se describen las actualizaciones de los nodos trabajadores principales y secundarios.
- Actualización importante
- Complete los pasos con esta etiqueta para aplicar una actualización importante, por ejemplo, si está actualizando los nodos trabajadores a una nueva versión principal, como por ejemplo de
4.11a4.12, así como de OpenShift Data Foundation de4.11a4.12. - Actualización menor
- Complete los pasos con esta etiqueta para aplicar una actualización de parche, por ejemplo, si está actualizando de
4.12.15_1542_openshifta4.12.16_1544_openshiftmientras mantiene OpenShift Data Foundation en la versión4.12.
No se admite saltarse versiones 4.12 durante una actualización, como de 4.8 a.
Antes de actualizar los nodos de trabajador, asegúrese de realizar una copia de seguridad de los datos de la aplicación. Asimismo, planifique realizar los pasos siguientes para un nodo de trabajador a la vez. Repita los pasos para cada nodo de trabajador que desee actualizar.
Actualizar el maestro de clúster
Actualización importante
- Si está actualizando los nodos trabajadores a una nueva versión principal, como por ejemplo de
4.11a4.12, actualice primero el nodo maestro del clúster.
Mandato de ejemplo:ibmcloud oc cluster master update --cluster CLUSTER [--version MAJOR.MINOR.PATCH] [--force-update] [-f] [-q]ibmcloud oc cluster master update --cluster mycluster --version 4.21.27 --force-update - Espere hasta que finalice la actualización del maestro.
Determine qué nodos trabajadores desea actualizar
[Actualización importante] {: tag-red} Actualización menor
-
Liste los nodos trabajadores utilizando el mandato
oc get nodesy determinando qué nodos trabajadores desea actualizar.oc get nodesSalida de ejemplo
NAME STATUS ROLES AGE VERSION 10.241.0.4 Ready master,worker 106s v1.21.6+4b61f94 10.241.128.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.64.4 Ready master,worker 22d v1.21.6+bb8d50a
Reducir OpenShift Data Foundation
[Actualización importante] {: tag-red} Actualización menor
- Para cada nodo trabajador que haya encontrado en el paso anterior, busque los despliegues
rook-ceph-monyrook-ceph-osd.oc get pods -n openshift-storage -o wide | grep -i <node_name> - Reduzca los despliegues que ha encontrado en el paso anterior.
oc scale deployment rook-ceph-mon-c --replicas=0 -n openshift-storageoc scale deployment rook-ceph-osd-2 --replicas=0 -n openshift-storageoc scale deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME --replicas=0 -n openshift-storage
Cordon y drene el nodo trabajador
[Actualización importante] {: tag-red} Actualización menor
-
Acordone el nodo. El acordonamiento del nodo impide que se planiquen pods en este nodo.
oc adm cordon NODE_NAMESalida de ejemplo
node/10.241.0.4 cordoned -
Drene el nodo para eliminar todos los pods. Cuando drena el nodo de trabajador, los pods se mueven a los demás nodos de trabajador asegurándose de que no haya ningún tiempo de inactividad. El drenaje también garantiza que no haya ninguna interrupción del presupuesto de interrupción del pod.
oc adm drain NODE_NAME --force --delete-emptydir-data --ignore-daemonsetsSalida de ejemplo
evicting pod "managed-storage-validation-webhooks-7fd79bc9f7-pdpv6" evicting pod "calico-kube-controllers-647dbbd685-fmrp9" evicting pod "certified-operators-2v852" evicting pod "csi-snapshot-controller-77fbf474df-47ddt" evicting pod "calico-typha-8574d89b8c-7f2cc" evicting pod "dns-operator-6d48cbff67-vrrsw" evicting pod "router-default-6fc798b98b-9m6kh" evicting pod "prometheus-adapter-5b77ffdd5f-hzqrp" evicting pod "alertmanager-main-1" evicting pod "prometheus-k8s-0" evicting pod "network-check-source-66c7fbb86-2r78z" -
Espere a que finalice el drenaje y, a continuación, siga estos pasos para sustituir el nodo de trabajador.
Actualizar el nodo trabajador
[Actualización importante] {: tag-red} Actualización menor
-
Liste los nodos trabajadores utilizando
ibmcloud oc worker lsy busque el nodo trabajador que ha acordonado y drenado en el paso anterior.ibmcloud oc worker ls -c CLUSTERSalida de ejemplo
ID Primary IP Flavor State Status Zone Version kube-c85ra07w091uv4nid9ug-vpcoc-default-000001c1 10.241.128.4 bx2.4x16 normal Ready us-east-3 4.8.29_1544_openshift* kube-c85ra07w091uv4nid9ug-vpcoc-default-00000288 10.241.0.4 bx2.4x16 normal Ready us-east-1 4.8.29_1544_openshift* kube-c85ra07w091uv4nid9ug-vpcoc-default-00000352 10.241.64.4 bx2.4x16 normal Ready us-east-2 4.8.29_1544_openshift* -
Actualice el nodo trabajador.
ibmcloud oc worker update -c CLUSTER --worker kube-***Salida de ejemplo
The replacement worker node is created in the same zone with the same flavor, but gets new public or private IP addresses. During the replacement, all pods might be rescheduled onto other worker nodes and data is deleted if not stored outside the pod. To avoid downtime, ensure that you have enough worker nodes to handle your workload while the selected worker nodes are being replaced. Replace worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288? [y/N]> y Deleting worker node kube-c85ra07w091uv4nid9ug-cluster-default-00000288 and creating a new worker node in cluster -
Espera a que se aprovisione el nodo de sustitución y, a continuación, enumera tus nodos de trabajo. Tenga en cuenta que este proceso puede tardar 20 minutos o más.
oc get nodesSalida de ejemplo
NAME STATUS ROLES AGE VERSION 10.241.0.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.128.4 Ready master,worker 22d v1.21.6+bb8d50a 10.241.64.4 Ready master,worker 22d v1.21.6+bb8d50a
Limpiar los recursos del nodo antiguo
[Actualización importante] {: tag-red} Actualización menor
-
Vaya al proyecto
openshift-storage.oc project openshift-storage -
Elimine el OSD anómalo del clúster. Puede especificar varios OSD anómalos si es necesario:
oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -El valor
FAILED_osd_ides el entero en el nombre de pod inmediatamente después del prefijorook-ceph-osd. El valorFORCE_OSD_REMOVALdebe cambiarse atrueen clústeres que solo tienen tres OSD, o clústeres con espacio insuficiente para restaurar las tres réplicas de los datos después de eliminar el OSD. -
Verifique que el OSD se ha eliminado correctamente comprobando el estado del pod ocs-osd-removed-job.
oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage -
Verifique que la eliminación de OSD se ha completado.
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Salida de ejemplo
2023-03-10 06:50:04.501511 I | cephosd: completed removal of OSD 0 -
Identifique el volumen persistente (PV) asociado con la reclamación de volumen persistente (PVC) del nodo antiguo:
oc get pv -L kubernetes.io/hostname | grep localblock | grep ReleasedSi hay un PV en estado Liberado, suprímalo:
oc delete pv <persistent_volume>
Añadir los nuevos nodos de almacenamiento
[Actualización importante] {: tag-red} Actualización menor
- Espere a que los pods de OpenShift Data Foundation se desplieguen en el nuevo nodo de trabajador. Verifique que se hayan creado los volúmenes persistentes de OSD y que todos los pods estén en un estado
Running.oc get pv oc get ocscluster oc get pods -n openshift-storage - Verifique que todos los demás pods de OpenShift Data Foundation necesarios estén en estado En ejecución.
Salida de ejemplo:oc get pod -n openshift-storage | grep monrook-ceph-mon-a-cd575c89b-b6k66 2/2 Running 0 38m rook-ceph-mon-b-6776bc469b-tzzt8 2/2 Running 0 38m rook-ceph-mon-d-5ff5d488b5-7v8xh 2/2 Running 0 4m8s - Verifique que los nuevos pods de OSD se estén ejecutando en el nodo de sustitución:
oc get pods -o wide -n openshift-storage| egrep -i <new_node_name> | egrep osd - Identifique el despliegue del pod de
crashcollector.oc get deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - Si existe un despliegue de
crashcollector, suprímalo.oc delete deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - Suprima el trabajo de eliminación de ocs-osd.
Salida de ejemplo:oc delete -n openshift-storage job ocs-osd-removal-jobjob.batch "ocs-osd-removal-job" deleted
Actualizar el complemento OpenShift Data Foundation
Actualización importante
- Compruebe la versión existente.
ibmcloud oc cluster addon ls --cluster CLUSTER - Actualice el complemento.
ibmcloud oc cluster addon update openshift-data-foundation --cluster CLUSTER --version VERSION - Comprueba que el complemento esté actualizado.
ibmcloud oc cluster addon ls --cluster CLUSTER
Actualizar el recurso de clúster
Actualización importante
-
Consigue el nombre de tu recurso
ocscluster.oc get ocsclusterSalida de ejemplo
NAME AGE ocscluster-vpc 19d -
Ejecuta el siguiente comando para editar tu recurso
ocscluster.oc edit ocscluster OCS-CLUSTER-NAME -
Establece el parámetro
ocsUpgradeentrue.... spec: billingType: hourly monSize: 20Gi autoDiscoverDevices: true numOfOsd: 1 ocsUpgrade: true osdSize: 250Gi status: storageClusterStatus: Decreasing the capacity not allowed -
Guarde y cierre el archivo.
-
Espera a que finalice la actualización.
-
Verifique que los recursos
storageclusterycephclusterse hayan desplegado correctamente.oc get storagecluster -n openshift-storage NAME AGE PHASE EXTERNAL CREATED AT VERSION ocs-storagecluster 43h Ready 2023-06-21T09:22:00Z 4.11.0oc get cephcluster -n openshift-storage NAME DATADIRHOSTPATH MONCOUNT AGE PHASE MESSAGE HEALTH EXTERNAL ocs-storagecluster-cephcluster /var/lib/rook 3 43h Ready Cluster created successfully HEALTH_OKoc get csv -n openshift-storage NAME DISPLAY VERSION REPLACES PHASE mcg-operator.v4.11.8 NooBaa Operator 4.11.8 mcg-operator.v4.11.7 Succeeded ocs-operator.v4.11.8 OpenShift Container Storage 4.11.8 ocs-operator.v4.11.7 Succeeded odf-csi-addons-operator.v4.11.8 CSI Addons 4.11.8 odf-csi-addons-operator.v4.11.7 Succeeded odf-operator.v4.11.8 OpenShift Data Foundation 4.11.8 odf-operator.v4.11.7 Succeeded