처음 배우는 쿠버네티스 개발 전략
Kubernetes Workload
카테고리 : 처음 배우는 쿠버네티스 개발 전략
Kubernetes Workload
워크로드(Workload)
- 애플리케이션을 실행하는 기본적인 단위
- Process, Instance, Job 등을 포괄하는 의미
- 쿠버네티스
- 컨테이너를 이용해 애플리케이션 실행
- 실행된 컨테이너들을 관리해주고 환경을 만들어주는 역할 수행
- 워커로드 역시 다양한 형태로 만들어서 제공
Kubernetes Workload 객체들
- 독립적으로 사용되는 것이 아니라 서로 연과성을 가지고 있음
- pod를 기본으로 애플리케이션을 어떤 성격으로 사용할 것인가에 따라서 종류가 달라짐
- 워크로드의 개념을 포함하는 상위 개념의 워크로드가 존재하는 경우가 있음
- pod
- 쿠버네티스의 가장 기본적이고 작은 구성요소
- 애플리케이션을 java, python, node 등의 명령어로 실행하면 하나의 프로세스가 실행됨
- 컨테이너로 만들어서 실행하면 pod 단위가 됨
- 일반적인 인스턴스보다 살짝 큰 단위
- 많은 경우 하나의 파드는 하나의 어플리케이션을 의미
- 파드는 애플리케이션 인스턴스와 비슷한 범위를 가진 워크로드 객체
- replicaset
- 같은 파드를 여러 개 실행할 수 있도록 도와주는 단위
- 파드의 수량 관리, 동일한 스펙의 파드 다수 실행
- 서버 이중화 -> 같은 프로세스를 다른 머신에 하나씩 실행
- 스케일 아웃 -> 많은 수의 인스턴스를 만들어 냄
- replicaset을 통해 pod의 수량을 조정할 수 있음
- 서로 다른 파드들을 묶어서 관리하는 개념이 아님
- Deployment
- replicaset의 버전 관리, 업데이트 수행
- 롤링 업데이트 기능 수행
- 서비스 중단을 최소화하여 순차적 업데이트
- 배포 오류 시 롤백 작업 수행
- pod, replicaset 보다 많은 기능을 수행함
- 수량 조절, 버전 관리 등을 위해 deployment를 사용하여 pod와 replicaset을 관리하는 경우가 많음
- StatefulSet
- 다수의 파드를 실행하고 관리해줌
- replicaset은 파드를 임의로 생성하고 종료
- StatefulSet 파드를 순차적으로 생성하고 종료
- replicaset과 deployment는 상태가 없는 애플리케이션(스테이트리스 애플리케이션) 개발에 특화되어 있음
- 쿠버네티스에서 데이터를 저장 관리 하는 애플리케이션이 실행해야 한다면?
- 해당 파드가 종료후 재실행되었을때 완전히 초기화 되면 안됨
- StatefulSet은 파드가 실행되거나 종료될때 번호를 붙여서 식별할 수 있게 해준다
- 같은 파드를 여러 개 실행할 수 있도록 도와주는 단위