DevOps를 위한 14가지 컨테이너 오케스트레이션 도구

시장에서 사용 가능한 몇 가지 인기 있는 컨테이너 오케스트레이션 도구에 대해 이야기해 보겠습니다.

컨테이너 오케스트레이션이란 무엇입니까?

Docker와 같은 컨테이너 플랫폼은 요즘 마이크로서비스 아키텍처를 기반으로 애플리케이션을 패키징하는 데 매우 인기가 있습니다. 컨테이너는 확장성이 뛰어나 온디맨드 방식으로 생성할 수 있습니다. 이것은 몇 개의 컨테이너에 적합하지만 수백 개의 컨테이너가 있다고 상상해 보십시오.

수요에 따라 숫자가 동적으로 증가하면 컨테이너 수명 주기 및 관리를 관리하는 것이 극도로 어려워집니다.

컨테이너 오케스트레이션은 컨테이너의 일정, 배포, 확장성, 로드 밸런싱, 가용성 및 네트워킹을 자동화하여 문제를 해결합니다. 컨테이너 오케스트레이션은 컨테이너 및 서비스의 수명 주기를 자동화하고 관리하는 것입니다.

여러 컨테이너와 마이크로서비스 아키텍처를 대규모로 관리하고 구성하는 프로세스입니다.

운 좋게도 시장에는 많은 컨테이너 오케스트레이션 도구가 있습니다.

그들을 탐험하자!

쿠버네티스

당신은 그것을 추측, 그렇지?

쿠버네티스 원래 Google에서 설계하고 현재 Cloud Native Computing Foundation에서 유지 관리하는 오픈 소스 플랫폼입니다. Kubernetes는 선언적 구성과 자동화를 모두 지원합니다. 컨테이너화된 워크로드 및 서비스의 배포, 확장 및 관리를 자동화하는 데 도움이 될 수 있습니다.

Kubernetes.io의 이미지

Kubernetes API는 사용자, 클러스터 구성 요소 및 외부 타사 구성 요소 간의 통신을 설정하는 데 도움이 됩니다. Kubernetes 제어 평면과 노드는 함께 클러스터를 형성하는 노드 그룹에서 실행됩니다. 애플리케이션 워크로드는 작업자 노드에서 실행되는 하나 이상의 포드로 구성됩니다. 제어 평면은 Pod 및 작업자 노드를 관리합니다.

Babylon, Booking.com, AppDirect와 같은 회사는 Kubernetes를 광범위하게 사용합니다.

특징

  • 서비스 검색 및 로드 밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃 및 롤백
  • 수평적 스케일링
  • 비밀 및 구성 관리
  • 자가 치유
  • 일괄 실행
  • IPv4/IPv6 이중 스택
  • 자동 빈 포장

쿠버네티스를 배우고 싶으신가요? 이 학습 자료를 확인하십시오.

오픈시프트

레드햇 제안 오픈시프트 서비스로서의 컨테이너 플랫폼(PaaS). 하이브리드 클라우드 환경에서 안전하고 확장 가능한 리소스에서 애플리케이션을 자동화하는 데 도움이 됩니다. 컨테이너화된 애플리케이션을 구축, 배포 및 관리하기 위한 엔터프라이즈급 플랫폼을 제공합니다.

이미지 제공: Openshift

Redhat 엔터프라이즈 Linux 및 Kubernetes 엔진을 기반으로 합니다. Openshift에는 UI 및 CLI를 통해 클러스터를 관리하는 다양한 기능이 있습니다. Redhat은 두 가지 이상의 변형으로 Openshift를 제공합니다.

  • Openshift Online – SaaS(Software as a Service)로 제공
  • OpenShift Dedicated – 관리형 서비스로 제공

Openshift Origin(Origin Community Distribution)은 OpenShift Container Platform, Openshift Online 및 OpenShift Dedicated에서 사용되는 오픈 소스 업스트림 커뮤니티 프로젝트입니다.

유목민

유목민 간단하고 유연하며 사용하기 쉬운 워크로드 오케스트레이터로 온프레미스와 클라우드 전반에서 대규모로 컨테이너와 컨테이너화되지 않은 애플리케이션을 배포하고 관리합니다. Nomad는 리소스 풋프린트가 작은(35MB) 단일 바이너리로 실행되며 macOS, Windows 및 Linux에서 지원됩니다.

개발자는 애플리케이션 배포를 위해 선언적 코드형 인프라(IaC)를 사용하고 애플리케이션 배포 방법을 정의합니다. Nomad는 장애로부터 애플리케이션을 자동으로 복구합니다.

Nomad의 이미지

