Comando de Taints en Kubernetes

KubernetesKubernetesBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo utilizar el comando kubectl taint, que es una herramienta poderosa en Kubernetes para agregar, modificar y eliminar taints (manchas) en los nodos. Los taints se utilizan para indicar que un nodo tiene ciertas restricciones o requisitos, y esto puede ayudar a controlar la programación de pods en un clúster de Kubernetes.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-9195{{"Comando de Taints en Kubernetes"}} kubernetes/get -.-> lab-9195{{"Comando de Taints en Kubernetes"}} kubernetes/uncordon -.-> lab-9195{{"Comando de Taints en Kubernetes"}} kubernetes/taint -.-> lab-9195{{"Comando de Taints en Kubernetes"}} kubernetes/apply -.-> lab-9195{{"Comando de Taints en Kubernetes"}} kubernetes/describe -.-> lab-9195{{"Comando de Taints en Kubernetes"}} end

Iniciar el clúster de Minikube

Antes de crear recursos, necesitas un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en tu máquina local.

  1. Navegar a tu directorio de trabajo:

    Abre la terminal y navega hasta la carpeta de proyecto predeterminada:

    cd /home/labex/project
  2. Iniciar Minikube:

    Inicia Minikube para inicializar un clúster de Kubernetes:

    minikube start
    • Este comando configura un clúster de Kubernetes de un solo nodo en tu máquina local.
    • Minikube puede tardar unos minutos en iniciar, dependiendo del rendimiento de tu sistema.
  3. Verificar que Minikube esté en ejecución:

    Comprueba el estado del clúster de Minikube:

    minikube status
    • Busca componentes como kubelet y apiserver listados como Running (En ejecución).
    • Si el clúster no está en ejecución, vuelve a ejecutar minikube start.

Si encuentras problemas al iniciar Minikube, utiliza minikube delete para restablecer el entorno si es necesario.

Explorar el comando kubectl taint

El comando kubectl taint se utiliza para agregar, modificar o eliminar taints (manchas) en los nodos de Kubernetes. Los taints son pares clave-valor con efectos que influyen en la programación de pods (contenedores) al restringir qué pods se pueden colocar en nodos específicos.

Ejecuta el siguiente comando para ver las opciones disponibles para kubectl taint:

kubectl taint -h

Verás la siguiente salida:

Actualiza las taints en uno o más nodos.

  *  Una taint consiste en una clave, un valor y un efecto. Como argumento aquí, se expresa como clave=valor:efecto.
  *  La clave debe comenzar con una letra o un número y puede contener letras, números, guiones, puntos y guiones bajos, hasta
  253 caracteres.
  *  Opcionalmente, la clave puede comenzar con un prefijo de subdominio DNS y una sola '/', como example.com/my-app.
  *  El valor es opcional. Si se proporciona, debe comenzar con una letra o un número y puede contener letras, números, guiones,
  puntos y guiones bajos, hasta 63 caracteres.
  *  El efecto debe ser NoSchedule, PreferNoSchedule o NoExecute.
  *  Actualmente, las taints solo se pueden aplicar a nodos.

Ejemplos:
  ## Actualiza el nodo 'foo' con una taint con clave 'dedicated' y valor 'special-user' y efecto 'NoSchedule'
  ## Si una taint con esa clave y efecto ya existe, su valor se reemplaza como se especifica
  kubectl taint nodes foo dedicated=special-user:NoSchedule

  ## Elimina del nodo 'foo' la taint con clave 'dedicated' y efecto 'NoSchedule' si existe
  kubectl taint nodes foo dedicated:NoSchedule-

  ## Elimina del nodo 'foo' todas las taints con clave 'dedicated'
  kubectl taint nodes foo dedicated-

  ## Agrega una taint con clave 'dedicated' en los nodos que tienen la etiqueta mylabel=X
  kubectl taint node -l myLabel=X dedicated=foo:PreferNoSchedule

  ## Agrega al nodo 'foo' una taint con clave 'bar' y sin valor
  kubectl taint nodes foo bar:NoSchedule

Agregar una taint a un nodo

En este paso, aprenderás cómo agregar una taint (mancha) a un nodo utilizando el comando kubectl taint. Las taints se utilizan para marcar un nodo con ciertas restricciones o requisitos, lo que puede afectar la programación de pods (contenedores) en ese nodo.

Para agregar una taint a un nodo, puedes utilizar el siguiente comando:

kubectl taint nodes minikube app=prod:NoSchedule

Esto agregará una taint con la clave app y el valor prod a un nodo llamado minikube, con el efecto NoSchedule. Esto evitará que se programen pods en el nodo a menos que toleren la taint.

Luego, puedes ver las taints que se aplican actualmente a los nodos en tu clúster de Kubernetes utilizando el comando kubectl describe node.

Para ver las taints en un nodo, puedes utilizar el siguiente comando:

kubectl describe node minikube

Las taints aplicadas al nodo se enumerarán en la sección "Taints" de la salida. Puedes utilizar esta información para verificar que la taint que agregaste en el paso anterior se haya aplicado al nodo.

Remove a Taint From a Node

In this step, you will learn how to remove a taint from a node using the kubectl taint command. This can be useful if you need to update the restrictions or requirements of a node, or if you want to allow pods to be scheduled on a previously tainted node.

To remove a taint from a node, you can use the following command:

kubectl taint nodes minikube app-

It will remove the app=prod:NoSchedule taint from the minikube node. This will allow pods to be scheduled on the node without needing to tolerate the previously applied taint.

Modificar una taint en un nodo

En este paso, aprenderás cómo modificar una taint (mancha) en un nodo utilizando el comando kubectl taint. Esto puede ser útil si necesitas actualizar las restricciones o requisitos de un nodo, pero deseas conservar la clave y el efecto de la taint existente.

  1. Agrega una nueva taint con el siguiente contenido:
kubectl taint nodes minikube app=uat:NoSchedule
  1. Utiliza la opción overwrite para forzar las actualizaciones
kubectl taint nodes minikube app=dev:NoSchedule --overwrite=true

Esto actualizará el valor de la taint app de prod a dev en el nodo minikube. Esto actualizará la taint en el nodo mientras se conserva la misma clave y efecto de la taint.

Resumen

En este laboratorio, aprendiste cómo usar el comando kubectl taint en Kubernetes. Comenzaste agregando una taint (mancha) a un nodo utilizando el comando kubectl taint con una clave, un valor y un efecto específicos. Luego, aprendiste cómo ver las taints aplicadas a un nodo utilizando el comando kubectl describe node.