Kubernetes vs. Docker : 컨테이너 및 오케스트레이션 이해

소프트웨어 개발의 최신 트렌드를 따라 잡았다면 의심 할 여지없이 반복해서 접한 두 가지 용어가 있습니다. Docker와 Kubernetes는 본질적으로 컨테이너  및  오케스트레이션의 약어입니다  .

Docker 컨테이너는 개발 및 테스트를 통해 프로덕션으로 애플리케이션을 이동하는 프로세스를 간소화하는 데 도움이되었으며, Docker와 Kubernetes는 모두 모 놀리 식 스택 대신 마이크로 서비스 모음으로 애플리케이션을 빌드하고 배포하는 방식을 재창조하는 데 도움이되었습니다.

Docker와 Kubernetes가 중요한 이유는 무엇이며 소프트웨어 개발을 어떻게 바꾸고 있으며 프로세스에서 각각의 역할은 무엇입니까? 아래 질문에 답하려고 노력하겠습니다.

Docker 및 컨테이너

Linux, Windows 및 기타 최신 운영 체제에서 지원되는 컨테이너를 사용하면 시스템의 나머지 부분과 격리 된 독립형 미니 환경에서 소프트웨어를 실행할 수 있습니다. 컨테이너는 VM에 비유되었지만 VM이 아닙니다. 컨테이너는 훨씬 더 간결하고 시작 및 중지가 더 빠르며 훨씬 더 유연하고 이식 가능합니다. 컨테이너는 몇 초 만에 확장 또는 축소하거나 확장 또는 축소 할 수 있으므로 클라우드와 같은 탄력적 인 환경에서 앱을 더 쉽게 실행할 수 있습니다. 

Linux 및 기타 운영 체제는 수년 동안 컨테이너화 된 앱을 지원해 왔지만 컨테이너 작업은 사용자 친화적이지 않았습니다. Docker는 오픈 소스와 상용화 모두에서 컨테이너를 사용자 친화적이고 개발자 친화적 인 상품으로 만드는 소프트웨어입니다. Docker는 컨테이너에 대한 공통 도구 및 메타포 세트를 제공하므로 자체 조직 또는 다른 곳에서 쉽게 배포하고 재사용 할 수있는 컨테이너 이미지로 앱을 패키지화 할 수 있습니다.

간단히 말해서 Docker는 컨테이너 이미지를 생성하고, 버전을 지정하고, 공유하고, 이동하고, 실행중인 컨테이너로 Docker 호환 호스트에 배포 할 수 있습니다.

Docker 및 컨테이너는 언제 사용합니까?

Docker 및 컨테이너는 다음 특성 중 하나 이상이 있어야하는 워크로드를 처리 할 때 가장 적합합니다.

  • 탄력적 인 확장 성.  수요를 충족하기 위해 실행해야하는 앱 인스턴스 수를 알 수 없습니다. 컨테이너화 된 앱 또는 서비스는 컨테이너의 인스턴스를 더 적게 또는 더 많이 배포하여 수요를 충족하도록 확장 할 수 있습니다.
  • 격리.  앱이 다른 앱을 방해하는 것을 원하지 않습니다. API의 여러 버전을 충족시키기 위해 여러 버전의 앱을 나란히 실행하고있을 수 있습니다. 또는 기본 시스템을 깨끗하게 유지하고 싶을 수도 있습니다 (항상 좋은 생각).
  • 휴대 성.  이 앱을 다양한 환경에서 실행해야하며 각 설정을 재현 할 수 있어야합니다. 컨테이너를 사용하면 애플리케이션의 전체 런타임 환경을 패키징하여 개발자 데스크톱, QA 테스트 머신, 로컬 아이언 또는 원격 클라우드와 같은 Docker 호환 호스트가있는 모든 위치에 앱을 쉽게 배포 할 수 있습니다.

Docker 및 컨테이너에 대해 자세히 알아보기

  • Docker 란 무엇입니까? 컨테이너 혁명의 불꽃
  • Docker 및 컨테이너를 사용해야하는 이유
  • Docker 시작하기
  • QA 용 Docker의 숨겨진 이점
  • Docker를 개선하는 12 가지 오픈 소스 도구
  • 더 많은 Docker 뉴스, 분석, 방법, 리뷰 및 조언

Kubernetes 및 컨테이너 오케스트레이션

