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.