모든 유형의 Nomad Orchestrate 애플리케이션(컨테이너뿐 아니라). Docker, Windows, Java, VM 등에 대한 최고 수준의 지원을 제공합니다.

특징

  • 간단하고 신뢰할 수 있음
  • 재작성 없이 레거시 애플리케이션 현대화
  • 규모에 따른 손쉬운 연합
  • 입증된 확장성
  • 간편한 멀티 클라우드
  • Terraform, Consul 및 Vault와의 기본 통합

도커 스웜

도커 스웜 선언적 모델을 사용합니다. 원하는 서비스 상태를 정의할 수 있으며 Docker는 해당 상태를 유지합니다. Docker Enterprise Edition은 Kubernetes를 Swarm과 통합했습니다. Docker는 이제 오케스트레이션 엔진을 선택할 때 유연성을 제공합니다. 도커 엔진 CLI는 애플리케이션 서비스를 배포할 수 있는 도커 엔진 무리를 만드는 데 사용됩니다.

Docker의 이미지

Docker 명령은 클러스터와 상호 작용하는 데 사용됩니다. 클러스터에 참여하는 시스템을 노드라고 하며 Swarm 관리자는 클러스터의 활동을 처리합니다.

Docker Swarm은 두 가지 주요 구성 요소로 구성됩니다.

  • 관리자 – 관리자 노드는 스웜의 작업자 노드에 작업을 할당합니다. 리더는 Raft 합의 알고리즘을 기반으로 선출됩니다. 리더는 모든 떼 관리 및 떼에 대한 작업 오케스트레이션 결정을 처리합니다.
  • 작업자 노드 – 작업자 노드는 관리자 노드에서 작업을 수신하고 실행합니다.

특징

  • Docker 엔진과 통합된 클러스터 관리
  • 분산된 디자인
  • 선언적 서비스 모델
  • 스케일링
  • 원하는 상태 조정
  • 다중 호스트 네트워킹
  • 서비스 발견
  • 부하 분산
  • 기본적으로 보안
  • 롤링 업데이트

도커 작성

도커 작성 함께 작동하는 다중 컨테이너 애플리케이션을 정의하고 실행하기 위한 것입니다. Docker-compose는 소프트웨어 종속성을 공유하고 함께 오케스트레이션 및 확장되는 상호 연결된 서비스 그룹을 설명합니다.

YAML 파일(dockerfile)을 사용하여 애플리케이션 서비스를 구성할 수 있습니다. 그런 다음 docker-compose up 명령을 사용하여 구성에서 모든 서비스를 만들고 시작합니다.

docker-compose.yml은 다음과 같습니다.

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Docker Compose를 사용하여 앱 코드를 내부 네트워크를 사용하여 통신하는 독립적으로 실행되는 여러 서비스로 인수할 수 있습니다. 이 도구는 애플리케이션의 전체 수명 주기를 관리하기 위한 CLI를 제공합니다. Docker Compose는 전통적으로 개발 및 테스트 워크플로에 중점을 두었지만 이제는 보다 생산 지향적인 기능에 집중하고 있습니다.

Docker Engine은 Docker Machine 또는 전체 Docker Swarm 클러스터와 함께 프로비저닝된 독립 실행형 인스턴스일 수 있습니다.

특징

  • 단일 호스트의 여러 격리된 환경
  • 컨테이너 생성 시 볼륨 데이터 보존
  • 변경된 컨테이너만 재생성
  • 변수 및 환경 간 컴포지션 이동

미니큐브

미니쿠베 사용자가 로컬에서 Kubernetes를 실행할 수 있습니다. Minikube를 사용하면 개인용 컴퓨터의 단일 노드 Kubernetes 클러스터 내에서 로컬로 애플리케이션을 테스트할 수 있습니다. Minikube는 Kubernetes 대시보드에 대한 통합 지원을 제공합니다.

Minikube는 최신 안정적인 Kubernetes 릴리스를 실행하며 다음 기능을 지원합니다.

  • 부하 분산
  • 멀티 클러스터
  • 영구 볼륨
  • 노드포트
  • ConfigMap 및 비밀
  • 컨테이너 런타임: Docker, CRI-O 및 컨테이너식
  • CNI(컨테이너 네트워크 인터페이스) 활성화

마라톤

마라톤 앱과 프레임워크를 오케스트레이션할 수 있는 기능이 있는 Apache Mesos용입니다.

Apache Mesos는 오픈 소스 클러스터 관리자입니다. Mesos는 컨테이너화된 워크로드와 컨테이너화되지 않은 워크로드를 모두 실행할 수 있는 Apache의 프로젝트입니다. Mesos 클러스터의 주요 구성 요소는 Mesos 에이전트 노드, Mesos 마스터, ZooKeeper, 프레임워크입니다. 프레임워크는 마스터와 협력하여 에이전트 노드에 작업을 예약합니다. 사용자는 Marathon 프레임워크와 상호 작용하여 작업을 예약합니다.

