Encerrando e Substituindo Nós de Trabalho

Descubra como encerrar e substituir um nó de trabalho em um cluster do Kubernetes que você criou usando o Kubernetes Engine (OKE).

Observação

Você só pode reiniciar nós para encerrar e substituir nós de trabalho ao usar clusters aprimorados. Consulte Trabalhando com Clusters Aprimorados e Clusters Básicos.

Você pode reiniciar nós para encerrar e substituir nós por formas de máquina virtual e bare metal.

Você pode reiniciar nós para encerrar e substituir nós gerenciados.

Às vezes, o encerramento e a substituição de nós gerenciados são a melhor maneira de resolver um problema com as instâncias de computação que hospedam os nós. Especificamente, quando um problema pode ser resolvido simplesmente encerrando uma instância existente e substituindo-a por uma nova instância que tenha as mesmas propriedades ou que tenha propriedades diferentes derivadas de propriedades alteradas do pool de nós (como um sistema operacional do host alterado ou uma forma de computação alterada). Por exemplo:

  • Para resolver qualquer divergência de configuração que possa ter ocorrido desde que a instância foi iniciada originalmente.
  • Para resolver quaisquer falhas de hardware subjacentes.

Usando o Kubernetes Engine, você pode encerrar e substituir as instâncias de computação que hospedam nós gerenciados das seguintes maneiras:

  • Você pode reiniciar o pool de nós que contém os nós gerenciados e selecionar a opção Substituir nós, conforme descrito nesta seção.
  • Você pode reiniciar e substituir nós gerenciados específicos, conforme descrito nesta seção.
  • Você pode excluir um nó gerenciado específico. Desde que você não indique que deseja que a exclusão do nó reduza o pool de nós, o nó que você excluir será substituído por um novo nó (consulte Excluindo Nós de Trabalho).

Quando você reinicia, encerra e substitui um nó gerenciado, o Kubernetes Engine cancela e drena automaticamente o nó de trabalho antes de encerrá-lo. A instância de computação que hospeda o nó gerenciado é encerrada e uma nova instância é criada. Observe que a nova instância tem um novo OCID e endereço de rede.

Se você reiniciar todos os nós gerenciados em um pool de nós para encerrá-los e substituí-los, quando novas instâncias tiverem um estado Em Execução, todas as atualizações nas propriedades do pool de nós serão aplicadas a todos os nós de trabalho no pool de nós. Observe que, se você reiniciar um nó gerenciado individual para encerrá-lo e substituí-lo, todas as atualizações nas propriedades do pool de nós serão aplicadas ao nó de substituição.

Além de permitir que você execute a manutenção de rotina do nó de trabalho, o encerramento e a substituição de nós gerenciados também podem ser úteis quando você quiser:

Observe as seguintes considerações ao reiniciar para desligar e substituir nós de trabalho:

  • Você pode selecionar um pool de nós gerenciados para reiniciar, encerrar e substituir todos os nós gerenciados dentro dele. Você também pode reiniciar, encerrar e substituir nós gerenciados individuais.
  • Não é possível reiniciar nós autogerenciados para encerrá-los e substituí-los.

Balanceando a disponibilidade e o custo do serviço ao encerrar e substituir nós gerenciados em pools de nós

Quando você reinicia todos os nós gerenciados em um pool de nós para encerrá-los e substituí-los, o Kubernetes Engine usa as definições de Cordon e drenagem especificadas para o pool de nós e segue duas estratégias:

  • Crie novos nós (adicionais) e remova os nós existentes: O Kubernetes Engine adiciona um nó (ou nós) adicional ao pool de nós com propriedades atualizadas. Quando o nó adicional está ativo, o Kubernetes Engine conecta um nó existente, drena o nó e o remove do pool de nós. Essa estratégia mantém a disponibilidade do serviço, mas custa mais.
  • Remova os nós existentes e crie novos nós: O Kubernetes Engine conecta um nó (ou nós) existente para torná-lo indisponível, drena o nó e remove o nó do pool de nós. Quando o nó é removido, o Kubernetes Engine adiciona um novo nó ao pool de nós para substituir o nó que foi removido. Essa estratégia custa menos, mas pode comprometer a disponibilidade do serviço.

