I. Container-Driven 오케스트레이션 플랫폼, 쿠버네티스의 개요
가. 쿠버네티스의 정의
- 컨테이너화 된 워크로드와 서비스를 관리하기 위한 이식성/확장 가능한 오픈소스 SW/플랫폼
나. 쿠버네티스의 특징
특징 |
내용 |
Fault Tolerance |
- 점진적 업데이트 제공, 서비스 중단 없이 업데이트 가능 - 자가회복(Self-Healing), 장애 시 복제 컨테이너 생성해서 서비스 시작 |
Vender Lock In |
- 도커 컨테이너 기반, 특정 업체에 종속되지 않고 클라우드 환경 이전 |
다. 쿠버네티스의 등장배경
특징 |
내용 |
마이크로 서비스 아키텍처 발전 |
- 1~2코어 운영의 작은 서비스 다수 등장 - VM 운영 환경의 낭비 증가 |
솔루션 발전 |
- VM이나 컨테이너 단위로 배포하는 피닉스 서버 패턴 - 지능형 라우팅, 분산 트랜잭션 로그 추적 |
데브옵스 성숙화 |
- 플랫폼과 자동화 목표의 역할 명확화 |
II. 쿠버네티스의 구성도 및 구성요소
가. 쿠버네티스의 구성도
- 컨테이너가 배포되는 가상 또는 물리머신인 노드의 집합 전체를 쿠버네티스 마스터에서 관리
나. 쿠버네티스의 구성요소
구분 |
항목 |
내용 |
마스터 노드 |
컨트롤 매니저 |
- 쿠버네티스의 전체 시스템을 관리하고 통제하는 에이전트 |
API 서버 |
- 각 노드의 Kubelet과 통신하기 위한 API 서버 |
|
Etcd |
- 쿠버네티스의 각종 설정 파일들을 저장하고 있는 영구적인 저장 공간 |
|
스케줄러 |
- 적재적소에 맞는 노드에 Pod를 할당해주기 위한 JOB스케줄러 |
|
워커 노드 |
Kubelet |
- 노드에 배포되는 에이전트, 마스터 API 서버와 통신을 하면서, 노드가 수행해야 할 명령을 받아서 수행하고, 반대로 노드의 상태 등을 마스터로 전달하는 역할 수행 |
Kube-proxy |
- 노드로 들어오는 네트워크 트래픽을 적절한 컨테이너로 라우팅하고, 로드밸런싱 등 노드로 들어오고 나가는 네트워크 트래픽을 프록시하고, 노드와 마스터간의 네트워크 통신을 관리 |
|
컨테이너 런타임 |
- Pod를 통해서 배포된 컨테이너를 실행하는 컨테이너 런타임 |
III. 쿠버네티스의 도입효과
도입효과 |
내용 |
Agile 애플리케이션 생성/배포 |
- VM 이미지 사용 대비 컨테이너 이미지 생성이 보다 쉽고 효율적 |
지속적 개발/통합/배포 |
- 안정적/주기적으로 컨테이너 이미지를 빌드 및 배포 - 빠르고 쉽게 롤백 가능 |
개발/운영 관심사 분리 |
- 빌드/릴리스 시점에 애플리케이션 컨테이너 이미지 생성 - 애플리케이션이 인프라 스트럭처에서 디커플(Decouple)된다. |
가시성 |
- OS 수준의 정보와 메트릭에 머무르지 않고, 애플리케이션의 헬스와 그 밖의 시그널 모니터링 |
개발/테스팅/운영환경 일관성 |
- 개인용 컴퓨터 에서도 클라우드 에서와 동일하게 구동 |
클라우드, 타 OS간 이식성 |
- Ubuntu, RHEL, CoreOS, on-prem 등 다른 OS에서도 구동 가능 |
어플리케이션 중심관리 |
- OS의 논리적인 자원을 사용하여 애플리케이션을 구동 - 추상화 수준이 높아짐 |
마이크로 서비스 |
- 모놀리식 스택으로 구동되지 않고 보다 작고 독립적인 단위로 쪼개져서 동적으로 배포되고 관리 |
자원 격리 |
- 애플리케이션 성능 예측 |
자원 사용량 |
- 고효율 고집적 자원 사용 |
IV. 도커의 오케스트레이션 관리를 위한 도커 스웜의 개요
가. 도커 스웜(Docker Swarm)의 개념
- 단일 호스트인 도커를 멀티 호스트로 전개하고 클러스터링 기반의 고가용성, 오토 스케일링 및 통합관리 환경을 제공하는 오케스트레이션 도구
나. 도커 스웜의 특징
특징 |
내용 |
컨테이너 통합관리 |
- 단일 호스트인 도커 시스템의 멀티 호스트 통합관리 |
클러스터링 |
- 멀티 호스트 기반의 클러스터링을 통해 고가용성, 부하분산 기능 제공 |
AP릴리즈 지원 |
- 컨테이너 기반의 AP릴리즈의 안정적 업데이트 지원 |
- 도커 버전 1.12부터 스웜모드라는 이름으로 도커와 통합 제공
다. 도커 스웜의 구성
구성요소 |
상세내용 |
세부기술 |
Master Node (Manager) |
- 클러스터의 관리작업 처리 - 클러스터 상태관리, 서비스 스케줄링 수행 - 고가용성을 위해 다수의 노드로 관리 |
- Raft 알고리즘 - HTTP API Endpoint |
Worker Node |
- 컨테이너를 실행하기 위한 노드 - 컨테이너 로드밸런싱, 상태체크, 명령 수행 |
- 로드밸런싱 - 헬스 체크 스웜 |
Service |
- 기본적인 배포 단위 - 하나의 서비스는 하나의 이미지를 기반으로 생성하고 동일한 컨테이너를 한 개 이상 실행 |
- 롤링 업데이트 - Replicaton Task |
라. 도커 스웜의 주요기능
주요기능 |
상세내용 |
스케줄링 |
- 서비스의 워커노드 배포 - 특정 노드에 라벨을 제정하여 특정 노드 또는 모든 한대씩 배포 가능 |
고가용성 |
- 다수의 매니저 노드 운영으로 서비스 연속성 제공 - 컨테이너 장애 시 다른 워커 노드에 컨테이너 생성 |
서비스 디스커버리 |
- 자체 DNS 서버를 이용하여 서비스 이름으로 직접 접근 가능 - 멀티 호스트 네트워크를 이용하여 여러 노드에 분산된 컨테이너가 같은 네트워크로 구성 |
롤링 업데이트 |
- 서비스를 새로운 이미지로 순차적 업데이트 |
멀티 호스트 네트워크 |
- 여러 노드에 분산된 컨테이너를 하나의 네트워크로 구성 - 컨테이너마다 독립된 IP 생성 |
로깅, 모니터링 |
- 다수의 노드에서 실행중인 컨테이너 로그 및 리소스 모니터링 |
로드 밸런싱 |
- 외부 로드밸런스로 서비스 포트 부하분산 가능 - 노드들 간에 서비스 컨테이너 분산 방식 설정 |
마. 컨테이너 오케스트레이션 비교
구분 |
도커스웜 |
쿠버네티스 |
Apache Mesos DC/OS |
운영 Host수 |
1,000노드 |
1,000노드 |
10,000노드 |
라이선스 모델 |
아파치 |
아파치 |
아파치 |
규모 |
소/중규모 |
중/대규모 |
중/대규모 |
특징 |
편의성 높음 |
높은 안정성 |
고수준 UI |
- 현재 쿠버네티스가 사실상 표준으로 가장 많은 레퍼런스 보유, 도커는 플러그인을 통해 쿠버네티스 설치 가능
- 도커 스웜은 상대적으로 설치 및 편이성이 간편하여 소/중규모에서 사용
'IT기술노트 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
HA (High Availability), 고가용성 (0) | 2022.01.27 |
---|---|
프로세스 간 통신(IPC, Inter-Process Communication) (0) | 2021.12.30 |
우선순위 역전(Priority Inversion) (0) | 2021.10.20 |
데스크탑 가상화(VDI, Virtual Desktop Infrastructure) (0) | 2021.03.12 |
도커(Docker) (0) | 2021.03.12 |
하이퍼바이저(Hypervisor) (0) | 2021.03.12 |
가상화(Virtualization) (0) | 2021.03.12 |
운영체제(OS, Operating System) (0) | 2021.03.12 |
댓글