En este documento, se muestra cómo configurar un valor de tiempo de espera en caso de que el vaciado de un nodo de clúster infrinja un presupuesto de interrupción del Pod (PDB).
Cuando se vacía un nodo, se deben finalizar todos los Pods. De forma predeterminada, si la finalización de un Pod infringe un PDB, se bloquea el vaciado del nodo.
En algunas situaciones, es posible que desees configurar un tiempo máximo que el vaciado de un nodo puede bloquearse por un incumplimiento del PDB. Por ejemplo, es posible que desees configurar un valor de tiempo de espera antes de comenzar una actualización del clúster. También es posible que debas configurar un valor de tiempo de espera para un nodo que se encuentra bloqueado por un incumplimiento de PDB.
Establece un valor de tiempo de espera
Cada nodo está representado por un objeto Machine.
Enumera los objetos Machine del clúster:
kubectl --kubeconfig CLUSTER_KUBECONFIG get machines
Reemplaza CLUSTR_KUBECONIFG por la ruta de acceso del archivo kubeconfig del clúster.
Resultado de ejemplo:
my-node-pool-7f864959cd-cw472 my-node-pool-7f864959cd-kh86m my-node-pool-7f864959cd-wtpvx
Abre un objeto Machine para editarlo:
kubectl --kubeconfig CLUSTER_KUBECONFIG edit machine MACHINE_NAME
Reemplaza MACHINE_NAME por el nombre del objeto Machine.
En el editor, agrega esta anotación:
onprem.cluster.gke.io/pdb-violation-timeout: TIMEOUT
Reemplaza TIMEOUT por una string que especifique la duración del tiempo de espera. Las unidades de tiempo válidas son “s”, “m” y “h”. Algunos ejemplos de valores de tiempo son “1h”, “1h30m”, “10m” y “100s”.
Si estableces el valor del tiempo de espera en “0s”, los incumplimientos de PDB nunca agotarán el tiempo de espera. Esto es igual que el comportamiento predeterminado.
Ejemplo:
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"
Cierra la sesión de edición.
Actualizaciones progresivas
Durante una actualización progresiva, se crea primero una máquina de aumento nueva. Luego, el nodo antiguo se vacía y, una vez que se expulsan todos los Pods, se borran los objetos Machine y Node anteriores. La anotación del tiempo de espera de incumplimiento de PDB no se conserva en el objeto Machine recién creado.