Atualização de hosts designados como nós de trabalho

Atualize os hosts dos nós de trabalho atribuídos aos serviços com o recurso “ Satellite ” ativado para obter as versões mais recentes do OpenShift Container Platform, do sistema operacional e dos patches de segurança.

Os clusters de serviços, que constituem a plataforma subjacente a todos os serviços do IBM Cloud, são criados por serviços como o Code Engine ou o IBM Cloud Object Storage e são mantidos pelo IBM.

O que acontece com meus aplicativos durante uma atualização?
Se executar apps como parte de uma implementação em nós do trabalhador que você atualizar, os apps serão reprogramados em outros nós do trabalhador no cluster. Esses nós de trabalho podem estar em um pool de trabalho diferente ou, caso você tenha nós de trabalho autônomos, os aplicativos podem ser agendados para esses nós autônomos. Para evitar tempo de inatividade para seu app, deve-se assegurar que você tenha capacidade suficiente no cluster para transportar a carga de trabalho.
Como posso controlar quantos nós de trabalho são desativados de cada vez durante uma atualização ou recarga?
Se você precisa de todos os nós do trabalhador para estar em funcionamento, considere anexando e designando hosts adicionais para o seu serviço. Você pode adicionar hosts adicionais em sua localização temporariamente e, em seguida, removê-los quando a atualização estiver concluída.
Além disso, é possível criar um arquivo Kubernetes ( ConfigMap ) que especifique o número máximo de nós de trabalho que podem ficar indisponíveis ao mesmo tempo, por exemplo, durante uma atualização. Os nós do trabalhador são identificados pelos rótulos de nó do trabalhador. É possível usar rótulos fornecidos pela IBM ou rótulos customizados que você incluiu no nó do trabalhador.

Verificar se uma atualização de versão está disponível para hosts de nós do trabalhador

Verifique se há atualizações de versão disponíveis para os hosts dos nós de trabalho atribuídos a um serviço IBM Cloud habilitado para o Satellite, usando a CLI ou o console.

Para revisar as mudanças que estão incluídas em cada atualização de versão, consulte o Log de mudanças de versão para o Red Hat OpenShift on IBM Cloud.

Verificando se uma atualização de versão está disponível com a CLI do IBM Cloud

  1. Efetue login no IBM Cloud. Inclua a opção --sso se tiver uma conta federada.
    ibmcloud login [--sso]
    
  2. Liste os clusters do Satellite em sua conta.
    ibmcloud ks cluster ls --provider satellite
    
  3. Liste os nós do trabalhador no cluster para o qual você deseja atualizar a versão. Na saída, verifique se há um asterisco * com uma mensagem que indica que uma atualização de versão está disponível.
    ibmcloud ks worker ls -c CLUSTER_NAME_OR_ID
    
    Saída de exemplo
    ID                Primary IP       Flavor   State    Status   Zone     Version   
    sat-worker-<ID>   <IP_address>     upi      normal   Ready    zone-1   4.5.35_1534_openshift*   
    * To update to 4.5.37_1537_openshift version, run 'ibmcloud ks worker replace'. Review and make any required version changes before you update: 'https://ibm.biz/upworker'
    

Verificando se uma atualização de versão está disponível no console do IBM Cloud

  1. Faça login no Satellite console.
  2. Clique no local com os hosts que deseja atualizar.
  3. Clique na guia Hosts.
  4. Na lista de hosts, clique no link para o Cluster para o host que você deseja atualizar. Uma nova guia se abre para os detalhes do cluster do Red Hat OpenShift on IBM Cloud.
  5. Clique na guia Nós do trabalhador.
  6. Na coluna “Versão ”, procure um ícone de informação que, ao clicar nele, exiba a mensagem “ Update available ”. Se nenhuma atualização estiver disponível, nenhum ícone estará presente.
  7. Determine se a atualização da versão é uma atualização principal, menor ou de correção.

Identificando os hosts do nó

