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
-
Ingrese al cluster asignado con las credenciales proporcionadas
-
Obtenga el archivo kubeconfig posicionando sobre la carpeta a trabajar y cambiando su nombre a config
mv /path/to/kubeconfig ~/.kube/config -
Configure la variable
KUBECONFIGexport KUBECONFIG=~/.kube/config -
Verifique el acceso mediante comandos
kubectl get namespaces
Inicio de laboratorio
-
Ubíquece en la máquina con acceso al cluster.
-
Crear un nuevo namespace con el comando.
kubectl create namespace userx–limit-range kubectl config set-context --current --namespace=userx-limit-range -
Crear un limitRange y un pod, primero el LimitRange con el comando
kubectl apply -f https://k8s.io/examples/admin/resource/cpu-constraints.yaml -
Este LimitRange, limita a un máximo de 800m de cpu y un mínimo de 200m , esto en el namespace que se definió.
-
Para obtener información detallada del LimitRange, use el siguiente comando:
kubectl get limitrange cpu-min-max-demo-lr --output=yaml -
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 -
Verifique que el contenedor este saludable.
kubectl get pod constraints-cpu-demo -
Vea información detallada acerca del pod, usando el comando
kubectl get pod constraints-cpu-demo --output=yaml -
Borre el pod.
kubectl delete pod constraints-cpu-demo -
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 -
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.
-
Cree un namespace nuevo
kubectl create namespace userx–quota kubectl config set-context --current --namespace=userx-quota -
Cree un ResourceQuota con el comando
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod.yaml -
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 -
Cree un deployment con 3 replicas con el siguiente comando
kubectl apply -f https://k8s.io/examples/admin/resource/quota-pod-deployment.yaml -
Revise el mensaje de error con el comando
kubectl get events
Limpieza del ambiente
- Para recuperar recursos el cluster elimine el namespace con el siguiente comando.
kubectl delete namespace userx-quota