Ejecución de Pods con DaemonSets

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 Kubernetes, un DaemonSet es un tipo de controlador que garantiza que una copia de un pod se ejecute en cada nodo del clúster. Este laboratorio lo guiará a través del proceso de creación de un DaemonSet para ejecutar réplicas de un pod en cada nodo del clúster.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-8454{{"Ejecución de Pods con DaemonSets"}} kubernetes/get -.-> lab-8454{{"Ejecución de Pods con DaemonSets"}} kubernetes/create -.-> lab-8454{{"Ejecución de Pods con DaemonSets"}} kubernetes/apply -.-> lab-8454{{"Ejecución de Pods con DaemonSets"}} kubernetes/describe -.-> lab-8454{{"Ejecución de Pods con DaemonSets"}} 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.

Crear un Pod

Crea un pod simple que se utilizará como plantilla para las réplicas. Crea un archivo llamado /home/labex/project/myapp-pod.yaml con el siguiente contenido:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  containers:
    - name: myapp-container
      image: nginx
      ports:
        - containerPort: 80

Crea el pod utilizando el siguiente comando:

kubectl apply -f /home/labex/project/myapp-pod.yaml

Crear un DaemonSet

Crea un DaemonSet para ejecutar réplicas del myapp-pod en cada nodo del clúster. Crea un archivo llamado /home/labex/project/myapp-daemonset.yaml con el siguiente contenido:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: nginx
          ports:
            - containerPort: 80

Este DaemonSet utiliza el myapp-pod como plantilla para las réplicas y establece el selector matchLabels en app: myapp para garantizar que las réplicas se creen en cada nodo.

Crea el DaemonSet utilizando el siguiente comando:

kubectl apply -f /home/labex/project/myapp-daemonset.yaml

Verificar el DaemonSet

Verifica que el DaemonSet se haya creado y que las réplicas del myapp-pod estén en ejecución en cada nodo. Utiliza el siguiente comando para listar los nodos del clúster:

kubectl get nodes

Utiliza el siguiente comando para listar los pods creados por el DaemonSet:

kubectl get pods -l app=myapp

Deberías ver un pod para cada nodo del clúster.

Actualizar el DaemonSet

Actualiza el DaemonSet para cambiar la imagen utilizada por el myapp-container. Crea un archivo llamado /home/labex/project/myapp-daemonsett-update.yaml con el siguiente contenido:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: myapp-daemonset
spec:
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp-container
          image: busybox
          command: ["sleep", "3600"]

Este DaemonSet actualizado cambia la imagen utilizada por el myapp-container a busybox y establece el comando en sleep 3600.

Actualiza el DaemonSet utilizando el siguiente comando:

kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml

Verifica que el DaemonSet se haya actualizado y que las réplicas del myapp-pod estén en ejecución con la nueva imagen. Utiliza el siguiente comando para listar los pods creados por el DaemonSet:

kubectl get pods -l app=myapp

Deberías ver nuevos pods creados con la imagen actualizada.

Resumen

En este laboratorio, aprendiste cómo utilizar un DaemonSet en Kubernetes para ejecutar réplicas de un pod en cada nodo del clúster.