Configurar o tempo limite de violação do PDB

Este documento mostra como configurar um valor de tempo limite caso a diminuição de um nó do cluster viole um orçamento de interrupção do pod (PDB).

Quando um nó é drenado, todos os pods nele precisam ser encerrados. Por padrão, se o encerramento de um pod violar um PDB, o processo de drenagem do nó será bloqueado.

Em algumas situações, pode ser útil configurar um tempo máximo para drenar um nó por uma violação de PDB. Por exemplo, talvez você queira configurar um valor de tempo limite antes de iniciar uma atualização ou upgrade de cluster. Ou então, talvez seja necessário configurar um valor de tempo limite para um nó que está atualmente com a filtragem bloqueada por uma violação de PDB.

Definir um valor de tempo limite

Cada nó é representado por um objeto Machine.

Liste os objetos de máquina no cluster:

kubectl --kubeconfig CLUSTER_KUBECONFIG get machines

Substitua CLUSTR_KUBECONIFG pelo caminho do arquivo kubeconfig do cluster.

Exemplo de saída:

my-node-pool-7f864959cd-cw472
my-node-pool-7f864959cd-kh86m
my-node-pool-7f864959cd-wtpvx

Abra um objeto Machine para edição:

kubectl --kubeconfig CLUSTER_KUBECONFIG edit machine MACHINE_NAME

Substitua MACHINE_NAME pelo nome do objeto da máquina.

No editor, adicione esta anotação:

onprem.cluster.gke.io/pdb-violation-timeout: TIMEOUT

Substitua TIMEOUT por uma string que especifica a duração do tempo limite. As unidades válidas são "s", "m", "h". Exemplos de valores de tempo são "1h", "1h30m", "10m" e "100s".

Se você definir o valor de tempo limite como "0s", as violações de PDB nunca expirarão. Esse é o mesmo comportamento padrão.

Exemplo:

apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
metadata:
  annotations:
    kubelet-version: 1.23.5-gke.1502
    onprem.cluster.gke.io/gke-on-prem-version: 1.12.0-gke.430
    vm-ip-address: 203.0.113.2
    onprem.cluster.gke.io/pdb-violation-timeout: "5m"

Fechar a sessão de edição.

Atualizações graduais

Durante uma atualização gradual, uma nova máquina de sobretensão é criada primeiro. Em seguida, o nó antigo é drenado e, depois que todos os pods nele são removidos, o objeto antigo da máquina e o objeto do nó são excluídos. A anotação de tempo limite de violação do PDB não persiste no objeto de máquina recém-criado.