Azure Kubernetes Service란?

완료됨

AKS(Azure Kubernetes Service)를 통해 몇 가지 정의 및 빠른 둘러보기를 시작하겠습니다. 이 개요는 AKS가 컨테이너화 관리 전략에 적합한 플랫폼인지 결정하는 데 도움이 되는 정보를 제공합니다.

컨테이너란?

‘컨테이너’는 특정 애플리케이션에 대한 코드, 종속성 및 구성을 패키지하는 소프트웨어의 원자 단위입니다. 컨테이너를 사용하면 솔루션을 구성하는 개별 서비스로 모놀리식 애플리케이션을 분할할 수 있습니다. 이러한 애플리케이션 재설계를 통해 컨테이너를 통해 이러한 별도의 서비스를 배포할 수 있습니다.

Diagram that shows server or application replicated as containers for cloud deployment.

컨테이너를 사용하는 이유

자산 추적 솔루션에 세 가지 주요 애플리케이션이 포함되어 있다고 가정해 보겠습니다.

  • 추적 중인 자산에 대한 맵과 정보를 포함하는 추적 웹 사이트.

  • 추적된 자산에서 전송된 정보를 수집하고 처리하는 데이터 처리 서비스.

  • 웹 사이트에서 캡처한 고객 정보를 저장하기 위한 MSSQL 데이터베이스입니다.

고객 요구를 충족하려면 솔루션을 스케일 아웃해야 한다는 것을 깨달았습니다.

VM(가상 머신)

한 가지 옵션은 여러 지역에 걸쳐 호스트되는 모든 애플리케이션에 대해 새 가상 머신을 배포하는 것입니다. 그런 다음 애플리케이션을 새 VM에 복사합니다. 그러나 그렇게 하면 사용하는 각 VM의 관리 책임은 사용자에게 있습니다.

규모의 크기를 조정하면 유지 관리 오버헤드가 증가합니다. 각 애플리케이션의 VM OS(운영 체제) 버전과 종속성을 일치하도록 프로비전하고 구성해야 합니다. OS 및 주요 변경 내용에 영향을 미치는 애플리케이션에 대한 업그레이드를 적용할 때 주의 사항이 있습니다. 업그레이드 중에 오류가 나타나면 설치 롤백이 필요하며 가동 중지 시간이나 지연 등의 중단이 발생합니다.

Diagram that shows replicated servers as VMs in the cloud and how the problem raises migration questions and problems.

이전 다이어그램의 배포는 번거롭고 오류가 발생하기 쉬우며 단일 서비스 크기를 쉽게 조정할 수 없습니다. 예를 들어, 웹 애플리케이션에 사용되는 캐싱 서비스만 쉽게 크기 조정할 수는 없습니다. 컨테이너는 이 유형의 문제를 해결하는 데 도움이 됩니다.

컨테이너 개념은 다음과 같은 세 가지 주요 이점을 제공합니다.

  1. Immutability - 컨테이너의 변경되지 않는 특성을 사용하여 동일한 동작으로 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 안정적으로 컨테이너를 배포하고 실행할 수 있습니다. QA 환경에서 테스트된 컨테이너 이미지는 프로덕션에 배포된 것과 동일한 컨테이너 이미지입니다.

  2. 더 작은 크기 - 컨테이너는 VM과 유사하지만 각 컴퓨터에 대한 커널이 없습니다. 대신 호스트 커널을 공유합니다. VM은 대용량 이미지 파일을 사용하여 실행하려는 OS와 애플리케이션을 모두 저장합니다. 이와 달리 컨테이너에는 OS가 필요하지 않으며 애플리케이션만 필요합니다.

  3. 경량 - 컨테이너는 항상 커널별 서비스를 위해 호스트에 설치된 OS에 의존합니다. 경량 속성은 컨테이너의 리소스 집약도를 낮추므로 동일한 컴퓨팅 환경 내에서 여러 컨테이너 설치가 가능합니다.

  4. 시작 속도가 빠름 - 시작하는 데 몇 분 정도 걸릴 수 있는 VM과 달리 컨테이너가 몇 초 안에 시작됩니다.

위의 이점으로 인해 컨테이너는 개발자와 IT 운영 모두에게 자주 사용되는 선택이 되었으며, 많은 사람들이 VM에서 전환한 이유도 있습니다.

컨테이너 관리란?

Diagram that shows replicated servers as multiple containers in the cloud.

기능적으로 컨테이너는 VM과 유사하지만 목적은 다양합니다. 컨테이너에는 임시 컴퓨터로 존재하는 고유한 수명 주기가 있습니다. 상태는 보류, 실행 중, 종료의 단계를 거칩니다. 이 수명 주기는 컨테이너를 더욱 일회용으로 만들고 개발자와 IT 운영팀이 상호 연결된 대규모 애플리케이션 관리에 대해 생각하는 방식에 영향을 미칩니다. 컨테이너 관리에는 컨테이너 배포, 업그레이드, 모니터링 및 제거가 포함됩니다.

