컨트롤러란?
컨트롤러는 파드를 제어한다.
파드에게 부여할 워크로드의 타입, 즉 처리에 따라서 적절한 컨트롤러를 선택해야 한다.
워크로드 타입
프런트엔드 처리
스마트폰, IoT기기, 컴퓨터 등의 클라이언트로부터 요청을 직접 받아들이는 워크로드를 총칭한다.
이 타입의 워크로드는 대량의 클라이언트 요청에 대해 짧은 시간에 응답을 반환하는 것이 중요하다.
실시간으로 반응해야 하고 사용자들이 답답합을 느껴선 안된다.
IoT 기기로부터의 요청은 기기로 부터 끈임없이 만들어지는 데이터를 받아들여서 처리해야 한다.
이러한 워크로드 특성에 대응하기 위해서는 요청에 대응하는 처리를 복수의 파드에 분담하도록 설계해야 한다.
또한, 24시간 무정지로 서비스를 제공하면서도 빠르게 신기능을 배포할 수 있어야 한다.
백엔드 처리
백엔드 처리는 프런트엔드의 뒤에서 업무 특성에 맞게 대응할 수 있는 유연성이 있어야 한다.
요청량이 변하더라도 일정한 응답 속도를 유지해야 하고, 요구 사항에 맞게 단기간에 기능을 추가하고 변경하는 것이 가능해야 한다.
백엔드 처리는 보통 MySQL이나 Redis와 같은 미들웨어를 사용하거나 클라우드 사업자가 제공하는 데이터베이스 관리 서비스를 활용한다.
- 데이터 스토어 : 데이터의 보존과 조회 기능(SQL/NoSQL 데이터베이스 등)
- 캐시 : 복수 파드에서 데이터 공우(세션 정보 공유 등)
- 메시징 : 비동기 시스템 간 연계 가능(메시지 브로커 등)
- 마이크로 서비스 : 전문적 업무 기능 구형(결제, 배송, 결제 승인 등)
- 배치 처리 : 긴 처리 시간을 요하는 업무 기능(기계 학습이나 데이터 분석 등)
시스템 운영 처리
시스템 운영을 돕기 위해 쿠버네티스 API를 사용해서 노드에서 발생하는 에러나 하드웨어 이상을 감지하고 자동으로 대책을 실행하는 파드를 만드는 경우가 있다.
구글이 강조하는 SRE(Site Reliability Engineering)는 소프트웨어 기술자가 시스템 운영의 자동화에 집중하여 효율적인 시스템 운영을 실현한다.
마찬가지로 구글에서 시작된 쿠버네티스는 API를 통해 시스템 운영을 자동화할 수 있는 플랫폼이다.
컨트롤러의 타입
컨트롤러는 다양한 워크로드를 처리하기 위해 파드를 제어하고 실행하는 역활을 담당한다.
디플로이먼트(Deployment)
대등한 관계에 있는 여러 개의 파드로 수평한 클러스터를 구성할 때 사용한다.
정해진 개수만큼 파드가 기동하도록 관리하며, 가동중인 파드를 차례대로 교체하거나 규모를 조절할 수 있는 기능을 갖추고 있다.
스테이트풀셋(StatefulSet)
파드와 퍼시스턴트 볼륨을 조합하여 데이터의 보관에 초점을 둔 컨트롤러다.
파드와 퍼시스턴트 볼륨에 번호를 매겨 관리함으로써 본질적으로 일시적인 존재인 파드가 상태를 가지는 워크로드를 처리할 수 있도록 해준다.
잡(Job)
배치 처리를 하는 컨테이너가 정상 종료할 때까지 재실행을 반복하는 컨트롤러다.
파드 실행 횟수, 동시 실행수, 실행 횟수의 상한을 설정할 수 있으며, 지워질 때까지 로그를 보존한다.
데이터 처리나 과학 분야의 계산 작업 등에 사용된다.
크론잡(CronJob)
지정한 식각에 정기적으로 잡(Job)을 생성한다.
UNIX에서 사용되는 cron과 같은 형식으로 잡의 생성 시각을 설정할 수 있다.
잡을 실행 완료한 파드를 몇 개 까지 보관할 수 있는지 설정할 수 있어, 정기적으로 실행되어야 하는 배치 처리에 적합하다.
데몬셋(DaemonSet)
클러스터의 모든 노드에서 같은 파드를 실행하기 위해 존재한다.
예를 들면, 클러스터 네트워크를 구성하는 파드는 데몬셋에 의해 모든 노드에서 실행되며, 새로운 노드가 추가되면 해당 노드에서 자동으로 실행된다.
시스템 운영 자동화에 적합하다.
레플리카셋(ReplicaSet)
디플로이먼트 컨트롤러와 연동해서 파드가 기동되어야 하는 수를 관리한다.
레플리카셋은 직접 다루기보다는 디플로이먼트를 통해 이용하는 것이 기본이다.
레플리케이션 컨트롤러(Replication Controller)
쿠버네티스의 예전 튜토리얼 등에서 언급되는데 차세대 컨트롤러인 디플로이먼트로 대체되었다.
'Docker & Kubernetes' 카테고리의 다른 글
쿠버네티스 kubectl 커맨드 명령어 시트 (0) | 2021.11.24 |
---|---|
도커 커맨드 명령어 시트 (0) | 2021.11.24 |
서비스의 기본 (0) | 2021.11.23 |
클러스터 네트워크 (0) | 2021.11.23 |
파드의 라이프 사이클과 종료 처리 (0) | 2021.11.23 |