Atualização de nós de trabalho do Classic que utilizam o Data Foundation d OpenShift
Infraestrutura clássica
Para clusters Classic com uma solução de armazenamento como o OpenShift Data Foundation, é necessário isolar, esvaziar e substituir cada nó de trabalho sequencialmente. Se você implementou o OpenShift Data Foundation a um subconjunto de nós do
trabalhador em seu cluster, depois de substituir o nó do trabalhador, você deverá editar o recurso ocscluster para incluir o novo nó do trabalhador.
O tutorial a seguir cobre as atualizações do nó do trabalhador principal e secundário..
- Grande atualização
- Conclua as etapas com esse rótulo para aplicar uma atualização principal, por exemplo se você estiver atualizando seus nós do trabalhador para uma nova versão principal, como de
4.11para4.12, bem como OpenShift Data Foundation de4.11para4.12. - Pequena atualização
- Conclua as etapas com esse rótulo para aplicar uma atualização de correção, por exemplo se você estiver atualizando de
4.12.15_1542_openshiftpara4.12.16_1544_openshiftenquanto mantém o OpenShift Data Foundation na versão4.12.
Pular versões durante uma atualização, como de 4.8 para não 4.12 é suportado.
Antes de atualizar os nós do trabalhador, certise-se de fazer backup de seus dados do app. Também, planeje a conclusão das etapas a seguir para um nó do trabalhador de cada vez. Repita as etapas para cada nó do trabalhador que deseja atualizar.
Atualizar o cluster principal
Grande atualização
- Se você estiver atualizando seus nós do trabalhador para uma nova versão principal, como de
4.11para4.12, atualize o cluster mestre primeiro.
Exemplo de comando: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 - Aguarde até que a atualização principal seja concluída
Determine quais nós do trabalhador você deseja atualizar
[Atualização importante] {: tag-red} Atualização menor
-
Liste os nós do trabalhador usando o comando
oc get nodese determinando quais nós do trabalhador você deseja atualizaroc get nodesExemplo de saída
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
Reduzir a capacidade do OpenShift Data Foundation
[Atualização importante] {: tag-red} Atualização menor
- Para cada nó do trabalhador localizado na etapa anterior, localize as implementações
rook-ceph-monerook-ceph-osd.oc get pods -n openshift-storage -o wide | grep -i <node_name> - Reduza a capacidade das implementações localizadas na etapa 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 e drene o nó do trabalhador
[Atualização importante] {: tag-red} Atualização menor
-
Bloqueie o nó. O bloqueio do nó impede que quaisquer pods sejam programados neste nó.
oc adm cordon NODE_NAMEExemplo de saída
node/10.241.0.4 cordoned -
Drene o nó para remover todos os pods. Ao drenar o nó do trabalhador, os pods se movem para os outros nós do trabalhador garantindo que não haja tempo de inatividade. A drenagem também garante que não haja interrupção do orçamento de disrupção do pod.
oc adm drain NODE_NAME --force --delete-emptydir-data --ignore-daemonsetsExemplo de saída
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" -
Aguarde a conclusão da drenagem e, em seguida, conclua as etapas a seguir para substituir o nó do trabalhador.
Atualizar o nó do trabalhador
[Atualização importante] {: tag-red} Atualização menor
-
Listar seus nós do trabalhador usando o
ibmcloud oc worker lse localizar o nó do trabalhador que você isolou e drenou na etapa anterior.ibmcloud oc worker ls -c CLUSTERExemplo de saída
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* -
Atualizar o nó do trabalhador.
ibmcloud oc worker update -c CLUSTER --worker kube-***Exemplo de saída
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 -
Aguarde até que o nó substituto seja provisionado e, em seguida, liste seus nós de trabalho. Observe que esse processo pode levar 20 minutos ou mais.
oc get nodesExemplo de saída
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
Limpar os recursos do nó antigo
[Atualização importante] {: tag-red} Atualização menor
-
Navegue para o projeto do
openshift-storageoc project openshift-storage -
Remova o OSD com falha do cluster É possível especificar vários OSDs com falha se necessário:
oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=<failed_osd_id> -p FORCE_OSD_REMOVAL=true | oc create -f -O valor
FAILED_osd_idé o número inteiro no nome do pod imediatamente após o prefixorook-ceph-osd. O valorFORCE_OSD_REMOVALdeve ser mudado paratrueem clusters que tenham apenas três OSDs ou clusters com espaço insuficiente para restaurar todas as três réplicas dos dados após o OSD ser removido... -
Verifique se o OSD foi removido com sucesso, verificando o status do pod ocs-osd-removal-job
oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage -
Verifique se a remoção do OSD foi concluída
oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'Exemplo de saída
2023-03-10 06:50:04.501511 I | cephosd: completed removal of OSD 0 -
Identifique o Persistent Volume (PV) associado à Persistent Volume Claim (PVC) do nó antigo:
oc get pv -L kubernetes.io/hostname | grep localblock | grep ReleasedSe houver um PV no estado Liberado, exclua-o:.
oc delete pv <persistent_volume>
Inclua os novos nós de armazenamento
[Atualização importante] {: tag-red} Atualização menor
- Aguarde a implementação dos pods do OpenShift Data Foundation no novo trabalhador. Verifique se os volumes persistentes do OSD foram criados e se todos os pods estão em um estado
Runningoc get pv oc get ocscluster oc get pods -n openshift-storage - Verifique se todos os outros pods necessários do OpenShift do Data Foundation estão no estado Em Execução
Saída de exemplo: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 se os novos pods OSD estão em execução no nó de substituição:
oc get pods -o wide -n openshift-storage| egrep -i <new_node_name> | egrep osd - Identifique a implementação do pod do
crashcollectoroc get deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - Se houver uma implementação existente do
crashcollector, exclua-aoc delete deployment --selector=app=rook-ceph-crashcollector,node_name=NODE-NAME -n openshift-storage - Exclua o ocs-osd-removal-job
Saída de exemplo:oc delete -n openshift-storage job ocs-osd-removal-jobjob.batch "ocs-osd-removal-job" deleted
Atualize o complemento do OpenShift Data Foundation
Grande atualização
- Verifique a versão existente.
ibmcloud oc cluster addon ls --cluster CLUSTER - Atualize o complemento.
ibmcloud oc cluster addon update openshift-data-foundation --cluster CLUSTER --version VERSION - Verifique se o complemento está atualizado.
ibmcloud oc cluster addon ls --cluster CLUSTER
Atualize seu recurso de cluster
Grande atualização
-
Obtenha o nome do seu recurso do
ocscluster.oc get ocsclusterExemplo de saída
NAME AGE ocscluster-vpc 19d -
Execute o comando a seguir para editar seu recurso
ocscluster.oc edit ocscluster OCS-CLUSTER-NAME -
Defina o parâmetro
ocsUpgradecomotrue``.... spec: billingType: hourly monSize: 20Gi autoDiscoverDevices: true numOfOsd: 1 ocsUpgrade: true osdSize: 250Gi status: storageClusterStatus: Decreasing the capacity not allowed -
Salve e feche o arquivo.
-
Aguarde até que a atualização seja concluída.
-
Verifique se os recursos
storageclusterecephclusterestão implementados corretamente.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