Determine se seus hosts fazem parte do plano de controle, atribuído a um serviço gerenciado ou anexado ao local.

  1. Liste os hosts de localização e anote os IDs deles. Os hosts do nó do trabalhador não possuem infrastructure listado na coluna Cluster da saída.

    ibmcloud sat host ls --location <location>
    

    Revise a saída de exemplo.

    Name           ID                     State      Status   Zone     Cluster          Worker ID                                              Worker IP   
    satdemo-cp1    0bc3b92f55968a230985   assigned   Ready    zone-1   infrastructure   sat-satdemocp1-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.178   
    satdemo-cp2    999cd38c39ddffe4b672   assigned   Ready    zone-2   infrastructure   sat-satdemocp2-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.183   
    satdemo-cp5    6ca4fd8fcad1fa622aa4   assigned   Ready    zone-3   infrastructure   sat-satdemocp5-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.181   
    satdemo-cp4    1ac2b92f55968a333335   assigned   Ready    zone-1   satdemo-cluster  sat-satdemocp4-2bda578e901b4047c6e48d766cd99bc11a45fddd   169.62.42.180   
    satdemo-cp6    234cd56c78ddffe4b672   assigned   Ready    zone-2   satdemo-cluster  sat-satdemocp6-940134e69c2609c5421b2426a7640fa80569668d   169.62.42.179   
    satdemo-cp3    8fg4ff8faaa1fa622bb5   assigned   Ready    zone-3   satdemo-cluster  sat-satdemocp3-d46581b509357ea4b429fddc38a18b155463bf1c   169.62.42.182  
    
  2. Liste seus hosts atuais que estão designados como nós do trabalhador ao seu serviço IBM Cloud ativado para o Satellite e anote seus IDs.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Revise a saída de exemplo.

    ID                                                        Primary IP     Flavor   State    Status   Zone        Version   
    sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7   10.241.0.4     upi      normal   Ready    us-east-2   4.7.55_1575_openshift   
    sat-satellitei-854beae4556401b5761e34ed849ba64c4b0a674c   10.241.128.4   upi      normal   Ready    us-east-1   4.7.55_1575_openshift   
    sat-satellitei-bf1fc9b135011d5c0d9d500855db6e489d15610b   10.241.64.4    upi      normal   Ready    us-east-3   4.7.55_1575_openshift    
    

Aplicar atualizações de versão em hosts do nó do trabalhador sem descolá-los

Atualize os hosts dos nós de trabalho sem desconectá-los do local, utilizando uma atualização gradual com um ConfigMap.

Antes de Iniciar

  • Verifique se todos os seus nós do trabalhador estão em um estado saudável.
  • Se você estiver usando volumes persistentes de armazenamento de blocos, você deve detetar esses volumes do nó antes de iniciar suas atualizações. Mova os volumes persistentes para um nó do trabalhador diferente que não requer atualizações. Em seguida, cordão e drenem a carga de trabalho do nó do trabalhador para atualizar com o comando kubectl drain NODENAME. Se você não puder mover os volumes de armazenamento de blocos, use as Aplicando atualizações de versão para nós do trabalhador, substituindo hosts.

A aplicação de atualizações nos nós de trabalho pode causar tempo de inatividade para seus aplicativos e serviços. Não execute nenhuma ação no host enquanto o processo de atualização estiver em execução. No máximo 20% de todos os seus nós de trabalho podem ficar indisponíveis durante o processo de atualização.

Aplicar atualizações de versão no nó do trabalhador hospeda um de cada vez

  1. Opcional: Anexar e atribuir hospedeiros extras no cluster de serviços para manipular a capacidade de cálculo enquanto seus hosts existentes estão se atualizando.

  2. Identificar os hosts de nós do trabalhador. Os hosts do nó do trabalhador não possuem infrastructure listados na coluna Cluster da saída, mas em vez disso têm o nome do cluster.

  3. Atualize os nós do trabalhador individualmente executando o comando ibmcloud ks worker update.

    ibmcloud ks worker update -c CLUSTER_NAME_OR_ID --worker WORKER_ID
    
  4. Confirme se a atualização está concluída, revisando a versão do Kubernetes de seus nós do trabalhador.

    kubectl get nodes
    

    Se a atualização falhou, você deve aplicar atualizações de versão por meio da substituição de hosts.

Aplique as atualizações de versão aos hosts do nó do trabalhador com um ConfigMap