Para adaptar o comportamento do Kubernetes Engine para atender aos seus próprios requisitos de disponibilidade e custo de serviço, controle e balanceie as duas estratégias especificando valores para maxSurge e maxUnavailable. Para obter mais informações, consulte Balancing Service Availability and Cost When Cycling Managed Nodes in Node Pools.

Cordonamento e drenagem ao encerrar e substituir nós

Quando você seleciona um pool de nós e especifica que deseja encerrar e substituir seus nós de trabalho, o Kubernetes Engine automaticamente cancela, drena e encerra os nós gerenciados existentes. O Kubernetes Engine usa as opções de Cordon e drenagem especificadas para o pool de nós.

Quando você seleciona um nó gerenciado individual e especifica que deseja encerrá-lo e substituí-lo, pode especificar as opções Cordon e dreno. As opções Cordon e dreno especificadas para o nó gerenciado substituem as opções Cordon e dreno especificadas para o pool de nós.

Para obter mais informações, consulte Cordonando e Drenando Nós Gerenciados Antes de Encerrar ou Encerrar

Encerrando e Substituindo Nós de Trabalho

  • Para encerrar e substituir todos os nós de trabalho em um pool de nós gerenciados:

    1. Na página da lista Clusters, selecione o nome do cluster que contém os nós de trabalho que você deseja encerrar e substituir. Se precisar de ajuda para localizar a página de lista ou o cluster, consulte Listando Clusters.
    2. Selecione a guia Pools de Nós e, em seguida, selecione o nome do pool de nós que contém os nós de trabalho que você deseja encerrar e substituir.
    3. Selecione Editar no menu Ações e altere uma propriedade não usada do pool de nós (por exemplo, especificando um label do Kubernetes com uma chave foo e um valor bar).

      Note que a propriedade que você altera é irrelevante, mas você deve alterar pelo menos uma propriedade.

    4. No menu Ações, selecione Nós do ciclo.

      Recomendado: Aproveite os orçamentos para interrupção de pods conforme apropriado para seu aplicativo para garantir que haja um número suficiente para réplicas de pods em execução durante toda a operação. Para obter mais informações, consulte Especificando um Orçamento de Interrupção para seu Aplicativo na documentação do Kubernetes.

    5. Na caixa de diálogo Nós do ciclo:

      1. Selecione Substituir nós na lista Opções de ciclismo.
      2. Controle o número de nós a serem atualizados em paralelo e equilibre a disponibilidade e o custo do serviço, especificando:
        • Aumento máximo (Número máximo ou porcentagem de nós adicionais): O número máximo de nós adicionais a serem permitidos temporariamente no pool de nós durante a operação (expresso como um inteiro ou como uma porcentagem). Nós adicionais são nós acima do número especificado na propriedade Contagem de nós do pool de nós. Se você especificar um número inteiro para o número de nós adicionais, não especifique um número maior que o valor de Contagem de nós.
        • Máximo de nós indisponíveis (Número máximo ou porcentagem de nós indisponíveis): O número máximo de nós a serem indisponíveis no pool de nós durante a operação (expresso como um inteiro ou como uma porcentagem). Se você especificar um número inteiro para o número de nós indisponíveis, não especifique um número maior que o valor de Contagem de nós.

        Consulte Balanceando a disponibilidade e o custo do serviço ao encerrar e substituir nós gerenciados em pools de nós.

      3. Selecione Nós do ciclo para iniciar a operação.

      O Kubernetes Engine usa as opções de Cordon e drenagem especificadas para que o pool de nós conecte e drene os nós de trabalho. Para obter mais informações, consulte Cordonando e Drenando Nós Gerenciados Antes de Encerrar ou Encerrar.

    6. Monitore o andamento da operação exibindo o status da solicitação de serviço associada na guia Solicitações de serviço (consulte Obtendo Detalhes de uma Solicitação de Serviço).

    Para encerrar e substituir um nó gerenciado específico:

    1. Na página da lista Clusters, selecione o nome do cluster que contém o nó de trabalho que você deseja reinicializar. Se precisar de ajuda para localizar a página de lista ou o cluster, consulte Listando Clusters.
    2. Selecione a guia Pools de Nós e, em seguida, selecione o nome do pool de nós que contém o nó de trabalho que você deseja encerrar e substituir.
    3. Na guia Nós, selecione Nó do ciclo no menu Ações (três pontos) ao lado do nó que você deseja encerrar e substituir.

    4. Na caixa de diálogo Nó do ciclo:
      1. Selecione Substituir nó na lista Opções de ciclismo.
      2. Especifique quando e como conectar e drenar o nó de trabalho antes de executar a ação de desligamento e substituição, especificando:

        • Período de tolerância (minutos) da remoção: O período de tempo para permitir o cordonamento e o dreno do nó de trabalho antes de executar a ação. Aceite o padrão (60 minutos, que é o máximo) ou especifique uma alternativa. Por exemplo, você pode permitir que 30 minutos conectem um nó de trabalho e o drenem de suas cargas de trabalho. Para executar a ação imediatamente, sem cordonar e drenar o nó de trabalho, especifique 0 minutos.
        • Forçar desligamento após o período de tolerância: Se os nós de trabalho devem ser desligados no final do período de tolerância de remoção, mesmo que eles não tenham sido conectados e drenados com sucesso. Por padrão, esta opção não está selecionada.

        Consulte Cordonando e Drenando Nós Gerenciados Antes de Encerrar ou Encerrar.

      3. Selecione Nó do ciclo para iniciar a operação.
    5. Monitore o andamento da operação exibindo o status da solicitação de serviço associada na guia Solicitações de serviço (consulte Obtendo Detalhes de uma Solicitação de Serviço).

  • Para encerrar e substituir todos os nós de trabalho em um pool de nós gerenciados

    Para encerrar e substituir todos os nós de trabalho em um pool de nós gerenciados, use o comando oci ce node-pool update e os parâmetros necessários:

    oci ce node-pool update --node-pool-id <node-pool-ocid> --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":[\"INSTANCE_REPLACE\"],\"maximumUnavailable\":<value>,\"maximumSurge\":<value>}" --<property-to-update> <new-value> [OPTIONS]

    em que --<property-to-update> <new-value> é um novo valor para uma propriedade do pool de nós. Note que a propriedade que você altera é irrelevante, mas você deve alterar pelo menos uma propriedade. Observe também que a inclusão de \"cycleModes\":[\"INSTANCE_REPLACE\"] no parâmetro --node-pool-cycling-details é opcional, pois será presumido se não for explicitamente incluído.

    Por exemplo:

    oci ce node-pool update --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"maximumUnavailable\":1,\"maximumSurge\":1}" --initial-node-labels '[{"key": "foo", "value": "bar"}]'

    Para encerrar e substituir um nó gerenciado específico

    Para encerrar e substituir um nó gerenciado específico, use o comando oci ce node-pool delete-node e os parâmetros necessários para excluir um nó e inclua --is-decrement-size false para especificar que você não deseja reduzir o pool de nós:

    oci ce node-pool delete-node --node-pool-id <node-pool-ocid> --node-id <node-ocid> --is-decrement-size false [OPTIONS]
  • Para encerrar e substituir todos os nós de trabalho em um pool de nós gerenciados usando a API do OCI:

    Execute a operação UpdateNodePool para encerrar e substituir todos os nós de trabalho em um pool de nós gerenciados.

    Para encerrar e substituir um nó gerenciado específico usando a API do OCI:

    Execute a operação DeleteNode para encerrar e substituir um nó gerenciado específico usando a API do OCI.