Рейтинг:0

Terraform ECS Capacity Provider не приводит к созданию новых экземпляров ECS по запросу

флаг ss

Из того, что я прочитал здесь Поставщики ресурсов ECS должны (как правило) предотвращать немедленный сбой задач из-за ограничений ресурсов, переводя их в состояние «Инициализация» и запуская новый экземпляр EC2.

Это означает, например, что если вы вызываете API RunTask, а задачи не размещаются на экземпляре из-за нехватки ресурсов (это означает, что ни один из активных экземпляров не имеет достаточно памяти, виртуальных ЦП, портов, ENI и/или графических процессоров для запуска задачи), вместо немедленного сбоя задача перейдет в состояние подготовки (обратите внимание, однако, что переход к подготовке происходит только в том случае, если вы включили управляемое масштабирование для поставщика емкости; в противном случае задачи, которые не могут найти емкость, немедленно завершатся с ошибкой, как это было раньше).

Я настроил кластер ECS с группой автоматического масштабирования и поставщиком емкости ECS в terraform. Группа автомасштабирования устанавливается с минимальный_размер = 1 и он сразу запускает один экземпляр... поэтому я уверен, что моя конфигурация запуска в порядке.

Однако, когда я неоднократно вызываю «RunTask» через API (задачи с память=128), я получаю задачи, которые не запускаются сразу по причине РЕСУРС: ПАМЯТЬ. Также не запускаются новые экземпляры.

Я не могу понять, что я неправильно настроил.


Все это было настроено в terraform:

ресурс "aws_ecs_cluster" "ecs_cluster" {
  имя = local.cluster_name


  параметр {
    имя = "КонтейнерИнсайтс"
    значение = "включено"
  }
  теги = переменные.теги
  capacity_providers = [aws_ecs_capacity_provider.capacity_provider.name]

  # Я добавил это, чтобы запустить новый экземпляр 
  default_capacity_provider_strategy {
    capacity_provider = aws_ecs_capacity_provider.capacity_provider.name
  }

}

ресурс "aws_ecs_capacity_provider" "capacity_provider" {
  name = "${var.tags.PlatformName}-стек-${var.tags.Environment}"

  auto_scaling_group_provider {
    auto_scaling_group_arn = aws_autoscaling_group.autoscaling_group.arn
    управляемая_терминация_защита = "ОТКЛЮЧЕНО"

    управляемое_масштабирование {
      максимальный_масштабирующий_шаг_размер = 4
      минимальный_масштаб_шаг_размер = 1
      статус = "ВКЛЮЧЕНО"
      целевая_емкость = 100
    }
  }

  теги = переменные.теги
}

#вычислить
ресурс "aws_autoscaling_group" "autoscaling_group" {
  name = "${var.tags.PlatformName}-${var.tags.Environment}"
  # Если мы не используем его, давайте не будем платить за него
  минимальный_размер = "1"
  max_size = var.ecs_max_size
  launch_configuration = aws_launch_configuration.launch_config.name
  health_check_grace_period = 60
  default_cooldown = 30
  termination_policies = ["Старейший экземпляр"]
  vpc_zone_identifier = локальные.подсети
  Protect_from_scale_in = ложь

  тег {
    ключ = "Имя"
    значение = "${var.tags.PlatformName}-${var.tags.Environment}"
    propagate_at_launch = истина
  }

  тег {
    ключ = "AmazonECSManaged"
    значение = ""
    propagate_at_launch = истина
  }

  динамический "тег" {
    for_each = переменные.теги
    содержание {
      ключ = тег.ключ
      propagate_at_launch = истина
      значение = тег.значение
    }
  }

  enable_metrics = [
    "Желаемая мощность группы",
    "Групповые сервисные экземпляры",
    «Максимальный размер группы»,
    "ГруппаМин.Размер",
    "Групповые ожидающие экземпляры",
    «Групповые резервные экземпляры»,
    "Групповые терминирующие экземпляры",
    "Всего экземпляров группы",
  ]
}
Рейтинг:0
флаг ss

Похоже, это связано с ошибкой, которую я допустил при выполнении «RunTask» в API (задокументировано здесь). я указал тип запуска и нет powerProviderStrategy.

Из документации RunTask:

При использовании автоматического масштабирования кластера необходимо указать powerProviderStrategy и нет тип запуска.

Кажется, в результате этого задачи запускаются при наличии емкости, но сразу же завершаются с ошибкой, если емкости недостаточно, и не дают автомасштабированию возможности отреагировать.

Я смог заставить его работать, просто удалив тип запуска так как default_capacity_provider_strategy был установлен на кластере.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.