É possível apresentar as atualizações para todos os hosts do nó do trabalhador com um ConfigMap Especifique quais nós atualizam usando etiquetas. Você também pode especificar

  1. Opcional: Anexar e atribuir hospedeiros extras no cluster de serviços para manipular a capacidade de cálculo enquanto seus hosts existentes estão se atualizando.

  2. Identificar os hosts de nós do trabalhador. Seus hosts do nó do trabalhador não são listados como Infrastructure.

  3. Visualizar os rótulos de um nó do trabalhador. É possível localizar os rótulos de nó do trabalhador na seção Rótulos de sua saída da CLI. Cada rótulo consiste em um NodeSelectorKey e um NodeSelectorValue. Você pode usar os rótulos para especificar quais nós do trabalhador atualizam.

    kubectl get nodes -o yaml
    

    Saída de exemplo

    labels:
      arch: amd64
      beta.kubernetes.io/arch: amd64
      beta.kubernetes.io/instance-type: upi
      beta.kubernetes.io/os: linux
      failure-domain.beta.kubernetes.io/region: us-east
      failure-domain.beta.kubernetes.io/zone: us-east-2
      ibm-cloud.kubernetes.io/iaas-provider: upi
      ibm-cloud.kubernetes.io/internal-ip: 10.241.0.4
      ibm-cloud.kubernetes.io/machine-type: upi
      ibm-cloud.kubernetes.io/os: REDHAT_8_64
      ibm-cloud.kubernetes.io/region: us-east
      ibm-cloud.kubernetes.io/worker-id: sat-satellitei-5bd83963cdfedc7668c9040879c88113a134c4e7
      ibm-cloud.kubernetes.io/worker-pool-id: cbtljodw089nltg8k210-9a3f763
      ibm-cloud.kubernetes.io/worker-pool-name: default
      ibm-cloud.kubernetes.io/worker-version: 4.7.59_1583_openshift
      ibm-cloud.kubernetes.io/zone: us-east-2
      kubernetes.io/arch: amd64
      kubernetes.io/hostname: satellite-ibm-host-3
      kubernetes.io/os: linux
      node-role.kubernetes.io/master: ""
      node-role.kubernetes.io/worker: ""
      node.kubernetes.io/instance-type: upi
      node.openshift.io/os_id: rhel
      privateVLAN: "1"
      topology.kubernetes.io/region: us-east
      topology.kubernetes.io/zone: us-east-2
    
  4. Crie um ConfigMap e defina as regras de indisponibilidade para seus nós de trabalho. O exemplo a seguir mostra dois cheques: o “ defaultcheck.json ” e um modelo de cheque. É possível usar essa verificação de exemplo para definir regras para todos os nós do trabalhador que não correspondem a nenhuma das verificações definidas no ConfigMap (defaultcheck.json). Use o modelo de verificação para criar a sua própria verificação Para cada verificação, para identificar um nó do trabalhador, deve-se escolher um dos rótulos de nó do trabalhador que você recuperou na etapa anterior.

    Para cada verificação, é possível configurar somente um valor para NodeSelectorKey e NodeSelectorValue. Defina até 10 verificações em um “ ConfigMap ”. Se você incluir mais verificações, elas serão ignoradas.

    Exemplo

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ibm-cluster-update-configuration
      namespace: kube-system
    data:
      drain_timeout_seconds: "120"
      defaultcheck.json: |
        {
          "MaxUnavailablePercentage": 20
        }
      <check_name>: |
        {
          "MaxUnavailablePercentage": <value_in_percentage>,
          "NodeSelectorKey": "<node_selector_key>",
          "NodeSelectorValue": "<node_selector_value>"
        }
    
    drain_timeout_seconds
    Opcional: o tempo limite em segundos para esperar a conclusão do dreno. A drenagem de um nó do trabalhador remove com segurança todos os pods existentes do nó do trabalhador e reagenda os pods em outros nós do trabalhador no cluster. Os valores aceitos são números inteiros no intervalo de 1 a 180. O valor padrão é 30.
    defaultcheck.json
    Quando você atualiza nós do trabalhador em hosts Satellite, apenas 20% dos nós do trabalhador no cluster podem ficar indisponíveis por vez.
    MaxUnavailablePercentage
    O número máximo de nós que podem ficar indisponíveis para uma chave e um valor de rótulo especificados, que são especificados como uma porcentagem. Um nó do trabalhador está indisponível durante o processo de implementação, recarregamento ou provisionamento. Os nós do trabalhador enfileirados são bloqueados de atualização se excedem qualquer porcentagem máxima indisponível definida.
    NodeSelectorKey
    A chave de rótulo do nó do trabalhador para o qual você deseja configurar uma regra. É possível configurar regras para os rótulos padrão que são fornecidos pela IBM, bem como nos rótulos de nó do trabalhador que você criou.
    NodeSelectorValue
    O valor do rótulo que o nó do trabalhador deve ter para ser considerado para a regra que você define.
  5. Crie o configmap em seu cluster.

    kubectl apply -f <filepath/configmap.yaml>
    
  6. Verifique se o arquivo ConfigMap foi criado.

    kubectl get configmap --namespace kube-system
    
  7. Atualize os nós do trabalhador ao listá-los por ID.

    ibmcloud ks worker update --cluster <cluster_name_or_ID> --worker <worker_node1_ID> --worker <worker_node2_ID>
    
  8. Opcional: Verifique os eventos acionados pelo método ConfigMap e quaisquer erros de validação que ocorram. Os eventos podem ser revisados na seção Eventos de sua saída da CLI.

    kubectl describe -n kube-system cm ibm-cluster-update-configuration
    
  9. Confirme se a atualização está concluída, revisando a versão do Kubernetes de seus nós do trabalhador.

    kubectl get nodes
    

    Se a atualização falhou, você deve aplicar atualizações de versão por meio da substituição de hosts.

  10. Verifique se você não tem nós de trabalhador duplicados. Clusters mais antigos podem listar nós de trabalho duplicados com um NotReady status após uma atualização. Para remover duplicatas, consulte Resolução de problemas.

