Azure Container Instances의 컨테이너 그룹

Azure Container Instances의 최상위 리소스는 컨테이너 그룹입니다. 이 문서에서는 컨테이너 그룹의 정의와 이들이 지원하는 시나리오 유형에 대해 설명합니다.

컨테이너 그룹이란?

컨테이너 그룹은 같은 호스트 컴퓨터에서 예약되어 있는 컨테이너 컬렉션입니다. 컨테이너 그룹의 컨테이너는 수명 주기, 리소스, 로컬 네트워크, 스토리지 볼륨을 공유합니다. KubernetesPod와 개념이 비슷합니다.

다음 다이어그램은 여러 컨테이너가 포함된 컨테이너 그룹의 예를 보여줍니다.

Container groups diagram

이 예제 컨테이너 그룹은 다음과 같습니다.

  • 단일 호스트 컴퓨터에서 예약됩니다.
  • DNS 이름 레이블이 할당됩니다.
  • 1개의 노출 포트가 있는 단일 공용 IP 주소를 노출합니다.
  • 두 개의 컨테이너로 구성됩니다. 하나의 컨테이너는 포트 80을 수신하고, 다른 컨테이너는 포트 5000을 수신합니다.
  • 볼륨 탑재로 2개의 Azure 파일 공유가 포함되어 있으며, 각 컨테이너는 공유 중 하나를 로컬에서 탑재합니다.

참고

다중 컨테이너 그룹은 현재 Linux 컨테이너만 지원합니다. Windows 컨테이너의 경우 Azure Container Instances는 단일 컨테이너 인스턴스의 배포만 지원합니다. Windows 컨테이너에 모든 기능을 제공하기 위해 노력하고 있는 동안 서비스 개요에서 현재 플랫폼 차이점을 찾을 수 있습니다.

배포

다중 컨테이너 그룹을 배포하는 두 가지 일반적인 방법은 Resource Manager 템플릿 또는 YAML 파일을 사용하는 것입니다. 컨테이너 인스턴스를 배포할 때 추가 Azure 서비스 리소스(예 : Azure Files 공유)를 배포해야 하는 경우 Resource Manager 템플릿을 사용하는 것이 좋습니다. YAML 형식이 좀 더 간결하기 때문에 배포에 컨테이너 인스턴스만 포함된 경우에는 YAML 파일을 사용하는 것이 좋습니다. 설정할 수 있는 속성에 대한 자세한 내용은 Resource Manager 템플릿 참조 또는 YAML 참조 설명서를 참조하세요.

컨테이너 그룹의 구성을 유지하려면 Azure CLI 명령 az container export를 사용하여 구성을 YAML 파일로 내보낼 수 있습니다. 내보내기를 사용하면 “코드로 구성”에 대한 버전 제어에 컨테이너 그룹 구성을 저장할 수 있습니다. 또는 YAML에서 새 구성을 개발할 때 내보낸 파일을 시작점으로 사용합니다.

리소스 할당

Azure Container Instances는 그룹에 있는 인스턴스의 리소스 요청을 추가하여 CPU, 메모리 및 선택적으로 GPU(미리 보기)와 같은 리소스를 다중 컨테이너 그룹에 할당합니다. CPU 리소스를 예로 들면, 각각 CPU 1개를 요청하는 컨테이너 인스턴스 2개로 만든 컨테이너 그룹에는 CPU 2개가 할당됩니다.

컨테이너 인스턴스별 리소스 사용량

그룹의 각 컨테이너 인스턴스는 해당 리소스 요청에 지정된 리소스를 할당합니다. 그러나 선택적 리소스 제한 속성을 구성하는 경우 그룹의 컨테이너 인스턴스에서 사용하는 최대 리소스는 다를 수 있습니다. 컨테이너 인스턴스의 리소스 제한은 필수 리소스 요청 속성보다 크거나 같아야 합니다.

  • 리소스 한도를 지정하지 않은 경우 컨테이너 인스턴스의 최대 리소스 사용량은 해당 리소스 요청과 동일합니다.

  • 컨테이너 인스턴스에 대한 제한을 지정하면 인스턴스의 최대 사용량이 설정한 제한까지 요청보다 클 수 있습니다. 이에 따라 그룹의 다른 컨테이너 인스턴스에 의한 리소스 사용량이 감소할 수 있습니다. 컨테이너 인스턴스에 대해 설정할 수 있는 최대 리소스 제한은 그룹에 할당된 총 리소스입니다.

