Skip to content

Resource Requirements

Desarrollo del tema

La presente guía aborda la configuracion de recursos a Pods mediante limites.

Laboratorio: Resource Requirements

Descripción

La presente guía aborda la configuracion de recursos a Pods mediante limites.

Objetivos

  • Crear un Deployment a partir de un archivo YAML
  • Configurar limites de CPU y Memoria al Deployment
  • Validar las configuraciones proporcionadas al Deployment

Antes de comenzar

  • Contar con el acceso al ambiente de laboratorio

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
    kubectl config set-context --current --namespace=userx
    

Inicio de laboratorio

  1. Ubíquese en la carpeta app-k8s-deploy y cree un archivo llamado deployment-resources.yaml con el siguiente contenido

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              ports:
                - containerPort: 8080
    

  2. Agregue el bloque resources en spec.template.spec.containers[0] de la siguiente forma

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: basic-api
      namespace: userx
      labels:
        app: basic-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: basic-api
      template:
        metadata:
          labels:
            app: basic-api
        spec:
          containers:
            - name: basic-api
              image: quay.io/rlam/api-demo:1.0
              resources:
                requests:
                  memory:
                  cpu:
                limits:
                  memory:
                  cpu:
              ports:
                - containerPort: 8080
    

  3. Asigne un valor por cada recurso en requests y limits

    20
    21
    22
    23
    24
    25
    26
              resources:
                requests:
                  memory: "64Mi"
                  cpu: "50m"
                limits:
                  memory: "128Mi"
                  cpu: "100m"
    

  4. Levante el Deployment

    kubectl apply -f deployment-resources.yaml
    

  5. Revise la información del deployment

    kubectl describe deploy/basic-api
    

  6. Revise los pods en el namespace

    kubectl get pods
    

  7. Revise la información del pod

    # Cambie nombre-pod por el nombre real del Pod
    kubectl describe pod nombre-pod
    

  8. Cambie el valor de memoria en requests y limits a 256Mi y 512Mi respectivamente

    20
    21
    22
    23
    24
    25
    26
              resources:
                requests:
                  memory: "256Mi"
                  cpu: "50m"
                limits:
                  memory: "512Mi"
                  cpu: "100m"
    

  9. Sincronize los cambios

    kubectl apply -f deployment-resources.yaml
    

  10. Revise la información del deployment

    kubectl describe deploy/basic-api
    

  11. Revise los pods en el namespace

    kubectl get pods
    

  12. Revise la información del pod

    # Cambie nombre-pod por el nombre real del Pod
    kubectl describe pod nombre-pod
    

  13. Limpie el ambiente

    kubectl delete -f deployment-resources.yaml