Escribe sobre la corrupción y la tolerancia en k8s

En Kubernetes, puede usar taints (manchas) para marcar nodos para evitar que los pods se programen en nodos inadecuados. La contaminación está en el nivel de nodo y se pueden especificar diferentes niveles y los niveles de tolerancia correspondientes para controlar la programación de los pods.

Los niveles de contaminación incluyen:

  • NoSchedule: los pods no se programarán en nodos con esta corrupción.
  • PreferNoScheduleNota: no se preferirá que los pods se programen en un nodo con esta corrupción, pero se pueden programar en este nodo si no hay otros nodos disponibles.
  • NoExecute: si ya existe un pod con esta corrupción en el nodo, el pod será desalojado.

Los niveles de tolerancia correspondientes incluyen:

  • NoSchedule: Los pods no se programarán en nodos con esta contaminación a menos que el Pod tenga un nivel de tolerancia que coincida con la contaminación.
  • PreferNoSchedule: los pods se pueden programar en nodos con esta corrupción, pero se considerarán los pods con un nivel de tolerancia más alto.
  • NoExecute: los pods no se ven afectados si ya se están ejecutando en el nodo.

Puede usar el comando para agregar una corrupción a un nodo kubectl taint nodes node-name taint-key=taint-value:taint-effect, donde taint-keyy taint-valuedefinir el nombre y el valor de la corrupción, y taint-effectdefinir el nivel de la corrupción. Por ejemplo, se agrega una mancha con nombre , valor y nivel kubectl taint nodes node-1 gpu=true:NoScheduleal nodo llamado .node-1gputrueNoSchedule

Los niveles de tolerancia se pueden especificar mediante campos en el archivo YAML del Pod tolerations. Por ejemplo, el siguiente archivo YAML muestra cómo usar los niveles de tolerancia en el archivo YAML de un Pod:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx:latest
  tolerations:
  - key: gpu
    value: "true"
    effect: NoSchedule
    tolerationSeconds: 3600

En el ejemplo anterior, tolerationsel campo define una regla de tolerancia, es decir, el Pod tiene una regla gpu=truecon un nivel de NoScheduley un nivel de tolerancia de segundos. 3600Esto significa que si un pod debe ejecutarse en un nodo con esa corrupción, debe tener un nivel de tolerancia que coincida con la corrupción.

Use niveles de contaminación y tolerancia para marcar nodos y controlar la programación de los pods para garantizar el rendimiento y la disponibilidad de la aplicación.

Supongo que te gusta

Origin blog.csdn.net/qq_44370158/article/details/132170844
Recomendado
Clasificación