컨테이너 오케스트레이션

혀어어언·2023년 4월 11일
0

Docker

목록 보기
11/11

클라우드 활용 실태 관련 보고서

https://info.flexera.com/CM-REPORT-State-of-the-Cloud

컨테이너 오케스트레이션이란?

컨테이너 오케스트레이션은 여러 대의 서버에 걸쳐서 컨테이너를 배포, 관리하는 프로세스를 자동화하는 기술입니다. 컨테이너 오케스트레이션은 앱을 더욱 효율적으로 실행할 수 있도록 도와줍니다.

컨테이너 오케스트레이션의 기능?

컨테이너 스케줄링

  • 컨테이너를 실행할 호스트 노드를 자동으로 선택하고 배치하는 작업을 수행합니다. 이를 통해 앱의 가용성을 높일 수 있습니다. 스케줄러는 여러 가용 옵션 중에서 최적의 호스트 노드를 선택합니다.

컨테이너 클러스터링

  • 여러 대의 노드를 하나의 클러스터로 묶어 앱을 분산하여 실행하고 자원을 효율적으로 활용하는 기능입니다.
  • 여러 대의 컨테이너를 묶어 하나의 서버처럼 사용할 수 있도록 지원합니다.
  • 클러스터를 덩어리 지어 주고 클러스터 내의 자원들에 접속할 수 있게 해주며 또한 이 자원들이 잘 배분되도록 해 주는 역할을 합니다.

서비스 디스커버리

  • 컨테이너가 실행 중인 호스트 노드의 IP 주소를 자동으로 추적하고, 서비스 이름과 IP 주소 등을 관리하여 앱 간의 연결을 관리합니다.
  • 앱을 사용하는 클라이언트가 호스트 노드를 찾을 수 있도록 합니다.

오토 스케일링(auto scaling)

  • 앱의 트래픽이 증가할 때 자동으로 새로운 호스트 노드를 추가하여, 자원 사용량을 최적화하고 앱의 가용성을 보장합니다.

로드 밸런싱

  • 컨테이너가 여러 대의 호스트 노드에 분산되어 실행되기 때문에, 로드 밸런싱을 수행하여 트래픽을 효율적으로 분배합니다.

롤아웃과 롤백

  • 새로운 앱 버전이 배포될 때 서비스 중단 없이 천천히 업데이트를 수행하는 롤 아웃 기능을 제공합니다.
  • 이슈 발생 시 이전 버전으로 롤백

자동 복구

  • 컨테이너나 노드의 장애 시 자동으로 복구

모니터링과 로깅

  • 클러스터 내의 여러 컨테이너와 호스트 노드의 상태를 모니터링하고, 로그를 수집합니다. 이를 통해 앱의 성능을 분석할 수 있으며 문제점을 신속하게 파악할 수 있습니다.

보안과 네트워크 관리

  • 컨테이너와 노드의 보안을 관리하고 네트워크 설정을 관리하는 기능을 제공합니다.

대표적인 컨테이너 오케스트레이션 툴

  • 도커 스웜(Docker Swarm)
  • 쿠버네티스(Kubernetes)
  • GKE(Google Kubernetes Engine)
  • AWS ECS/EKS

도커 스웜

  • Docker Inc.이 개발한 도커 컨테이너 오케스트레이션 도구
  • Docker Swarm은 2015년 Docker 1.12 버전에서 처음 발표됨
  • 쿠버네티스 등장 전까지 가장 대중적인 컨테이너 오케스트레이션 도구 중 비교적 간단하게 작동하고 설정이 쉽습니다.
  • 또한 도커에서 제공하는 툴이기 때문에 기존의 Docker 생태계와의 호환성이 높으며, Docker 엔진에 내장되어 있으므로, Docker 사용자들이 쉽게 사용할 수 있습니다.

쿠버네티스(Kubernetes)

  • Google에서 개발오픈소스 기반 프로젝트로, 구글은 2014년에 쿠버네티스 프로젝트를 오픈소스화했으며 현재는 리눅스 재단에 의해 관리되고 있습니다.
  • 구글에는 Gamil, 유튜브 검색 등 다양한 웹 서비스가 있고 대용량 트래픽을 감당해야 하는 상황에서, 이를 위해 쿠버네티스 프로젝트를 시작, 실제 서비스에 적용하고 있는 사례
  • v1.0이 2015년 7월 21에 출시
  • 대규모에 적합
    • 스케일링 기능 강화(Replicatio Controller, 컨테이너 수를 동적으로 조절)
    • 서비스 디스커버리 기능 강화(DNS 기반)
  • 베어 메탈, VM 환경 등 다양한 환경에서 동작

GKE(Google Kubernetes Engine)

  • GCP에서 제공하는 쿠버네티스 기반의 관리형 컨테이너 오케스트레이션 서비스
  • Google의 인프라 구조를 사용하며 쿠버네티스(Kubernetes)의 모든 기능을 지원합니다.

ECS(Amazon Elastic Container Service)

  • AWS에서 제공하는 관리형 컨테이너 오케스트레이션 서비스
  • Docker 컨테이너를 실행하기 위한 기능 제고
  • 기존의 EC2 인스턴스를 사용하여 컨테이너 배포, 관리, 스케일링
  • 다양한 AWS 서비스와 연동이 가능

EKS(Amazon Elastic Kubernetes Service)

  • AWS에서 제공하는 관리형 쿠버네티스 서비스
  • EKS는 쿠버네티스 기반으로 구축되어 있음
  • 사용자가 직접 Kubernetes 마스터 노드를 관리할 필요 없이, 자동으로 프로비저닝하여 쿠버네티스 API를 통해 클러스터 생성 및 관리 가능
  • Kubernetes의 모든 기능을 지원하며, Amazon VPC(Virtual Private Cloud)와 통합하여 사용 가능

0개의 댓글