마라톤 스케줄러는 ZooKeeper를 사용하여 작업을 제출할 현재 마스터를 찾습니다. 마라톤 스케줄러와 메소스 마스터는 고가용성을 보장하기 위해 보조 마스터를 실행합니다. 클라이언트는 REST API를 사용하여 마라톤과 상호 작용합니다.

특징

  • 고가용성
  • 상태 저장 앱
  • 아름답고 강력한 UI
  • 제약
  • 서비스 검색 및 로드 밸런싱
  • 상태 확인
  • 이벤트 구독
  • 측정항목
  • REST API

흐리다

흐리다 컨테이너 및 마이크로 서비스의 배포 자동화 및 수명 주기 관리를 위한 오픈 소스 클라우드 오케스트레이션 도구입니다. 인프라 수준에서 주문형 클러스터, 자동 복구 및 확장과 같은 기능을 제공합니다. Cloudify는 컨테이너 인프라를 관리하고 컨테이너 플랫폼에서 실행되는 서비스를 오케스트레이션할 수 있습니다.

다음을 포함하여 Docker 및 Docker 기반 컨테이너 관리자와 쉽게 통합할 수 있습니다.

  • 도커
  • 도커 스웜
  • 도커 작성
  • 쿠버네티스
  • 아파치 메소스

Cloudify는 컨테이너 클러스터를 생성, 복구, 확장 및 해체하는 데 도움이 될 수 있습니다. 컨테이너 오케스트레이션은 컨테이너 관리자가 실행할 수 있는 확장 가능하고 고가용성 인프라를 제공하는 데 중요합니다. Cloudify는 플랫폼 전반에 걸쳐 이기종 서비스를 오케스트레이션하는 기능을 제공합니다. CLI 및 Cloudify Manager를 사용하여 애플리케이션을 배포할 수 있습니다.

목장 경영자

목장 경영자 소로 알려진 컨테이너 오케스트레이션을 사용하는 오픈 소스 플랫폼입니다. Kubernetes, Swarm, Mesos와 같은 오케스트레이션 서비스를 활용할 수 있습니다. Rancher는 컨테이너를 관리하는 데 필요한 소프트웨어를 제공하므로 조직이 고유한 오픈 소스 기술 세트를 사용하여 컨테이너 서비스 플랫폼을 처음부터 구축할 필요가 없습니다.

Rancher 2.x를 사용하면 고객이 지정한 공급자에서 실행되는 Kubernetes 클러스터를 관리할 수 있습니다.

Rancher를 시작하는 것은 두 단계 프로세스입니다.

Linux 호스트 준비

