Kubernetes란?

완료됨

컨테이너의 원자성과 결합된 마이크로 서비스의 분리된 디자인을 통해 수요에 대응하는 앱을 스케일 아웃할 수 있습니다. 드론 추적 앱과 같은 복잡한 솔루션에서 컨테이너를 배포, 업데이트, 모니터링 및 제거하는 프로세스에는 문제가 있습니다.

Kubernetes의 내용을 살펴보기 전에 먼저 컨테이너 관리와 오케스트레이터라는 두 가지 개념을 이해해야 합니다.

컨테이너 관리란?

컨테이너 관리는 많은 컨테이너를 구성, 추가, 제거 또는 업데이트하는 프로세스입니다.

드론 추적 앱은 캐싱, 큐 또는 데이터 처리와 같은 작업을 담당하는 여러 마이크로 서비스로 구성됩니다. 이러한 각 서비스는 서로 독립적으로 배포, 업데이트 및 크기 조정되는 컨테이너에서 호스트됩니다.

Diagram of a server or application replicated as containers for cloud deployment.

예를 들어, 드론 추적 앱의 웹 사이트를 사용하면 하루 중 특정 시간에 성능을 유지하기 위해 사이트 캐싱 서비스의 인스턴스가 더 많이 필요하므로 캐싱 서비스 컨테이너 인스턴스를 더 추가합니다.

다음으로, 캐싱 인스턴스의 수를 늘렸고 새 버전의 마이크로 서비스를 롤아웃해야 한다고 가정합니다. 새 버전을 사용하려면 활성 컨테이너를 모두 업데이트해야 합니다.

컨테이너 관리는 이러한 수동 반복 작업에 도움이 됩니다.

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

컨테이너 오케스트레이터는 자동으로 컨테이너화된 앱을 배포하고 관리하는 시스템입니다. 관리의 일환으로 오케스트레이터는 환경의 동적 변경 크기 오케스트레이션을 처리하여 배포된 앱 인스턴스 수를 늘리거나 줄입니다. 또한 새 버전의 서비스가 릴리스되면 배포된 모든 컨테이너 인스턴스가 업데이트되도록 보장합니다.

Diagram showing how number of deployed container instances is automatically increased if demand rises and how an orchestrator ensures all deployed instances are updated with the latest software version.

Kubernetes 정의

Kubernetes는 컨테이너화된 워크로드를 관리하고 오케스트레이션하기 위한 이식 가능하고 확장 가능한 오픈 소스 플랫폼입니다. Kubernetes는 복잡한 컨테이너 관리 작업을 간소화하고 다양한 컴퓨팅 환경에서 컨테이너를 오케스트레이션하기 위한 선언적 구성을 제공합니다. 이 오케스트레이션 플랫폼은 PaaS(Platform as a Service) 또는 IaaS(Infrastructure as a Service) 제품에서 이미 알고 있는 동일한 사용 편의성과 유연성을 제공합니다.

Diagram of replicated servers as multiple containers in a Kubernetes cluster.

Kubernetes 이점

Kubernetes 사용의 이점은 작업 추상화를 기반으로 합니다.

Diagram that lists three Kubernetes benefits: self-healing, dynamic scaling, and rolling updates.

필수 구성 요소 작업을 완료해야 합니다.

  • 실패한 컨테이너를 다시 시작하거나 바꾸기와 같은 컨테이너의 자동 복구

  • 수요에 따라 배포된 컨테이너 수를 동적으로 확장 또는 축소

  • 컨테이너의 롤링 업데이트 및 롤백 자동화

  • 스토리지 관리

  • 네트워크 트래픽 관리

  • 사용자 이름, 암호 등 중요한 정보 저장 및 관리

Important

Kubernetes의 모든 이전 측면에는 구성과 기본 기술에 관한 적절한 이해가 필요합니다. 예를 들어 Kubernetes 네트워킹을 구성하려면 가상 네트워크, 부하 분산 장치 및 역방향 프록시와 같은 개념을 이해해야 합니다.

Kubernetes 고려 사항

Kubernetes를 사용하면 데이터 센터를 하나의 대규모 컴퓨팅 리소스로 볼 수 있습니다. 컨테이너를 배포하는 방법과 위치에 대해 걱정할 필요가 없으며 필요에 따라 앱을 배포하고 크기 조정하는 것에 대해서만 걱정할 필요가 있습니다.

Diagram that shows a list of Kubernetes components that including monitoring, microservices, databases, and the Docker runtime.

그러나 Kubernetes는 컨테이너화된 솔루션을 관리하고 오케스트레이션하는 데 필요한 모든 구성 요소와 함께 제공되는 단일 설치 앱이 아님을 이해하는 것이 중요합니다.

  • 배포, 크기 조정, 부하 분산, 로깅 및 모니터링과 같은 측면은 모두 선택 사항입니다. 이와 같은 측면을 해결하기 위해 요구 사항에 맞는 최적의 솔루션을 찾아야 합니다.

  • Kubernetes는 플랫폼에서 실행할 수 있는 앱의 유형을 제한하지 않습니다. 컨테이너에서 앱을 실행할 수 있는 경우 Kubernetes에서 앱을 실행할 수 있습니다. 컨테이너화된 솔루션을 최대한 활용하기 위해 개발자는 마이크로 서비스 아키텍처와 같은 개념을 이해해야 합니다.

  • Kubernetes는 미들웨어, 데이터 처리 프레임워크, 데이터베이스, 캐시 또는 클러스터 스토리지 시스템을 제공하지 않습니다. 이 항목은 모두 컨테이너로 실행되거나 다른 서비스 제공 사항의 일부로 실행됩니다.

  • Kubernetes가 컨테이너를 실행하려면 Docker 또는 containerd와 같은 컨테이너 런타임이 필요합니다. 컨테이너 런타임은 컨테이너 관리를 담당하는 개체입니다. 예를 들어 컨테이너 런타임은 컨테이너의 상태를 시작하고 중지하며 보고합니다.

  • Kubernetes 환경을 유지 관리할 책임이 있습니다. 예를 들어 OS 업그레이드와 Kubernetes 설치 및 업그레이드를 관리해야 합니다. 네트워킹, 메모리 및 스토리지와 같은 호스트 머신의 하드웨어 구성도 관리합니다.

AKS(Azure Kubernetes Service)와 같은 클라우드 서비스는 호스트된 Kubernetes 환경을 제공하여 이 문제를 줄입니다. 또한 이러한 서비스는 Azure에서 컨테이너화된 앱 배포 및 관리를 간소화합니다. AKS를 사용하면 고유한 사용자 지정 Kubernetes 클러스터를 실행하는 복잡성이나 운영 오버헤드 없이 오픈 소스 Kubernetes를 활용할 수 있습니다.

참고

Kubernetes는 때때로 K8s로 축약됩니다. 8은 단어 K[ubernete]s의 K와 s 사이에 있는 8자를 나타냅니다.