meta data de esta página
  •  

¡Esta es una revisión vieja del documento!


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.

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.

apiVersion: v1
kind: Pod
metadata:
  name: limite-memoria
spec:
  containers:
  - name: limite-memoria
    image: polinux/stress
    resources:
      limits:
        memory: "200Mi"   # Definimos el límite de memoria que puede usar el pod a 200M
      requests:
        memory: "100Mi"   #Definimos la cantidad de memoria que reservamos para este pod
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

Para limitar la cantidad de CPU a utilizar

apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -cpus
    - "2"

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

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
Ejemplo para definir unos valores mínimos y máximos
apiVersion: v1
kind: Namespace
metadata:
  name: prod
  labels:
    name: prod
---
apiVersion: v1
kind: LimitRange
metadata:
  name: min-max
  namespace: prod
spec:
  limits:
  - max:
      memory: 1Gi
      cpu: 1
    min:
      memory: 100M
      cpu: 100m
    type: Container
---
apiVersion: v1
kind: Pod
metadata:
  name: podtest3
  namespace: prod
  labels:
    app: backend
    env: dev
spec:
  containers:
  - name: cont1
    image: nginx:alpine
    resources:
      limits:
        memory: 50M
        cpu: 50m
 

para ver los límites

kubectl get limitrange -n <nombredelnamespace>

Referencias