Colocar nós no modo de manutenção

Quando você precisar reparar ou manter os nós, primeiro coloque-os no modo de manutenção. Colocar nós no modo de manutenção drena os pods/cargas de trabalho com segurança e exclui os nós da programação de pods. No modo de manutenção, é possível trabalhar nos nós sem o risco de interromper o tráfego dos pods.

Os clusters do Anthos em bare metal oferecem uma maneira de colocar nós em modo de manutenção. Essa abordagem permite que outros componentes do cluster saibam corretamente que o nó está no modo de manutenção. Ao colocar um nó no modo de manutenção, nenhum pod adicional pode ser programado no nó, e os pods existentes são interrompidos.

Em vez de usar o modo de manutenção, é possível usar manualmente os comandos do Kubernetes, como kubectl cordon e kubectl drain, em um nó específico. Se você executar clusters do Anthos em bare metal versão 1.12.0 (anthosBareMetalVersion: 1.12.0) ou anterior, consulte o problema conhecido em Nós não restritos se você não usar o procedimento do modo de manutenção

Escolha os nós que você quer colocar no modo de manutenção especificando os intervalos de IPs dos nós selecionados em maintenanceBlocks no arquivo de configuração do cluster. Os nós escolhidos precisam estar prontos e funcionando no cluster.

Para colocar nós no modo de manutenção:

  1. Edite o arquivo de configuração do cluster para selecionar os nós que você quer colocar no modo de manutenção.

    É possível editar o arquivo de configuração com um editor de sua preferência ou editar o recurso personalizado do cluster diretamente executando o seguinte comando:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Substitua:

    • CLUSTER_NAMESPACE: o namespace do cluster.
    • CLUSTER_NAME: o nome do cluster.
  2. Adicione a seção maintenanceBlocks ao arquivo de configuração do cluster para especificar um único endereço IP ou um intervalo de endereços para os nós que você quer colocar no modo de manutenção.

    O exemplo a seguir mostra como selecionar vários nós especificando um intervalo de endereços IP:

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. Salve e aplique a configuração atualizada do cluster.

    Os clusters do Anthos em bare metal começam a colocar os nós no modo de manutenção.

  4. Execute o seguinte comando para ver o status dos nós no cluster:

    kubectl get nodes -n CLUSTER_NAME
    

    A resposta é semelhante a esta:

    NAME                              STATUS                     ROLES    AGE     VERSION
    user-anthos-baremetal-01          Ready                      master   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-04          Ready                      <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-05          Ready,SchedulingDisabled   <none>   2d22h   v1.17.8-gke.16
    user-anthos-baremetal-06          Ready                      <none>   2d22h   v1.17.8-gke.16
    

    O status SchedulingDisabled indica que um nó está no modo de manutenção.

  5. Execute o seguinte comando para ver o número de nós no modo de manutenção:

    kubectl get nodepools
    

    A resposta será semelhante a esta:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    Na coluna UNDERMAINTENANCE neste exemplo, vemos que um nó está no modo de manutenção.

    Os clusters do Anthos em bare metal também adicionam os seguintes taints aos nós quando eles são colocados no modo de manutenção:

    • baremetal.cluster.gke.io/maintenance:NoExecute
    • baremetal.cluster.gke.io/maintenance:NoSchedule

Para remover nós do modo de manutenção:

  1. Edite o arquivo de configuração do cluster para limpar os nós que você quer remover do modo de manutenção.

    É possível editar o arquivo de configuração com um editor de sua preferência ou editar o recurso personalizado do cluster diretamente executando o seguinte comando:

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME
    

    Substitua:

    • CLUSTER_NAMESPACE: o namespace do cluster.
    • CLUSTER_NAME: o nome do cluster.
  2. Edite os endereços IP para remover nós específicos do modo de manutenção ou remova a seção maintenanceBlocks para remover todos os nós do modo de manutenção.

  3. Salve e aplique a configuração atualizada do cluster.

  4. Use comandos kubectl para verificar o status dos nós.