예를 들어 각각 1개의 CPU를 요청하는 두 개의 컨테이너 인스턴스가 있는 그룹에서 컨테이너 중 하나가 다른 CPU보다 더 많은 CPU를 실행해야 하는 워크로드를 실행할 수 있습니다.

이 시나리오에서는 해당 컨테이너 인스턴스의 리소스 한도를 최대 2개의 CPU로 설정할 수 있습니다. 이 구성을 통해 컨테이너 인스턴스는 사용 가능한 경우 최대 2개의 CPU를 사용할 수 있습니다.

참고 항목

서비스의 기본 인프라는 적은 양의 컨테이너 그룹 리소스를 사용합니다. 컨테이너는 그룹에 할당된 리소스 중 전부는 아니지만 대부분 액세스할 수 있습니다. 이러한 이유로 그룹의 컨테이너에 대한 리소스를 요청할 때 작은 리소스 버퍼를 계획합니다.

최소 및 최대 할당

  • 최소한 CPU 1개와 메모리 1GB를 컨테이너 그룹에 할당합니다. 그룹 내의 개별 컨테이너 인스턴스는 CPU 1개와 메모리 1GB 미만으로 프로비저닝할 수 있습니다.

  • 컨테이너 그룹의 최대 리소스는 배포 지역의 Azure Container Instances에 대한 리소스 가용성을 참조하세요.

네트워킹

컨테이너 그룹은 외부 연결 IP 주소, 해당 IP 주소에 있는 하나 이상의 포트, FQDN(정규화된 도메인 이름)이 포함된 DNS 레이블을 공유할 수 있습니다. 외부 클라이언트가 그룹 내 컨테이너에 도달하게 지원하려면 IP 주소와 컨테이너에서 해당 포트를 공개해야 합니다. 컨테이너 그룹의 IP 주소 및 FQDN은 컨테이너 그룹이 삭제될 때 해제됩니다.

컨테이너 그룹 내에서 컨테이너 인스턴스는 임의 포트에서 localhost를 통해 서로 연결할 수 있습니다. 단, 해당 포트가 그룹의 IP 주소에 외부적으로 또는 컨테이너에서 노출되지는 않습니다.

필요에 따라 Azure 가상 네트워크에 컨테이너 그룹을 배포하여 컨테이너가 가상 네트워크의 다른 리소스와 안전하게 통신할 수 있도록 합니다.

스토리지

컨테이너 그룹 내에서 탑재할 외부 볼륨을 지정할 수 있습니다. 지원되는 볼륨은 다음과 같습니다.

해당 볼륨을 그룹의 개별 컨테이너 내에 있는 특정 경로에 매핑할 수 있습니다.

일반적인 시나리오

다중 컨테이너 그룹은 단일 기능 작업을 적은 수의 컨테이너 이미지로 나누려는 경우에 유용합니다. 이러한 이미지는 다른 팀에서 제공될 수 있으며 별도의 리소스 요구 사항을 가질 수 있습니다.

사용 예는 다음과 같습니다.

  • 웹 애플리케이션을 처리하는 컨테이너와 원본 제어에서 최신 콘텐츠를 풀링하는 컨테이너
  • 애플리케이션 컨테이너 및 로깅 컨테이너. 로깅 컨테이너는 주 애플리케이션에서 출력한 로그 및 메트릭을 수집하여 장기 스토리지로 기록합니다.
  • 애플리케이션 컨테이너 및 모니터링 컨테이너. 모니터링 컨테이너는 애플리케이션이 올바르게 실행 중이고 응답하고 있는지 확인하기 위해 애플리케이션에 정기적으로 요청을 보내고, 그렇지 않은 경우 경고를 올립니다.
  • 프런트 엔드 컨테이너 및 백 엔드 컨테이너. 프런트 엔드는 웹 애플리케이션에 서비스를 제공할 수 있고, 백 엔드는 서비스를 실행하여 데이터를 검색할 수 있습니다.

다음 단계

Azure Resource Manager 템플릿을 사용하여 다중 컨테이너 컨테이너 그룹을 배포하는 방법을 알아봅니다.