Aplicando atualizações de versão em nós do trabalhador por meio da substituição de hosts

Os hosts não são atualizados automaticamente. Adicione novos hosts e remova os antigos, ou aplique atualizações menores e correções diretamente no sistema.

  1. Liste seus hosts atuais e anote seus IDs. Estes são os hosts para remover depois de anexar hosts atualizados.

    ibmcloud ks worker ls -c <cluster_name_or_ID>
    

    Revise a saída de exemplo.

    ID                                                        Primary IP      Flavor   State    Status   Zone     Version   
    sat-satliberty-5b4c7f3a7bfc14cf58cbb14ad5c08429475274fe   208.43.36.202   upi      normal   Ready    zone-1   4.7.19_1525_openshift*   
    
  2. Anexar novos hosts ao seu local do Satellite. O número de hosts que você anexa deve corresponder ao número de hosts que você deseja atualizar.

  3. Atribua os hosts recém-anexados ao seu recurso do Satellite. Esses hosts recebem automaticamente a atualização ao atribuí-los.

  4. Depois que os novos hosts são atribuídos com sucesso ao seu recurso do Satellite, remova e exclua os hosts antigos que você anotou anteriormente.

Atualizando os hosts do nó do trabalhador no console do Red Hat OpenShift on IBM Cloud

É possível atualizar os hosts do nó do trabalhador usando o console do Red Hat OpenShift on IBM Cloud.

  1. Efetue login no console do IBM Cloud e clique em OpenShift > Clusters.
  2. Clique no cluster em que os hosts que você deseja atualizar são atribuídos e navegue até a página Nós do trabalhador.
  3. Selecione cada host que você deseja atualizar. Depois de selecionar os hosts, aparece uma opção Atualização.
  4. Clique em Atualizar. Na caixa de diálogo que aparece, clique em Atualização novamente. Uma mensagem aparece indicando que a atualização começou com sucesso.
  5. Aguarde enquanto os hosts são atualizados. O processo de atualização para cada host é concluído quando o Status do host retorna para Normal e a nova versão é listada na coluna Versão.

Determinando se a atualização de versão do nó do trabalhador é uma atualização principal, menor ou de correção

O processo de atualização do nó de trabalho é o mesmo para todos os tipos de atualização. Identifique se a atualização é principal, secundária ou um patch.

Para determinar o tipo de atualização que está disponível, compare suas versões atuais do nó do trabalhador com a versão mais recente do worker node fix pack no log de mudanças de versão do Red Hat OpenShift. As principais atualizações são indicadas pelo primeiro dígito no rótulo da versão (4.x.x), atualizações menores são indicadas pelo segundo dígito (x.7.x) e as atualizações de correção são indicadas pelos dígitos finais (x.x.23_1528_openshift). Para obter mais informações sobre atualizações da versão, consulte Informações de versão e ações de atualização.