WIKI
Nomad
Nomad
HashiCorp Nomad는 Kubernetes와 어떤 철학적·운영적 차이가 있는가.
Scope
핵심 질문
HashiCorp Nomad는 jobs, allocations, evaluations를 이용해 워크로드를 어떻게 스케줄링하는가?
Research
핵심 근거
- Nomad job은 desired state를 선언하고 scheduler가 node에 allocation을 배치한다.
- service, batch, system, system batch 등 workload 유형별 scheduler가 있다.
- Kubernetes보다 추상화 수가 적고 범용 binary/container workload를 다루지만 일부 주변기능은 별도 HashiCorp/외부 도구와 조합한다.
참고 자료
- Nomad docs: https://developer.hashicorp.com/nomad/docs
- Scheduling: https://developer.hashicorp.com/nomad/docs/concepts/scheduling/how-scheduling-works
Draft
Nomad는 HashiCorp가 개발한 분산 workload scheduler다. 컨테이너뿐 아니라 다양한 실행 드라이버를 통해 장기 서비스와 batch job을 여러 노드에 배치한다.
Job과 Allocation
사용자는 job specification에 실행할 task, 필요한 자원, 제약조건과 replica 수를 선언한다. Scheduler는 이를 실제 node에 배치할 계획으로 바꾸고, 특정 node에서 실행되는 task 묶음을 allocation이라고 부른다.
Cluster 상태가 바뀌면 evaluation이 생성되고 scheduler가 필요한 새 allocation을 계산한다.
Job 유형
service job은 계속 살아 있어야 하는 장기 서비스에 적합하다. batch는 완료되는 작업, system은 모든 적합한 node에 하나씩 실행해야 하는 daemon형 workload에 사용된다.
Kubernetes와의 차이
Nomad는 Kubernetes보다 핵심 추상화가 적고 scheduler 역할에 집중하는 편이다. Nomad 자체 service discovery와 ACL로 제한한 암호화 설정 저장 기능인 Nomad Variables도 있다. 추가적인 동적 DNS·상태 기반 필터링이나 비밀값의 고급 수명주기 관리가 필요하면 Consul·Vault 같은 별도 시스템과 조합할 수 있다. Nomad Variables가 Vault의 모든 기능과 같다는 뜻은 아니다.
이 단순성은 작은 운영팀에 장점이 될 수 있지만 Kubernetes 생태계에서 기본적으로 기대하는 기능을 별도 구성해야 할 수도 있다.
핵심
Nomad는 job이라는 desired state를 node allocation으로 변환하는 scheduler다. 컨테이너 플랫폼 전체를 하나의 거대한 API로 제공하기보다 workload scheduling을 중심으로 비교적 작은 핵심을 유지하는 것이 특징이다.