meta data de esta página
  •  

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
virtualizacion:kubernetes:limitar [2020/10/26 22:36] – [Limitar la Ram y la CPU de un pod] lcvirtualizacion:kubernetes:limitar [2023/01/18 14:37] (actual) – editor externo 127.0.0.1
Línea 1: Línea 1:
-===== Limitar la Ram y la CPU de un pod =====+==== Limitar el consumo de los recursos ===== 
 +==== Limitar la Ram y la CPU de un pod ====
  
 Para limitar la ram de un pod usaremos en el manifiesto del pod las opciones **request** y **limits**. Para limitar la ram de un pod usaremos en el manifiesto del pod las opciones **request** y **limits**.
Línea 5: Línea 6:
 La opción **request** es para definir la cantidad de memoria que asignamos al pod y la opción limits define el máximo de memoria que podría llegar a usar ese pod. La opción **request** es para definir la cantidad de memoria que asignamos al pod y la opción limits define el máximo de memoria que podría llegar a usar ese pod.
  
- 
-Veamos un ejemplo 
 <sxh yaml> <sxh yaml>
 apiVersion: v1 apiVersion: v1
Línea 25: Línea 24:
 </sxh> </sxh>
  
-Para limitar la CPU+Para limitar la cantidad de CPU a utilizar
 <sxh yaml> <sxh yaml>
 apiVersion: v1 apiVersion: v1
Línea 45: Línea 44:
 </sxh> </sxh>
  
 +==== LimitRange ====
 +Un LimitRange permite poner limitaciones :
 +  * Limitar la cantidad mínima y máxima de recursos que puede usar un pod o un contenedor en un namespace
 +  * Definir los valores por defecto de **request** y **limits** para un recurso en el namespace
 +
 +
 +
 +Veamos un ejemplo para definir los limits y los request
 +<sxh yaml>
 +apiVersion: v1
 +kind: Namespace
 +metadata:
 +  name: dev
 +  labels:
 +    name: dev
 +---
 +apiVersion: v1
 +kind: LimitRange
 +metadata:
 +  name: mem-cpu-limit-range
 +  namespace: dev
 +spec:
 +  limits:
 +  - default:
 +      memory: 512Mi
 +      cpu: 1
 +    defaultRequest:
 +      memory: 256Mi
 +      cpu: 0.5
 +    type: Container
 +---
 +apiVersion: v1
 +kind: Pod
 +metadata:
 +  name: podtest3
 +  namespace: dev
 +  labels:
 +    app: backend
 +    env: dev
 +spec:
 +  containers:
 +  - name: cont1
 +    image: nginx:alpine
 +</sxh>
 +Ejemplo para definir unos valores mínimos y máximos
 +<sxh yaml>
 +apiVersion: v1
 +kind: Namespace
 +metadata:
 +  name: prod
 +  labels:
 +    name: prod
 +---
 +apiVersion: v1
 +kind: LimitRange
 +metadata:
 +  name: min-max
 +  namespace: prod     #Definimos el namespace donde vamos a aplicar este limite
 +spec:
 +  limits:
 +  - max:
 +      memory: 1Gi
 +      cpu: 1
 +    min:
 +      memory: 100M
 +      cpu: 100m
 +    type: Container
 +---
 +apiVersion: v1
 +kind: Pod
 +metadata:
 +  name: podtest3
 +  namespace: prod               #Definimos el namespace para el pod
 +  labels:
 +    app: backend
 +    env: dev
 +spec:
 +  containers:
 +  - name: cont1
 +    image: nginx:alpine
 +    resources:
 +      limits:
 +        memory: 50M
 +        cpu: 50m
 + </sxh>
 +
 +para ver los límites 
 +<sxh>kubectl get limitrange -n <nombredelnamespace></sxh>
 +
 +<note warning>Limitrange sólo se aplica en el namespace en el que este definido por lo que es muy importante que los pods se definan también dentro del namespace donde lo hemos declarado</note>
 +
 +==== ResourceQuota ====
 +Limita el consumo de recursos por namespace
 +
 +<sxh yaml>
 +apiVersion: v1
 +kind: Namespace
 +metadata:
 +  name: uat
 +  labels:
 +    name: uat
 +---
 +apiVersion: v1
 +kind: ResourceQuota
 +metadata:
 +  name: res-quota
 +  namespace: uat
 +spec:
 +  hard:
 +    requests.cpu: "1"
 +    requests.memory: 1Gi
 +    limits.cpu: "2"
 +    limits.memory: 2Gi
 +    </sxh>
 + <note>En un RequestQuota es obligatorio definir los **requests** y los **limits**</note>
 +
 +Tambien es posible limitar el número de pods de un namespace
 +<sxh yaml >
 +---
 +apiVersion: v1
 +kind: Namespace
 +metadata:
 +  name: pre
 +  labels:
 +    name: pre
 +---
 +apiVersion: v1
 +kind: ResourceQuota
 +metadata:
 +  name: pod-demo
 +  namespace: pre
 +spec:
 +  hard:
 +    pods: "3"
 +</sxh>
 ===== Referencias ==== ===== Referencias ====
   * https://github.com/ricardoandre97/k8s-resources/blob/master/limits-requests/limit-ram.yaml   * https://github.com/ricardoandre97/k8s-resources/blob/master/limits-requests/limit-ram.yaml
 +  * https://github.com/ricardoandre97/k8s-resources/blob/master/limitRange/
 +  * https://v1-17.docs.kubernetes.io/docs/concepts/policy/limit-range/