64비트 Ubuntu 16.04 또는 18.04(또는 지원되는 다른 Linux 배포 및 최소 4GB 메모리가 있는 Linux 호스트를 준비합니다. 호스트에 지원되는 Docker 버전을 설치합니다.

서버 시작

Rancher를 설치하고 실행하려면 호스트에서 다음 Docker 명령을 실행하십시오.

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

rancher 사용자 인터페이스를 통해 수천 개의 Kubernetes 클러스터 및 노드를 관리할 수 있습니다.

컨테이너선

Containership은 멀티 클라우드 Kubernetes 인프라의 배포 및 관리를 지원하기 위한 것입니다. 단일 도구로 퍼블릭, 프라이빗 클라우드 및 온프레미스 환경에서 유연하게 운영할 수 있습니다. 모든 주요 클라우드 제공업체에서 Kubernetes 클러스터를 프로비저닝, 관리 및 모니터링할 수 있습니다.

Containership은 프로비저닝을 위한 Terraform, 모니터링을 위한 Prometheus, 네트워킹 및 정책 관리를 위한 Calico와 같은 클라우드 네이티브 도구를 사용하여 구축됩니다. 바닐라 쿠버네티스를 기반으로 구축되었습니다. Containership 플랫폼은 직관적인 대시보드와 복잡한 자동화를 위한 강력한 REST API를 제공합니다.

특징

  • 멀티클라우드 대시보드
  • 감사 로그
  • GPU 인스턴스 지원
  • 무중단 업그레이드
  • 스케줄링 가능한 마스터
  • 통합 지표
  • 실시간 로깅
  • 다운타임 없는 배포
  • 영구 스토리지 지원
  • 개인 레지스트리 지원
  • 워크로드 자동 확장
  • SSH 키 관리

AZK

AZK 매니페스트 파일(Azkfile.js)을 통해 개발 환경을 위한 오픈 소스 오케스트레이션 도구로, 개발자가 다양한 오픈 소스 기술로 웹 애플리케이션을 개발하기 위해 일반적으로 사용되는 도구를 설치, 구성 및 실행할 수 있습니다.

AZK는 가상 머신 대신 컨테이너를 사용합니다. 컨테이너는 더 나은 성능과 더 적은 물리적 리소스 소비를 제공하는 가상 머신과 같습니다.

Azkfile.js 파일을 재사용하여 새 구성 요소를 추가하거나 처음부터 새 구성 요소를 만들 수 있습니다. 공유할 수 있으므로 다른 프로그래머의 컴퓨터에 있는 개발 환경 간에 완전한 패리티가 보장되고 배포 중 버그가 발생할 가능성이 줄어듭니다.

GKE

GKE Google Cloud Platform에서 컨테이너 애플리케이션 조정을 위한 완전 관리형 솔루션을 제공합니다. GKE 클러스터는 Kubernetes를 기반으로 합니다. Kubernetes CLI를 사용하여 클러스터와 상호 작용할 수 있습니다. Kubernetes 명령을 사용하여 애플리케이션을 배포 및 관리하고, 관리 작업을 수행하고, 정책을 설정하고, 배포된 워크로드의 상태를 모니터링할 수 있습니다.

GCP 제공 이미지

Google Cloud의 고급 관리 기능은 Google Cloud의 부하 분산, 노드 풀, 노드 자동 크기 조정, 자동 업그레이드, 노드 자동 복구, 로깅 및 Google Cloud 운영 제품군을 통한 모니터링과 같은 GKE 클러스터에서도 사용할 수 있습니다.

GCP는 애플리케이션 컨테이너를 빌드하고 제공하는 데 도움이 되는 CI/CD 도구를 제공합니다. Cloud Build를 사용하여 다양한 소스 코드 저장소에서 컨테이너 이미지(예: Docker)를 빌드하고 Container Registry를 사용하여 컨테이너 이미지를 저장할 수 있습니다.

GKE는 사전 빌드된 배포 템플릿이 포함된 엔터프라이즈급 솔루션입니다.

GKE 학습에 관심이 있으세요? 이것을 확인하십시오 초보자 코스.

AKS

AKS 서버리스 Kubernetes, 보안 및 거버넌스를 제공하는 Azure에서 제공하는 완전 관리형 Kubernetes 서비스입니다. AKS는 Kubernetes 클러스터를 관리하고 컨테이너화된 애플리케이션을 쉽게 배포할 수 있도록 합니다. AKS는 모든 Kubernetes 마스터 및 노드를 자동으로 구성합니다. 에이전트 노드만 관리하고 유지하면 됩니다.

Azure의 이미지

AKS는 무료입니다. 마스터가 아닌 클러스터 내의 에이전트 노드에 대해서만 비용을 지불합니다. Azure Portal에서 또는 프로그래밍 방식으로 AKS 클러스터를 만들 수 있습니다. Azure는 고급 네트워킹, Azure Active Directory 통합 및 Azure Monitor를 사용한 모니터링과 같은 추가 기능도 지원합니다.

AKS는 Windows Server 컨테이너도 지원합니다. 클러스터 및 배포된 애플리케이션 성능은 Azure Monitor에서 모니터링할 수 있습니다. 로그는 Azure Log Analytics 작업 영역에 저장됩니다.

AKS는 Kubernetes 준수 인증을 받았습니다.

AWS EKS

AWS EKS 완전 관리형 Kubernetes 서비스입니다. AWS에서는 컨테이너용 서버리스 컴퓨팅인 AWS Fragrate를 사용하여 EKS 클러스터를 실행할 수 있습니다. Fragrance를 사용하면 서버를 프로비저닝하고 관리할 필요가 없으므로 애플리케이션당 리소스당 지불이 가능합니다.

AWS는 Amazon CloudWatch, Amazon Virtual Private Cloud(VPC), AWS Identity, Auto Scaling Groups, Access Management(IAM), 모니터링, 확장 및 로드 밸런싱 애플리케이션과 같은 추가 기능을 EKS와 함께 사용할 수 있도록 허용합니다. EKS는 AWS 앱 메시와 통합되어 Kubernetes 기본 환경을 제공합니다. EKS는 최신 Kubernetes를 실행하고 Kubernetes 인증을 받았습니다.

결론

결국 위의 목록이 다양한 컨테이너 오케스트레이션 도구에 대한 공정한 이해를 제공하고 이제 사용 사례에 따라 최상의 도구를 선택하는 것이 더 쉬웠기를 바랍니다.

다음으로 Kubernetes 관리 소프트웨어를 찾으십시오.