워크로드
쿠버네티스 공식문서를 확인하며 워크로드에 대해서 기억해야 하는 부분을 기록한다.
- “워크로드”는 쿠버네티스에서 구동되는 애플리케이션을 뜻한다.
- “워크로드”가 단일 컴포넌트이거나 함께 작동하는 여러 컴포넌트이든 관계없이, 쿠버네티스에서는 워크로드를 일련의 파드 집합 내에서 실행한다.
- 쿠버네티스에서
**Pod
는 클러스터에서 실행 중인 컨테이너 집합을 의미**한다. - 파드에는 정의된 라이프사이클이 있다. 일단 파드가 클러스터에서 실행되고 나서 해당 파드가 동작 중인 노드에 심각한 오류가 발생하면 해당 노드의 모든 파드가 실패하고 이러한 상황을 최종(final)로 취급한다.
- 최종 상황에서 사용자는 향후 노드가 복구되는 것과 상관 없이
Pod
를 새로 생성해야 한다. - “워크로드 리소스”는 사용자를 대신하여 파드의 집합을 관리하므로 사용자는 각
Pod
를 직접 관리할 필요가 없다. - “워크로드 리소스”는 지정한 상태와 일치하도록 올바른 수의 올바른 파드 유형이 실행되고 있는지 확인하는 컨트롤러를 구성한다.
- 쿠버네티스는 아래와 같이 여러 가지 빌트인(built-in) 워크로드 리소스를 제공한다.
- Deployment 및 ReplicaSet:
Deployment
는Deployment
의 모든Pod
가 필요 시 교체 또는 상호 교체 가능한 경우, 클러스터의 스테이트리스 애플리케이션 워크로드를 관리하기에 적합하다. - StatefulSet: 어떻게든 스테이트(state)를 추적하는 하나 이상의 파드를 동작하게 해준다. 예를 들어, 워크로드가 데이터를 지속적으로 기록하는 경우, 사용자는
Pod
와 PersistentVolume를 연계하는StatefulSet
을 실행할 수 있다.
전체적인 회복력 향상을 위해서,StatefulSet
의Pods
에서 동작 중인 코드는 동일한StatefulSet
의 다른Pods
로 데이터를 복제할 수 있다. - DaemonSet: 노드-로컬 기능(node-local facilities)을 제공하는
Pods
를 정의한다. 이러한 기능들은 클러스터를 운용하는 데 기본적인 것이다. 예를 들면 네트워킹 지원 도구 또는 add-on등이 있다.DaemonSet
의 명세에 맞는 노드를 클러스터에 추가할 때마다, 컨트롤 플레인은 해당 신규 노드에DaemonSet
을 위한Pod
를 스케줄한다. - Job 및 CronJob: 실행 완료 후 중단되는 작업을 정의한다.
CronJobs
이 스케줄에 따라 반복되는 반면, 잡은 단 한 번의 작업을 나타낸다.
- Deployment 및 ReplicaSet:
- 쿠버네티스 생태계 내에서는 추가적인 동작을 제공하는 서드-파티 워크로드 리소스도 찾을 수 있다.
- “커스텀 리소스 데피니션”을 사용하면, 쿠버네티스 코어에서 제공하지 않는 특별한 동작을 원하는 경우 서드-파티 워크로드 리소스를 추가할 수 있다.
- 사용자 애플리케이션을 위한
Pods
의 그룹을 실행하되 모든 파드가 가용한 경우가 아닌 경우 멈추고 싶다면, 사용자는 해당 기능을 제공하는 확장을 구현하거나 설치할 수 있다.
[정리]
워크로드는 쿠버네티스에서 구동되는 애플리케이션을 의미하며 일련의 파드 집합 내에서 실행된다. 여기서 파드는 실행 중인 컨테이너 집합을 의미하며 고유한 라이프사이클을 가지고 있다. 수많은 파드를 관리하기 위해서 워크로드 리소스를 사용할 수 있으며 쿠버네티스 코어에서 제공하는 기본적인 빌트인 리소스 외에 커스텀 리소스 데피니션을 사용하여 서드-파티 워크로드 리소스도 사용할 수 있다.
참고 자료
'Infrastructure > Kubernetes' 카테고리의 다른 글
[Pod] 라이프사이클 (0) | 2022.10.18 |
---|---|
[Pod] 개념 (0) | 2022.10.14 |
[컨테이너] 환경변수와 라이프사이클 훅(Hook) (0) | 2022.10.14 |
[컨테이너] 런타임클래스 (0) | 2022.10.14 |
[컨테이너] 이미지 (0) | 2022.10.14 |