Tengo un clúster de Kubernetes con muchos grupos de nodos. A veces, la implementación falla porque el grupo de nodos seleccionado por Kubernetes no tiene suficientes recursos disponibles.
¿Hay alguna forma de obligar a Kubernetes a seleccionar un grupo de nodos con la cantidad de recursos que solicitó todo el conjunto de pods?
Respuesta1
Puede restringir un Pod para que solo pueda ejecutarse en un conjunto particular de nodos. Hay varias formas de hacerlo y el método recomendado es utilizar selectores de etiquetas.
Puede utilizar cualquiera de los siguientes métodos para elegir dónde Kubernetes programa Pods específicos:
selector de nodoscoincidencia de campos contraetiquetas de nodo
Afinidad y antiafinidad
campo nombre de nodo
Aselector de nodosespecifica un mapa de pares clave/valor que se definen mediante etiquetas personalizadas en nodos y selectores especificados en pods.
Para que el pod sea elegible para ejecutarse en un nodo, el pod debe tener el mismo selector de nodo de clave/valor que la etiqueta del nodo.
Nota: No puede agregar un selector de nodos directamente a un pod programado existente.
nodeSelector es la forma más sencilla de restringir Pods a nodos con etiquetas específicas, mientras queAfinidad y antiafinidadexpande los tipos de restricciones que puede definir. La característica de afinidad consta de dos tipos de afinidad:
- La afinidad de nodo funciona como el campo nodeSelector pero es más expresiva y le permite especificar reglas suaves.
- La afinidad/antiafinidad entre pods le permite restringir los pods con respecto a las etiquetas de otros pods.
Para el nombre de nodo puedesreferirseal enlace para más información.
La afinidad de nodo es una propiedad de los Pods que los atrae a un conjunto de nodos y, como dicho nodeselector, se utiliza para restringir los pods. Entonces, puedes usarContaminaciones y tolerancias.
Las manchas son opuestas porque permiten que un nodo rechace un conjunto de vainas. Las tolerancias se aplican a los pods y permiten que los pods se programen en nodos con taints coincidentes. Los taints y las tolerancias trabajan juntos para garantizar que los pods no se programen en nodos inapropiados. Se aplican una o más manchas a un nodo. Esto marca que el nodo debe rechazar cualquier pod que no tolere la contaminación.
Puedes consultar elEnlacespara más información sobreContaminaciones y tolerancia.