잡 스펙의 `scaling` 블록
잡 스펙의 scaling 블록
scaling 블록은 Nomad Autoscaler 같은 외부 오토스케일러와 Nomad UI를 통한 스케일링을 지원하기 위해 task 또는 group의 스케일링 옵션을 구성할 수 있게 해요. 이 블록은 system 타입의 잡에서는 지원되지 않아요.
출처: 문서
본문
| 배치 | job -> group -> **scaling** |
|---|---|
job -> group -> task -> **scaling** |
group 레벨에 배치되면 스케일링 정책은 수평 애플리케이션 스케일링 타입이 되고, 그룹의 count 값을 제어해요.
job "example" {
datacenters = ["dc1"]
group "cache" {
count = 1
scaling {
enabled = true
min = 0
max = 10
policy {
# ...
}
}
# ...
}
}
task 레벨에 배치되면 스케일링 정책은 Dynamic Application Sizing 타입이 되고, 태스크의 resources 값을 제어해요. 이 시나리오에서 scaling 블록은 어떤 리소스를 제어할지 나타내는 레이블을 가져야 해요. 유효한 이름은 cpu와 mem이에요.
job "example" {
datacenters = ["dc1"]
group "cache" {
task "redis" {
driver = "docker"
config {
image = "redis:7"
}
resources {
cpu = 100
memory = 256
}
scaling "cpu" {
enabled = true
min = 100
max = 500
policy {
# ...
}
}
scaling "mem" {
enabled = true
min = 64
max = 512
policy {
# ...
}
}
}
}
}
매개변수 (Parameters)
-
min-(int: nil)- 태스크 그룹의 최소 허용 count. 외부 오토스케일러가 이를 존중해야 해요. Nomad도 잡 업데이트와 스케일링 작업 중 이를 존중해요. 기본값은 지정된 태스크 그룹count예요. -
max-(int: <required>)- 태스크 그룹의 최대 허용 count. 외부 오토스케일러가 이를 존중해야 해요. Nomad도 잡 업데이트와 스케일링 작업 중 이를 존중해요. -
enabled-(bool: false)- 스케일링 정책이 활성화되었는지 여부. 오토스케일링 정책을 일시적으로 비활성화하도록 허용하기 위한 것이며, 외부 오토스케일러가 이를 존중해야 해요. -
policy-(map<string|...>: nil)- 오토스케일링 정책. 이건 Nomad에 불투명하며 외부 오토스케일러만 소비하고 파싱해요. 따라서 그 내용은 오토스케일러에 따라 다르며, 자세한 내용은 Nomad Autoscaler 문서를 참고하세요. 여기에는 Schedule-based Autoscaling에 문서화된 일정 기반 정책과 체크 제어가 포함돼요.