Gestión de recursos de Kubernetes LimitRange

KubernetesBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás sobre Kubernetes LimitRange, que se utiliza para establecer límites en el consumo de recursos en los pods de Kubernetes. LimitRange es una característica de Kubernetes que te ayuda a administrar los recursos asignados a los pods y evitar problemas de contención de recursos.

Recorrerás una serie de instrucciones paso a paso para comprender los diferentes aspectos de LimitRange, comenzando por ejemplos simples y avanzando gradualmente hacia escenarios más complejos. Cada paso incluirá ejemplos de código en forma de manifiestos YAML que puedes aplicar a tu clúster de Kubernetes para ver los efectos de LimitRange en acción.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 98%. Ha recibido una tasa de reseñas positivas del 98% por parte de los estudiantes.

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 LimitRange simple

En este paso, crearás un LimitRange simple que establece límites en los recursos de CPU y memoria para los pods en un espacio de nombres (namespace). Así es como puedes hacerlo:

  1. Crea un nuevo archivo YAML llamado limitrange.yaml con el siguiente contenido:
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "1"
        memory: "1Gi"
      min:
        cpu: "100m"
        memory: "100Mi"
      default:
        cpu: "500m"
        memory: "500Mi"

Este LimitRange establece los siguientes límites:

  • CPU máxima: 1 núcleo
  • Memoria máxima: 1 GiB
  • CPU mínima: 100 milinúcleos (100m)
  • Memoria mínima: 100 MiB
  • CPU predeterminada: 500 milinúcleos (500m)
  • Memoria predeterminada: 500 MiB
  1. Aplica el archivo limitrange.yaml a tu clúster de Kubernetes utilizando el comando kubectl apply:
kubectl apply -f limitrange.yaml
  1. Verifica que el LimitRange se haya creado correctamente ejecutando el siguiente comando:
kubectl describe limitrange example-limitrange

Deberías ver el LimitRange example-limitrange listado con los límites que especificaste en la sección spec.

Aplicar LimitRange a los pods

En este paso, crearás un pod sujeto al LimitRange que creaste en "Crear un LimitRange simple". Así es como puedes hacerlo:

  1. Crea un nuevo archivo YAML llamado pod.yaml con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: nginx
      image: nginx

Esta definición de pod crea un pod simple con un solo contenedor que ejecuta la imagen de Nginx.

  1. Aplica el archivo pod.yaml a tu clúster de Kubernetes utilizando el comando kubectl apply:
kubectl apply -f pod.yaml
  1. Verifica que el pod se haya creado correctamente ejecutando el siguiente comando:
kubectl get pods example-pod

Deberías ver el pod example-pod listado con un estado de Running (En ejecución).

  1. Comprueba los límites de recursos aplicados al pod ejecutando el siguiente comando:
kubectl describe pod example-pod

Deberías ver los límites de CPU y memoria para el pod según lo definido.

Probar la aplicación de LimitRange

En este paso, probarás la aplicación del LimitRange intentando crear un pod que exceda los límites de recursos definidos en el LimitRange. Así es como puedes hacerlo:

  1. Crea un nuevo archivo YAML llamado pod-exceeding-limits.yaml con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod-exceeding-limits
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          cpu: "2"
          memory: "2Gi"

Esta definición de pod crea un pod con un contenedor que solicita recursos que exceden los límites establecidos en el LimitRange (CPU: 2 núcleos, memoria: 2 GiB).

  1. Aplica el archivo pod-exceeding-limits.yaml a tu clúster de Kubernetes utilizando el comando kubectl apply:
kubectl apply -f pod-exceeding-limits.yaml

Puedes ver que la operación para crear el Pod es rechazada. El mensaje de error es el Error from server (Forbidden): error when creating "pod-exceeding-limits.yaml": pod "example-pod-exceeding-limits" Forbidden: [Maximum cpu usage per container is 1, but limited to 2, maximum memory usage per container is 1Gi, but limited to 2Gi].

Actualizar el LimitRange

En este paso, actualizarás el LimitRange creado en "Crear un LimitRange simple" para modificar los límites de recursos. Así es como puedes hacerlo:

  1. Modifica el archivo limitrange.yaml para actualizar los límites de recursos según tus necesidades. Por ejemplo:
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "2"
        memory: "2Gi"
      min:
        cpu: "200m"
        memory: "200Mi"
      default:
        cpu: "1"
        memory: "1Gi"

Este LimitRange actualizado establece los siguientes límites:

  • CPU máxima: 2 núcleos
  • Memoria máxima: 2 GiB
  • CPU mínima: 200 milinúcleos (200m)
  • Memoria mínima: 200 MiB
  • CPU predeterminada: 1 núcleo
  • Memoria predeterminada: 1 GiB
  1. Aplica el archivo limitrange.yaml actualizado a tu clúster de Kubernetes utilizando el comando kubectl apply:
kubectl apply -f limitrange.yaml
  1. Verifica que el LimitRange se haya actualizado correctamente ejecutando el siguiente comando:
kubectl describe limitranges example-limitrange

Deberías ver los límites de recursos actualizados reflejados en la salida.

Resumen

En este laboratorio, aprendiste cómo usar el LimitRange de Kubernetes para establecer límites en el consumo de recursos en los pods. Comenzaste creando un LimitRange simple, lo aplicaste a un pod, probaste su aplicación y luego actualizaste el LimitRange para modificar los límites de recursos. El LimitRange es una herramienta poderosa para administrar recursos en Kubernetes y garantizar una utilización eficiente de los recursos en tu clúster.