예를 들어 정오에 사이트 트래픽이 더 많으므로 성능을 관리하려면 사이트의 캐싱 서비스의 인스턴스가 더 필요하다는 것을 알게 됩니다. 캐싱 서비스 컨테이너를 더 추가하여 이 문제를 해결할 계획입니다.

이제 캐싱 서비스의 새 버전을 롤아웃할 차례입니다. 모든 컨테이너를 어떻게 업데이트하나요? 이전 버전을 모두 어떻게 제거하나요?

이러한 형식의 부하 분산 질문에는 컨테이너 배포를 관리하는 시스템이 필요합니다.

Kubernetes란?

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

Diagram that shows replicated servers as multiple containers in a Kubernetes cluster.

Kubernetes를 사용하면 데이터 센터를 하나의 단일 컴퓨터로 볼 수 있습니다. 컨테이너를 배포하는 방법 및 위치를 걱정할 필요가 없고, 필요에 따라 애플리케이션을 배포하고 크기를 조정하는 방법만 생각하면 됩니다.

Kubernetes에 유의해야 할 몇 가지 추가 측면은 다음과 같습니다.

  • Kubernetes는 전체 PaaS 제품이 아닙니다. 컨테이너 수준에서 작동하며 일반적인 PaaS 기능 세트만 제공합니다.

  • Kubernetes는 모놀리식이 아닙니다. 설치되는 단일 애플리케이션이 아닙니다. 배포, 크기 조정, 부하 분산, 로깅 및 모니터링과 같은 측면은 모두 선택 사항입니다.

  • Kubernetes는 실행할 애플리케이션 형식을 제한하지 않습니다. 애플리케이션이 컨테이너에서 실행될 수 있으면 Kubernetes에서 실행됩니다.

  • 개발자는 컨테이너 솔루션을 최대한 활용하기 위해 마이크로 서비스 아키텍처와 같은 개념을 이해해야 합니다.

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

  • Kubernetes 배포는 클러스터로 구성됩니다. 클러스터는 하나 이상의 기본 컴퓨터 또는 컨트롤 플레인과 하나 이상의 작업자 컴퓨터로 구성됩니다. 프로덕션 배포의 경우 기본 설정되는 구성은 3~5개의 복제된 컨트롤 플레인 컴퓨터가 있는 고가용성 배포입니다. 이러한 작업자 컴퓨터를 노드 또는 에이전트 노드라고도 합니다.

Kubernetes를 통해 얻을 수 있는 모든 이점을 통해 이러한 측면을 해결하기 위해 요구 사항에 가장 적합한 솔루션을 찾는 것은 사용자의 책임입니다. Kubernetes 클러스터를 유지 관리할 책임은 사용자에게 있다는 점을 유념해야 합니다. 예를 들어 OS 업그레이드와 Kubernetes 설치 및 업그레이드를 관리해야 합니다. 네트워킹, 메모리 및 스토리지와 같은 호스트 머신의 하드웨어 구성도 관리합니다.

참고

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

AKS(Azure Kubernetes Service)란?

Diagram that shows replicated servers as multiple containers in an AKS Kubernetes cluster.

AKS는 호스트된 Kubernetes 환경을 관리하고 Azure에서 컨테이너화된 애플리케이션을 간단하게 배포하고 관리할 수 있도록 해줍니다. 자동화된 업데이트, 자동 복구 및 간편한 크기 조정과 같은 기능을 통해 AKS 환경을 사용할 수 있습니다. Azure는 Kubernetes 클러스터의 컨트롤 플레인을 무료로 관리합니다. 클러스터에서 에이전트 노드를 관리하며 노드가 실행되고 있는 VM에 해당하는 요금만 지급합니다.

Azure Portal 또는 Azure CLI를 사용하여 클러스터를 만들고 관리할 수 있습니다. 클러스터를 만들 때 클러스터 만들기를 자동화하는 Resource Manager 템플릿이 있습니다. 이러한 템플릿을 사용하면 고급 네트워킹 옵션, Microsoft Entra ID 및 리소스 모니터링과 같은 기능에 액세스할 수 있습니다. 그런 다음 트리거와 이벤트를 설정하여 여러 시나리오에 대한 클러스터 배포를 자동화할 수 있습니다.

AKS를 사용하면 Kubernetes만 사용하는 것이 수반할 수 있는 복잡성이나 운영 오버헤드 없이 오픈 소스 Kubernetes의 이점을 가져올 수 있습니다.