컨테이너는 주로 프로세스 또는 애플리케이션을 서로 및 기본 시스템으로부터 격리하도록 설계되었습니다. 개별 컨테이너를 만들고 배포하는 것은 쉽습니다. 그러나 여러 컨테이너 (예 : 데이터베이스, 웹 프런트 엔드, 컴퓨팅 백엔드)를 배포, 연결, 관리, 각 컨테이너를 개별적으로 확장 하시겠습니까?  모든 부분을 기능적 전체로 오케스트레이션 하는 방법이 필요합니다  .

이것이 바로 Kubernetes가 수행하는 작업입니다. 컨테이너가 크루즈 승객이라면 Kubernetes가 크루즈 디렉터입니다.

Google에서 만든 프로젝트를 기반으로하는 Kubernetes는 각 컨테이너를 직접 관리 할 필요없이 여러 호스트에서 다중 컨테이너 애플리케이션의 배포 및 관리를 자동화하는 방법을 제공합니다. 개발자는 각 컨테이너가 네트워킹 및 스토리지를 사용하는 방법과 같은 세부 정보를 포함하여 여러 컨테이너에 걸친 애플리케이션의 레이아웃을 설명합니다. Kubernetes는 런타임에 나머지를 처리합니다. 또한 비밀 및 앱 구성과 같은 까다로운 세부 정보의 관리도 처리합니다.

쿠 버네 티스는 예전보다 훨씬 더 많은 턴키 솔루션이기는하지만 잘 사용하려면 어느 정도의 전문 지식이 필요합니다. 사용 편의성의 일부 발전은 일반적인 응용 프로그램에 쉽게 사용할 수있는 레시피 때문입니다 (Helm 차트). 일부는 유명 애플리케이션 스택 및 개발 프레임 워크와 함께 작동하는 유명 브랜드 회사 (Red Hat, Canonical, Docker)에서 생산 한 풍부한 Kubernetes 배포판 때문입니다.

Kubernetes 및 컨테이너 오케스트레이션은 언제 사용합니까?

적은 수의 사용자에게 서비스를 제공하는 간단한 컨테이너화 된 앱은 일반적으로 Kubernetes는 물론 오케스트레이션이 필요하지 않습니다. 그러나 앱에 사소한 수준 이상의 기능이 있거나 사용자 수가 적 으면 오케스트레이션 시스템에서 제공하는 휠을 재발 명하지 않는 것이 어려워집니다. 다음은 오케스트레이션이 그림에 진입해야하는시기를 결정하는 몇 가지 경험 규칙입니다.

  • 앱이 복잡합니다.  두 개 이상의 컨테이너를 포함하는 모든 응용 프로그램이 아마도 적합합니다. 즉, 소수의 사용자에게만 서비스를 제공하는 겸손한 앱은 Kubernetes가 아닌 Docker 스웜 모드와 같은 더 최소한의 솔루션을 통해 오케스트레이션 될 수 있습니다.
  • 앱에는 확장 및 복원력에 대한 요구가 높습니다.  Kubernetes 및 기타 오케 스트레이터를 사용하면 변화하는 조건에 대한 반응을 직접 코딩하는 대신 시스템의 원하는 상태를 설명하여 선언적으로 수요를 충족하도록로드 균형을 조정하고 컨테이너를 가동 할 수 있습니다.
  • 최신 CI / CD 기술을 최대한 활용하려고합니다.  오케스트레이션 시스템은 블루 / 그린 배포 또는 롤링 업그레이드를 사용하는 앱의 배포 패턴을 지원합니다.

Docker와 Kubernetes가 더 친숙한 추상화에 의해 가려지고 컨테이너를 만들고 관리하는 더 우아한 방법으로 나아갈 날이 올 수 있습니다. 하지만 현재 Docker와 Kubernetes는 알고 이해하는 데 중요합니다.

Kubernetes 및 오케스트레이션에 대해 자세히 알아보기

  • Kubernetes 란 무엇입니까? 다음 애플리케이션 플랫폼
  • Kubernetes를 사용해야하는 4 가지 이유
  • 컨테이너 혁명을 주도하는 10 가지 Kubernetes 배포
  • 관리 형 Kubernetes : AWS vs. Azure vs. Google Cloud
  • Hello MicroK8s : 더 간단한 Kubernetes
  • Kubernetes의 새로운 기능
  • 더 많은 Kubernetes 뉴스, 방법, 리뷰, 조언 및 분석