deployment
ReplicaSet
StatefulSet
DemonSet
Job
CronJob
워크로드 리소스는 k8s 클러스터 내에서 구동되는 애플리케이션들이다. 특히 파드를 실행하는데 서포트를 하는 애플리케이션들이다. 워크로드는 단일 컴포넌트이든, 함께 작동하는 여러 컴포넌트이든간에 항상 파드 집합내에서 실행된다. (서포트의 역할이므로)
k8s의 파드에는 라이프사이클이 있음. 예를 하나 들어보자. 파드가 클러스터에서 실행되고 나서 해당 파드가 동작중인 노드에 오류가 발생하면 해당 노드의 모든 파드가 실패한다. - 사용자는 노드가 복구되어도 Pod를 새로 생성해야 한다.
k8s는 고맙게도 이걸 일일이 사람이 관리하지 않도록 했다. 대신 사람은 파드 집합을 관리하는 워크로드 리소스를 이용하면 된다.
이러한 리소스는 desired status와 observed status가 일치하도록 올바른 수의, 올바른 유형의 파드가 실행되고 있는지 확인하는 컨트롤러를 구성한다.
쿠버네티스는 다음과 같은 여러 빌트인 워크로드 리소스를 제공한다.
- Deployment, ReplicaSet(과거의 레플리케이션 컨트롤러를 대체함.)
- Stateless한, 일반적인 애플리케이션을 실행하는데 쓰인다.
- StatefulSet
- 상태를 추적하고 저장하는 파드를 동작하게 해준다.
- 예를들어 데이터를 지속적으로 기록해야하는 경우 StatefultSet은 파드와 PersistentVolume을 연계해준다.
- 또한 데이터의 안정성을 위해 StatefulSet의 Pods에서 동작중인 코드는 동일한 StatefulSet의 다른 파드로 데이터를 복제할 수 있다.
- DaemonSet
- node-local facilities(노드 로컬 수준의 기능)를 제공하는 파드를 정의함. 예를 들어 네트워킹 지원도구나 애드 온 등.. DaemonSet의 명세에 맞는 노드를 클러스터에 추가할 때마다 컨트롤 플래인은 해당 신규 노드에 DaemonSet을 위한 Pod를 스케쥴링 함.
- Job, CronJob
- 실행 완료 후에 중단되는 작업을 정의함. 둘의 차이는 CronJob은 스케쥴에 따라 반복되는 반면, Job은 단 한번의 작업을 나타냄.