Puncte:0

Furnizorul de capacitate Terraform ECS nu duce la noi instanțe ECS la cerere

drapel ss

Din cate am citit Aici Furnizorii de capacitate ECS ar trebui (în general) să prevină eșecurile imediate ale sarcinilor în limitele resurselor, punându-le într-o stare de „Aprovizionare” și creând o nouă instanță EC2

Aceasta înseamnă, de exemplu, dacă apelați API-ul RunTask și sarcinile nu sunt plasate pe o instanță din cauza resurselor insuficiente (înseamnă că nicio instanță activă nu avea suficientă memorie, vCPU-uri, porturi, ENIs și/sau GPU-uri pentru a rula sarcini), în loc să eșueze imediat, sarcina va intra în starea de furnizare (rețineți, totuși, că tranziția la aprovizionare are loc numai dacă ați activat scalarea gestionată pentru furnizorul de capacitate; în caz contrar, sarcinile care nu pot găsi capacitatea vor eșua imediat, așa cum au făcut anterior).

Am configurat un cluster ECS, cu grup de autoscaling și furnizor de capacitate ECS în terraform. Grupul de autoscaling este setat cu min_size = 1 și se rotește imediat o singură instanță... așa că sunt sigur că configurația mea de lansare este bună.

Cu toate acestea, când apelez în mod repetat „RunTask” prin API (sarcini cu memorie=128), primesc sarcini care nu încep imediat cu rațiune RESURSA: MEMORIE. De asemenea, nu pornesc instanțe noi.

Nu pot să-mi dau seama ce am configurat greșit.


Toate acestea au fost configurate în terraform:

resursă „aws_ecs_cluster” „ecs_cluster” {
  nume = local.nume_cluster


  setare {
    nume = "containerInsights"
    valoare = "activat"
  }
  tags = var.tags
  capacity_providers = [aws_ecs_capacity_provider.capacity_provider.name]

  # Am adăugat acest lucru în încercarea de a-l face să creeze o nouă instanță 
  default_capacity_provider_strategy {
    capacitate_furnizor = aws_ecs_capacity_provider.capacity_provider.name
  }

}

resursă „aws_ecs_capacity_provider” „capacity_provider” {
  nume = "${var.tags.PlatformName}-stack-${var.tags.Environment}"

  furnizor_grup_auto_scaling_{
    auto_scaling_group_arn = aws_autoscaling_group.autoscaling_group.arn
    managed_termination_protection = „DEZACTIVAT”

    scalare_gestionată {
      maximum_scaling_step_size = 4
      dimensiunea_pasului_minimum_scaling = 1
      stare = "ACTIVAT"
      target_capacity = 100
    }
  }

  tags = var.tags
}

#Calcula
resursă „aws_autoscaling_group” „autoscaling_group” {
  nume = "${var.tags.PlatformName}-${var.tags.Environment}"
  # Dacă nu îl folosim, să nu plătim pentru el
  min_size = "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 = [„Cea mai vecheInstanță”]
  vpc_zone_identifier = local.subnets
  protect_from_scale_in = false

  etichetă {
    cheie = „Nume”
    valoare = "${var.tags.PlatformName}-${var.tags.Environment}"
    propagate_at_launch = adevărat
  }

  etichetă {
    cheie = "AmazonECSMaged"
    valoare = ""
    propagate_at_launch = adevărat
  }

  „etichetă” dinamică {
    for_each = var.tags
    continut {
      cheie = tag.cheie
      propagate_at_launch = adevărat
      valoare = tag.valoare
    }
  }

  enabled_metrics = [
    „GroupDesiredCapacity”,
    „GroupInServiceInstances”,
    „GroupMaxSize”,
    „GroupMinSize”,
    „GroupPendingInstances”,
    „GroupStandbyInstances”,
    „GroupTerminatingInstances”,
    „GroupTotalInstances”,
  ]
}
Puncte:0
drapel ss

Se pare că asta se datorează unei greșeli pe care am făcut-o când am executat „RunTask” în API (documentat aici). specificasem launchType si nu CapacitateProviderStrategy.

Din documentația RunTask:

Când utilizați scalarea automată a clusterului, trebuie să specificați CapacitateProviderStrategy si nu launchType.

Se pare că rezultatul este că sarcinile vor începe dacă există capacitate, dar vor eșua imediat dacă există o capacitate insuficientă și nu vor oferi auto-scaling șansa de a răspunde.

Am reușit să-l fac să funcționeze pur și simplu ștergând launchType deoarece default_capacity_provider_strategy a fost setat pe cluster.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.