Saltar al contenido

¿Cómo puedo aumentar el espacio en disco para mi contenedor de Amazon ECS en AWS Fargate?

5 minutos de lectura
0

Quiero aumentar el espacio en disco para mi contenedor de Amazon Elastic Container Service (Amazon ECS) en AWS Fargate.

Descripción corta

De forma predeterminada, las tareas de Fargate que se inician con la versión 1.40 de la plataforma incluyen un tamaño de almacenamiento de tareas de 20 GiB como único volumen efímero. Si necesita más de 20 GiB de almacenamiento, utilice una de las siguientes opciones para configurar más almacenamiento:

Importante: Al crear un volumen de Amazon EFS, utilice la misma instancia de Amazon Virtual Private Cloud (Amazon VPC) y las mismas subredes que están asignadas al servicio de Fargate.

Resolución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors (Solución de errores de AWS CLI). Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Para aumentar el espacio en disco de un contenedor de Amazon ECS en Fargate, complete las tareas según su caso de uso.

Configuración del almacenamiento efímero

Siga estos pasos:

  1. Cree o actualice la definición de la tarea para configurar el almacenamiento efímero de la tarea. Por ejemplo:

    "containerDefinitions": [ {
       "memory": 128,
         "essential": true,  
          "name": "nginx",
          "image": "nginx"
       }
    ]
    "ephemeralStorage": {
        "sizeInGiB": 30
        }
  2. Utilice la definición de tarea actualizada para ejecutar la tarea.
    Nota: Para las tareas asociadas a un servicio, seleccione una nueva revisión de la definición de tarea para actualizar el servicio.

Para más información, consulte Uso de montajes de unión con Amazon ECS.

Configuración del almacenamiento con volúmenes de Amazon EFS

Siga estos pasos:

  1. Cree un grupo de seguridad para sus destinos de montaje de Amazon EFS. A continuación, añada una regla de entrada para aceptar el tráfico NFS del grupo de seguridad de tareas del origen en el puerto 2049.
  2. Cree un sistema de archivos Amazon EFS y, a continuación, adjunte el grupo de seguridad a sus destinos de montaje.
    Nota: De forma predeterminada, se configura un destino de montaje en cada zona de disponibilidad de una región de AWS determinada. Seleccione todas las zonas de disponibilidad en las que se encuentran las subredes de VPC para el servicio Fargate.
  3. Anote el ID de su sistema de archivos. Por ejemplo: fs-12345678
  4. Cree o actualice una definición de tarea para configurar un volumen para la tarea de Amazon ECS que tiene su sistema de archivos Amazon EFS. Por ejemplo:
    "volumes": [    {
          "name": "efs-test-volume",
          "efsVolumeConfiguration": {
               "fileSystemId": "fs-12345678",
               "transitEncryption": "ENABLED"
          }
       }
     ]
    Nota: Sustituya fs-12345678 por el ID de su sistema de archivos.
  5. Use una sección de definiciones de contenedores para crear un punto de montaje para el volumen que hay dentro del contenedor. Por ejemplo:
    "containerDefinitions": [ {
       "memory": 128,
        "portMappings": [
           {
              "hostPort": 80,
              "containerPort": 80,
               "protocol": "tcp"
            }
         ],
         "essential": true,
         "mountPoints": [
            {
            "containerPath": "/mount/path/inside/container",
            "sourceVolume": "efs-test-volume"
            }
          ],
          "name": "nginx",
          "image": "nginx"
       }
    ]
    **Nota:**El elemento containerPath es la ruta del contenedor donde se monta el volumen. sourceVolume es el nombre de su volumen.
  6. Utilice la definición de tarea actualizada para ejecutar la tarea.
    Nota: Para las tareas asociadas a un servicio, seleccione una nueva revisión de la definición de tarea para actualizar el servicio.

Cómo adjuntar un volumen de EBS a Fargate

Siga estos pasos:

  1. Cree o actualice la definición de la tarea para configurar el volumen de EBS que se configurará en el momento del lanzamiento. Utilice la opción "configuredAtLaunch" establecida en “true”. Por ejemplo:

    "containerDefinitions": [
            {
                "name": "nginx",
                "image": "public.ecr.aws/nginx/nginx:latest",
                "networkMode": "awsvpc",
                "portMappings": [
                    {
                        "name": "nginx-80-tcp",
                        "containerPort": 80,
                        "hostPort": 80,
                        "protocol": "tcp",
                        "appProtocol": "http"
                    }
                ],
                "mountPoints": [
                    {
                        "sourceVolume": "myEBSVolume",
                        "containerPath": "/mount/ebs",
                        "readOnly": true
                        }
                    ]
                }
            ],
            "volumes": [
            {
                "name": "myEBSVolume",
                "configuredAtLaunch": true
            }
        ]
  2. Inicie una tarea independiente. O bien, inicie una tarea como parte de un servicio con una configuración de volumen como parte del JSON.
    Ejemplo de JSON de tareas independientes:

    {
      "cluster": "mycluster",
      "taskDefinition": "mytaskdef",
      "volumeConfigurations": [
        {
          "name": "datadir",
          "managedEBSVolume": {
            "volumeType": "gp3",
            "sizeInGiB": 100,
            "roleArn": "arn:aws:iam:1111222333:role/ecsInfrastructureRole",
            "encrypted": true,
            "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
          }
        }
      ]
    }

    Nota: Tal como se indicó en el ejemplo anterior, no necesita una instantánea para iniciar la tarea.
    Ejemplo de JSON de servicio:

    {
        "cluster": "mycluster",
        "taskDefinition": "mytaskdef",
        "serviceName": "mysvc",
        "desiredCount": 2,
        "volumeConfigurations": [
            {
                "name": "myEbsVolume",
                "managedEBSVolume": {
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "snapshotId": "snap-12345"
                }
            }
        ]
    }

    Nota: Sustituya roleArn por su cuenta ecsInfrastructureRole. Sustituya snapshotId por el ID de instantánea a partir de la cual desea crear un volumen.

OFICIAL DE AWSActualizada hace 2 años
Sin comentarios

Contenido relevante