Skip to content

Quotas y Limit Range

Laboratorio: Quotas y Limit Range

Descripción

Por defecto, los contenedores en kubernetes se ejecutan sin restricciones en cuanto a los recursos que se consumen. Un LimitRange es una política que permite restringir esto.

Objetivo

  • Restringir el consumo de un contenedor en un cluster de kubernetes.

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio
  • Haber realizado la guía de Instalación Rancher Kubernetes Engine (RKE)

Conexión hacia cluster

  1. Ingrese al cluster asignado con las credenciales proporcionadas

  2. Obtenga el archivo kubeconfig posicionando sobre la carpeta a trabajar y cambiando su nombre a config

    mv /path/to/kubeconfig ~/.kube/config
    

  3. Configure la variable KUBECONFIG

    export KUBECONFIG=~/.kube/config
    

  4. Verifique el acceso mediante comandos

    kubectl get namespaces
    

Inicio de laboratorio

  1. Ubíquece en la máquina con acceso al cluster.

  2. Crear un nuevo namespace con el comando.

    kubectl create namespace userx–limit-range
    kubectl config set-context --current --namespace=userx-limit-range
    

  3. Crear un limitRange y un pod, primero el LimitRange con el comando

    kubectl apply -f https://k8s.io/examples/admin/resource/cpu-constraints.yaml
    

  4. Este LimitRange, limita a un máximo de 800m de cpu y un mínimo de 200m , esto en el namespace que se definió.

  5. Para obtener información detallada del LimitRange, use el siguiente comando:

    kubectl get limitrange cpu-min-max-demo-lr --output=yaml
    

  6. Para crear un pod que cumpla con las características de los limites definidos, use el siguiente comando:

    kubectl apply -f https://k8s.io/examples/admin/resource/cpu-constraints-pod.yaml
    

  7. Verifique que el contenedor este saludable.

    kubectl get pod constraints-cpu-demo
    

  8. Vea información detallada acerca del pod, usando el comando

    kubectl get pod constraints-cpu-demo --output=yaml
    

  9. Borre el pod.

    kubectl delete pod constraints-cpu-demo
    

  10. Crear un pod que no cumpla las características del Limit, con el siguiente comando.

    kubectl apply -f https://k8s.io/examples/admin/resource/cpu-constraints-pod-2.yaml
    

  11. Se verá un error parecido al siguiente, ya que no se cumplen los límites.

    Error From server (Forbidden): error when creating "examples/admin/resurces/cpu-contstraints-pod-3.yaml": pods "constrains-cpu-demo-3" is fobidden:minimum cpu usage per container is 200m, but request is 100m.
    

Otra manera de limitar los recursos es por medio de una Quota.

  1. Cree un namespace nuevo

    kubectl create namespace userx–quota
    kubectl config set-context --current --namespace=userx-quota
    

  2. Cree un ResourceQuota con el comando

    kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml
    

  3. Esta cuota delimita la cantidad de pods a un máximo de 2, se puede revisar con el comando

    kubectl get resourcequota pod-demo --output=yaml
    

  4. Cree un deployment con 3 replicas con el siguiente comando

    kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml
    

  5. Revise el mensaje de error con el comando

    kubectl get events
    

Limpieza del ambiente

  1. Para recuperar recursos el cluster elimine el namespace con el siguiente comando.
    kubectl delete namespace userx-quota