Gestión de manchas de nodos
Las etiquetas permiten que un nodo repela los pods específicos para evitar que estos pods se programen en el nodo.
Alteraciones
Una mancha es un par de clave y valor asociado con un efecto. Los siguientes efectos están disponibles:
- NoSchedule: Ningún pod podrá programar en el nodo a menos que tenga una tolerancia coincidente. Los pods existentes no serán desalojados del nodo.
- PreferNoSchedule: Kubernetes evita que los pods que no pueden tolerar esta contaminación se programen en el nodo.
- NoExecute: Si el pod se ha estado ejecutando en un nodo, el pod será desalojado del nodo. Si el pod no se ha ejecutado en un nodo, el pod no se programará en el nodo.
Para agregar una manch a un nodo, ejecute el comando kubectl taint node nodename de la siguiente manera:
$ kubectl get node
NAME STATUS ROLES AGE VERSION
192.168.10.170 Ready <none> 73d v1.19.8-r1-CCE21.4.1.B003
192.168.10.240 Ready <none> 4h8m v1.19.8-r1-CCE21.6.1.2.B001
$ kubectl taint node 192.168.10.240 key1=value1:NoSchedule
node/192.168.10.240 tainted
Para ver la configuración de mancha, ejecute los comandos describe y get de la siguiente manera:
$ kubectl describe node 192.168.10.240 Name: 192.168.10.240 ... Taints: key1=value1:NoSchedule ... $ kubectl get node 192.168.10.240 -oyaml apiVersion: v1 ... spec: providerID: 06a5ea3a-0482-11ec-8e1a-0255ac101dc2 taints: - effect: NoSchedule key: key1 value: value1 ...
Para quitar una mancha, ejecute el siguiente comando con un guion (-) agregado después de NoSchedule:
$ kubectl taint node 192.168.10.240 key1=value1:NoSchedule- node/192.168.10.240 untainted $ kubectl describe node 192.168.10.240 Name: 192.168.10.240 ... Taints: <none> ...
En la consola de CCE, también puede gestionar manchas de un nodo en lotes.
- Inicie sesión en la consola de CCE.
- Haga clic en el nombre del clúster, acceda a la página de detalles del clúster y elija Nodes en el panel de navegación. En la página mostrada, seleccione un nodo y haga clic en Manage Labels and Taints.
- En el cuadro de diálogo que se muestra, haga clic en Add batch operations en Batch Operation, elija Add/Update y seleccione Taint.
Ingrese la clave y el valor de la mancha que se agregará, seleccione el efecto de la mancha y haga clic en OK.
Figura 1 Adición de una mancha
- Después de agregar la mancha, compruebe la mancha agregada en los datos del nodo.
Configuración de programación de nodos
Para configurar el ajuste de programación, inicie sesión en la consola de CCE, haga clic en el clúster, elija Nodes en el panel de navegación y haga clic en More > Disable Scheduling en la columna Operation de un nodo de la lista de nodos.
En el cuadro de diálogo que se muestra, haga clic en OK para establecer que el nodo no se puede programar.
Esta operación agregará una mancha al nodo. Puede usar kubectl para ver el contenido de la mancha.
$ kubectl describe node 192.168.10.240
...
Taints: node.kubernetes.io/unschedulable:NoSchedule
...
En la consola de CCE, realice las mismas operaciones de nuevo para quitar la mancha y establecer el nodo para que sea programable.
Tolerancias
Las tolerancias se aplican a los pods y permiten (pero no requieren) que los pods se planifiquen en nodos con las manchas coincidentes.
Las indicaciones y las tolerancias trabajan juntas para garantizar que los pods no estén programados en nodos inapropiados. Se aplican una o más manchas a un nodo. Esto marca que el nodo no debe aceptar ningún pod que no tolere las manchas.
Aquí hay un ejemplo de un pod que usa tolerancias:
apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoSchedule"
En el ejemplo anterior, la etiqueta de tolerancia del pod es clave1=valor1 y el efecto de olor es de NoSchedule. Por lo tanto, el pod puede planificarse en el nodo correspondiente.
También puede configurar tolerancias similares a la siguiente información, que indica que el pod se puede programar en un nodo cuando el nodo tiene la mancha key1:
tolerations: - key: "key1" operator: "Exists" effect: "NoSchedule"