Examinar nodos con Kubectl

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 usar kubectl para examinar los nodos de tu clúster de Kubernetes. Comenzarás con información básica de los nodos y avanzarás hacia temas más avanzados, como las taints (manchas) y tolerancias. Este laboratorio asume que ya tienes un clúster de Kubernetes configurado y que tienes kubectl instalado.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/ClusterInformationGroup(["Cluster Information"]) kubernetes(("Kubernetes")) -.-> kubernetes/ConfigurationandVersioningGroup(["Configuration and Versioning"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("Annotate") kubernetes/BasicCommandsGroup -.-> kubernetes/cordon("Cordon") kubernetes/BasicCommandsGroup -.-> kubernetes/uncordon("Uncordon") kubernetes/BasicCommandsGroup -.-> kubernetes/taint("Taint") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("Cluster Info") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/label("Label") subgraph Lab Skills kubernetes/initialization -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/get -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/annotate -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/cordon -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/uncordon -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/taint -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/cluster_info -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/describe -.-> lab-9790{{"Examinar nodos con Kubectl"}} kubernetes/label -.-> lab-9790{{"Examinar nodos con Kubectl"}} 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 iniciarse 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.

Información básica de los nodos

Lo primero que harás es obtener información básica sobre los nodos de tu clúster.

  1. Para ver una lista de los nodos de tu clúster, ejecuta el siguiente comando:

    kubectl get nodes

    Esto mostrará una lista de todos los nodos de tu clúster junto con su estado.

  2. Para obtener información más detallada sobre un nodo específico, ejecuta el siguiente comando:

    kubectl describe node minikube

    Reemplaza minikube con el nombre del nodo que deseas examinar. Esto te dará información detallada sobre el estado, la capacidad y el uso del nodo.

Etiquetas (Labels) y Anotaciones

Las etiquetas (labels) y anotaciones se pueden utilizar para agregar metadatos a los nodos de tu clúster. Estos metadatos se pueden utilizar para seleccionar nodos para tareas específicas o para filtrar nodos según ciertos criterios.

  1. Para ver las etiquetas (labels) y anotaciones de un nodo específico, ejecuta el siguiente comando:

    kubectl get node minikube --show-labels=true

    Esto mostrará las etiquetas (labels) y anotaciones del nodo especificado.

  2. Para agregar una etiqueta (label) a un nodo, ejecuta el siguiente comando:

    kubectl label node minikube org=labex
  3. Para agregar una anotación a un nodo, ejecuta el siguiente comando:

    kubectl annotate node minikube environment=production
  4. Utiliza el siguiente comando para verificar las etiquetas (labels) en el nodo:

    kubectl get nodes --show-labels

    Esto mostrará una lista de todos los nodos en el clúster junto con sus etiquetas (labels). Los nodos se pueden etiquetar para ayudar a identificar su propósito o características.

Taints (Manchas) y Tolerancias

Las taints (manchas) y tolerancias se pueden utilizar para controlar qué pods se pueden programar en qué nodos de tu clúster. Una taint es una etiqueta especial que marca un nodo como inadecuado para ciertos tipos de pods, y una tolerancia es una configuración que permite que un pod se programe en un nodo con una taint coincidente.

  1. Para ver las taints de un nodo específico, ejecuta el siguiente comando:

    kubectl describe node minikube | grep Taints

    Esto mostrará las taints del nodo especificado.

  2. Para agregar una taint a un nodo, ejecuta el siguiente comando:

    kubectl taint node minikube app=backend:NoSchedule
  3. Para crear una tolerancia para un pod, ejecuta el siguiente comando:

    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
        - name: my-container
          image: nginx
      tolerations:
        - key: app
          operator: Exists
          effect: NoSchedule
    EOF

    Este pod utiliza app como el nombre de la taint y NoSchedule como el efecto que debe tener la taint.

Ver la capacidad y el uso de recursos de un nodo

Para ver los recursos disponibles en un nodo, utiliza el siguiente comando:

kubectl describe node minikube | grep -A 8 "Allocated resources"

Reemplaza minikube con el nombre del nodo que deseas examinar.

Esto proporcionará información detallada sobre el nodo, incluyendo su capacidad y el uso actual de recursos.

Ver eventos de un nodo

En Kubernetes, puedes utilizar el siguiente comando para filtrar todos los eventos relacionados con un nodo específico:

kubectl get events --field-selector involvedObject.kind=Node,involvedObject.name=minikube

Reemplaza minikube con el nombre del nodo que deseas consultar. Este comando listará todos los eventos relacionados con ese nodo, como reinicios, actualizaciones, etc.

Cordon (Bloquear) y Uncordon (Desbloquear) un nodo

En algunos casos, es posible que necesites sacar un nodo del servicio para realizar mantenimiento u otras razones. Kubernetes ofrece una forma de marcar un nodo como no programable (unschedulable) para que no se programen nuevos pods en él. Esto se llama "cordon" (bloquear).

Para bloquear (cordon) un nodo, utiliza el siguiente comando:

kubectl cordon minikube

Reemplaza minikube con el nombre del nodo que deseas bloquear.

Luego, utiliza el siguiente comando para verificar el estado del nodo:

kubectl get node

Para desbloquear (uncordon) un nodo y permitir que se programen nuevos pods en él, utiliza el siguiente comando:

kubectl uncordon minikube

Reemplaza minikube con el nombre del nodo que deseas desbloquear.

Ten en cuenta que bloquear un nodo no mueve automáticamente los pods existentes del nodo. Debes eliminar o mover manualmente los pods antes de bloquear el nodo para evitar cualquier interrupción.

¡Felicidades! Has aprendido cómo bloquear y desbloquear un nodo en Kubernetes.

Resumen

En este laboratorio, has aprendido cómo examinar nodos en un clúster de Kubernetes utilizando kubectl. Has aprendido cómo listar nodos, verificar su estado, ver sus etiquetas y examinar su capacidad y uso de recursos. También has aprendido cómo vaciar (drain) y desbloquear (uncordon) nodos para mantenimiento y actualizaciones.