Container > NHN Container Service(NCS) > 사용 가이드

템플릿

템플릿은 워크로드 실행에 필요한 컨테이너, 네트워크 등의 리소스를 정의하는 서비스입니다.

템플릿 생성

NHN Container Service(NCS)를 사용하려면 먼저 템플릿을 생성해야 합니다. Container > NHN Container Service(NCS) 페이지에서 템플릿 탭을 클릭한 뒤 템플릿 생성을 클릭합니다. 템플릿 생성에 필요한 항목은 다음과 같습니다.

항목 설명
템플릿 이름 템플릿의 이름. 32자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
설명 템플릿에 대한 설명. 255자 이내로 입력할 수 있습니다.
컨테이너 이름 컨테이너의 이름. 253자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
컨테이너 레지스트리 컨테이너 이미지의 레지스트리
  • NHN Container Registry(NCR) 사용 방법은 NCR 사용 가이드를 참고하세요.
  • Docker Hub 또는 기타 레지스트리 사용 시 레지스트리 유형을 선택해야 합니다.
레지스트리 유형 레지스트리의 유형. 퍼블릭 또는 프라이빗을 선택할 수 있습니다.
이미지 URL 컨테이너 이미지의 정보. 255자 이내의 영문 소문자와 숫자, 일부 기호(-, \_, ., ,, /, @, :)만 입력할 수 있습니다.
레지스트리 아이디 프라이빗 레지스트리 인증에 사용되는 아이디
레지스트리 비밀번호 프라이빗 레지스트리 인증에 사용되는 비밀번호
메모리 컨테이너에 할당하는 메모리
포트 컨테이너에서 사용하는 포트
CPU 컨테이너에 할당하는 CPU 개수. 0.25~16 사이의 수를 0.25개 단위로 입력할 수 있습니다.
GPU 사용 여부 컨테이너의 GPU 사용 여부를 결정합니다.
GPU 타입 컨테이너에 할당할 GPU 타입을 결정합니다.
명령 컨테이너가 시작될 때 실행될 명령어. 이미지에 지정된 ENTRYPOINT보다 우선합니다.
작업 디렉터리 컨테이너의 작업 디렉터리. 이미지에 지정된 WORKDIR보다 우선합니다.
환경 변수 컨테이너에 설정할 환경 변수
스토리지 컨테이너에 연결할 스토리지
스토리지 이름 스토리지의 이름. 63자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
NAS 스토리지 연결 경로 컨테이너에 연결할 스토리지의 연결 정보. 스토리지는 컨테이너의 /mnt/$스토리지_이름에 마운트 됩니다.
  • NAS 스토리지 사용. Storage > NAS 페이지에서 연결할 NAS 스토리지의 연결 정보를 입력합니다.
  • 별도로 구축된 NFS 서버 사용. NFS 서버의 마운트 포인트를 입력합니다.
    • NFSv3 버전만 사용할 수 있습니다.
서브넷 VPC에 정의된 서브넷 중 인스턴스에 연결할 서브넷

필요한 정보를 입력하고 템플릿 생성을 클릭하면 템플릿이 생성됩니다.

[참고] 템플릿에 동일한 프로토콜의 포트는 1개만 추가할 수 있습니다. TCP와 HTTP는 동일한 포트를 사용할 수 없습니다. HTTP 프로토콜을 사용하면 로드 밸런서에서 Client IP를 식별할 수 있는 X-Forwarded-For Header가 추가됩니다.

[참고] 템플릿과 동일한 VPC를 사용하는 NAS 스토리지만 사용할 수 있습니다. 스토리지는 최대 3개 연결할 수 있습니다.

[참고] 컨테이너의 ephemeral-storage는 20GB로 제한됩니다. 20GB 이상 사용하게 되는 경우 컨테이너가 재기동되어 ephemeral-storage에 생성된 로그와 데이터는 초기화됩니다.

템플릿 조회

생성한 템플릿은 Container > NHN Container Service(NCS) 페이지의 템플릿 탭에서 확인할 수 있습니다. 템플릿 목록에는 컨테이너 리소스의 총합이 표시됩니다.

기본 정보

특정 템플릿을 클릭하여 기본 정보 탭에서 상세 정보를 확인할 수 있습니다.

항목 설명
이름 템플릿의 이름과 ID
설명 템플릿의 설명
컨테이너 템플릿에 정의된 컨테이너 개수
CPU 템플릿에 정의된 컨테이너들의 CPU 수를 더한 수
생성일 템플릿이 생성된 날짜
VPC 템플릿에 설정된 VPC
서브넷 템플릿에 설정된 서브넷

컨테이너

특정 템플릿을 클릭한 후 컨테이너 탭으로 이동하여 템플릿에 추가한 컨테이너 목록을 확인할 수 있습니다. 컨테이너 목록에서 특정 컨테이너를 선택하여 상세 정보를 확인할 수 있습니다.

항목 설명
컨테이너 이름 컨테이너의 이름
이미지 URL 컨테이너 이미지의 정보
메모리 컨테이너에 할당된 메모리
CPU 컨테이너에 할당된 CPU 수
GPU 컨테이너에 할당된 GPU 정보
포트 컨테이너에서 사용하는 포트
명령 컨테이너가 시작될 때 실행될 명령어
작업 디렉터리 컨테이너의 작업 디렉터리
환경 변수 컨테이너에 설정된 환경 변수
스토리지 컨테이너에 연결된 스토리지

템플릿 삭제

삭제할 템플릿을 선택하고 템플릿 삭제를 클릭하면 삭제됩니다.

[참고] 해당 템플릿을 사용하는 워크로드가 존재하면 템플릿을 삭제할 수 없습니다.

워크로드

정의한 템플릿을 이용하여 컨테이너를 실행하는 서비스입니다.

워크로드 생성

Container > NHN Container Service(NCS) 페이지에서 워크로드 탭을 클릭한 뒤 워크로드 생성을 클릭합니다. 워크로드 생성에 필요한 항목은 다음과 같습니다.

항목 설명
템플릿 템플릿의 이름
  • 템플릿 선택을 클릭하여 생성된 템플릿 중에서 선택합니다.
  • 템플릿 생성을 클릭하여 새로운 템플릿을 생성하여 선택합니다.
이름 워크로드의 이름. 32자 이내의 영문 소문자와 숫자, 일부 기호(-)만 입력할 수 있습니다.
설명 워크로드에 대한 설명. 255자 이내로 입력할 수 있습니다.
작업 요청 수 실행할 템플릿 수. 1~100 사이의 값을 입력할 수 있습니다.
로드 밸런서 사용 여부 템플릿의 컨테이너 정보에 포트가 지정된 경우에만 사용 버튼이 활성화됩니다. 로드 밸런서를 사용하는 경우 컨테이너에 추가한 포트만 사용할 수 있습니다.
플로팅 IP 사용 여부 플로팅 IP를 사용하기 위해서는 반드시 인터넷 게이트웨이가 설정된 서브넷에 연결되어 있어야 합니다.
외부에서 컨테이너에 접근하기 위해서는 플로팅 IP를 사용해야 합니다.
플로팅 IP를 사용하면 domain URL이 추가됩니다.

필요한 정보를 입력하고 워크로드 생성을 클릭하면 템플릿이 생성됩니다.

[참고] 레거시 네트워크 환경에서는 로드 밸런서를 사용할 수 없습니다.

워크로드 조회

생성한 워크로드는 Container > NHN Container Service(NCS) 페이지의 워크로드 탭에서 확인할 수 있습니다.

기본 정보

특정 워크로드를 클릭하여 기본 정보 탭에서 상세 정보를 확인할 수 있습니다.

항목 설명
이름 워크로드의 이름과 ID
설명 워크로드에 대한 설명
템플릿 사용된 템플릿의 이름
작업 요청 수 실행할 템플릿 수
작업 실행 수 실행된 템플릿 수
생성일 워크로드가 생성된 날짜
VPC 워크로드에 설정된 VPC
서브넷 워크로드에 설정된 서브넷
보안 그룹 워크로드에 설정된 보안 그룹의 이름
로드 밸런서 로드 밸런서 사용 여부

[참고] 워크로드 상태는 포함된 모든 컨테이너와 로드 밸런서의 상태를 고려하여 결정됩니다. 개별 컨테이너의 상태는 실행 컨테이너 탭에서 확인할 수 있습니다.

[참고] 서브넷 생성 직후 1~2분 동안은 로드 밸런서가 활성화되지 않을 수 있습니다.

실행 컨테이너

특정 워크로드를 클릭한 후 실행 컨테이너 탭에서 컨테이너를 클릭하여 컨테이너 상세 정보를 확인할 수 있습니다.

항목 설명
컨테이너 이름 컨테이너의 이름
이미지 URL 컨테이너 이미지의 정보
IP 컨테이너에 할당된 IP 주소
상태 컨테이너의 상태
재시작 횟수 컨테이너가 재시작된 횟수
메모리 컨테이너에 할당된 메모리
CPU 컨테이너에 할당된 CPU 수
GPU 컨테이너에 할당된 GPU 정보
포트 컨테이너에서 사용하는 포트
명령 컨테이너가 시작될 때 실행될 명령어
작업 디렉터리 컨테이너의 작업 디렉터리
환경 변수 컨테이너에 설정된 환경 변수
스토리지 컨테이너에 연결된 스토리지
시작일 컨테이너가 시작된 날짜

모니터링

특정 워크로드를 클릭한 후 모니터링 탭에서 컨테이너의 리소스 사용률을 확인할 수 있습니다. 컨테이너 지표는 15초 단위로 수집되며 최대 1년간 보관됩니다. 모니터링을 제공하는 항목은 다음과 같습니다.

항목 단위 설명
CPU 사용률 % 컨테이너에 할당된 CPU 기준으로 사용률이 제공됩니다.
메모리 사용률 % 컨테이너에 할당된 Memory 기준으로 사용률이 제공됩니다.
네트워크 데이터 송신 bps 워크로드의 작업 기준으로 네트워크 데이터 송신 정보가 제공됩니다.
네트워크 데이터 수신 bps 워크로드의 작업 기준으로 네트워크 데이터 수신 정보가 제공됩니다.
디스크 사용률 % 컨테이너에 추가된 NAS 스토리지의 사용률이 제공됩니다.

이벤트

특정 워크로드를 클릭한 후 이벤트 탭에서 컨테이너에서 발생한 이벤트 정보를 확인할 수 있습니다. 이벤트 상태 선택을 클릭하여 이벤트의 상태별로 이벤트를 확인할 수 있습니다.

항목 설명
상태 이벤트의 상태
타입 이벤트의 타입
설명 이벤트의 설명
이벤트 최초 발생 일시 이벤트 최초 발생 일시
이벤트 마지막 발생 일시 이벤트 마지막 발생 일시
발생 수 이벤트가 발생한 횟수

[참고] 이벤트는 최대 1시간만 유지되어 1시간 이전의 정보는 확인할 수 없습니다.

로그

특정 워크로드를 클릭한 후 로그 탭에서 컨테이너의 로그를 확인할 수 있습니다. 시간을 지정하지 않으면 현재 시점부터 5분 전 로그가 조회됩니다.

[참고] 로그의 최대 크기는 5GB로 제한되며 2개월 동안 보관됩니다.

실행 히스토리

실행 히스토리를 확인할 워크로드를 선택해 실행 히스토리 탭에서 워크로드 템플릿 변경 진행 상황 및 이력을 확인할 수 있습니다.

항목 설명
템플릿 이름 워크로드가 사용하는 템플릿 이름
실행 시간 해당 템플릿을 사용하는 워크로드의 배포 시작 시간
종료 시간 해당 템플릿을 사용하는 워크로드의 종료 시간
상태 배포 상태
succeeded: 배포 완료
pending: 배포 중
terminated: 종료된 워크로드

조회된 히스토리 정보를 클릭하여 실행 히스토리 상세 정보를 확인할 수 있습니다.

[참고] 실행 중인 워크로드의 히스토리에는 종료 시간이 표시되지 않으며 상태가 succeeded로 유지됩니다. [주의] 워크로드 삭제 이후에는 실행 히스토리를 확인할 수 없습니다.

워크로드 변경

변경할 워크로드를 선택한 뒤 기본 정보 탭에서 변경을 클릭해 실행 중인 워크로드를 변경할 수 있습니다.

항목 설명
설명 워크로드의 설명
템플릿 실행 중인 워크로드의 템플릿 변경
템플릿 변경 시 롤링 업데이트 방식으로 워크로드가 무중단 배포됩니다.
작업이 하나씩 순차적으로 교체되어 배포 중에 기존 작업과 새로운 작업이 동시에 실행된 상태일 수 있습니다.
실행 히스토리탭에서 변경 결과를 확인할 수 있습니다.
작업 요청 수 실행 중인 워크로드의 작업 수 변경
작업 요청 수 증가: 기존 작업은 유지하며 새로운 작업이 생성됩니다.
작업 요청 수 감소: 감소된 작업 개수만큼 작업이 종료됩니다.
로드 밸런서 워크로드의 로드 밸런서 사용 여부 변경

[주의] 로드 밸런서를 사용하여 워크로드 서비스 이용 중 템플릿을 변경하는 경우 순단이 발생할 수 있습니다. [참고] 워크로드가 Pending 상태인 경우 로드 밸런서를 변경할 수 없습니다.

워크로드 삭제

삭제할 워크로드를 선택하고 워크로드 삭제를 클릭하면 삭제됩니다.

NCS 역할

NCS 역할을 설정하여 서비스 및 리소스에 액세스할 수 있는 역할을 제어할 수 있습니다. 예를 들어 'NCS 관리자'는 템플릿과 워크로드에 대한 생성, 조회 및 관리할 수 있는 역할을 가지며, 'NCS 사용자'는 템플릿과 워크로드에 대한 조회 역할만 갖도록 설정할 수 있습니다.

NCS 실행 역할 추가

NCS에 대한 실행 역할은 NHN Cloud Console 화면에서 설정합니다. 1. 프로젝트 관리 화면에서 멤버 관리 메뉴를 선택합니다. 2. 역할을 변경할 멤버를 클릭합니다. 3. 역할 추가를 선택하여, 서비스별 역할을 추가합니다. * 왼쪽 영역에서 기본 인프라 서비스를 선택한 후, 오른쪽 영역에서 역할을 선택합니다. 4. 선택된 역할을 확인하여 추가하거나 삭제할 수 있습니다. 5. 추가를 클릭하여 프로젝트 멤버에 변경된 역할을 적용합니다. 6. 역할이 추가되면 멤버를 선택하여 상세 역할 내역을 확인할 수 있습니다.

역할 그룹에 대한 사용 가이드는 콘솔 가이드를 참고하세요.

역할 세부 정보

NCS를 이용하기 위해 다음 리소스에 대한 역할이 필요합니다. * NCS - NCS의 리소스를 조회, 생성 및 관리하도록 허용합니다. * Infrastructure - NCS 사용자는 VPC, Subnet 리소스를 조회하도록 허용합니다. 이는 NCS에서 템플릿과 워크로드를 조회할 때 필요합니다. * Load Balancer - NCS 사용자는 Infrastructure Load Balancer 리소스를 생성, 관리하도록 허용합니다. 이는 NCS에서 워크로드의 Load Balancer를 사용할 때 필요합니다. * Security Group - NCS 사용자는 Infrastructure Security Group 리소스를 생성, 관리하도록 허용합니다. 이는 NCS에서 템플릿에 대한 Security Group을 사용할 때 필요합니다.

NCS 최소 역할 부여

프로덕션 환경에서는 필요한 역할만 추가하는 것이 좋습니다. NCS 서비스를 이용하기 위한 최소 역할은 다음과 같습니다.

기능 Infrastructrue NCS ADMIN Infrastructrue MEMBER Infrastructrue Security Group ADMIN Infrastructrue Load Balancer ADMIN
템플릿 조회 O
템플릿 생성 O O
템플릿 삭제 O O
워크로드 조회 O
워크로드 생성 및 변경 O O O
워크로드 삭제 O O O

참고 사항

리전

  • NCS 서비스는 KR1 리전에서만 사용할 수 있습니다.

개수 제약

  • 템플릿에는 최대 10개의 컨테이너를 기술할 수 있습니다.
  • 워크로드에는 최대 10개의 실행 수를 지정할 수 있습니다.

템플릿/컨테이너

  • 템플릿에 기술되는 컨테이너들은 각각 서로 다른 컨테이너 포트를 사용하도록 설정해야 합니다.
  • 컨테이너 포트에 직접 연결하는 경우, 보안 그룹이 잘 설정되어 있는지 확인해야 합니다.
  • 컨테이너 포트를 지정하지 않은 템플릿을 사용하는 경우 로드 밸런서를 생성할 수 없습니다.
  • 로드 밸런서를 사용하는 경우 컨테이너에 추가되지 않은 포트는 보안 그룹에 포트를 추가하여도 사용할 수 없습니다.
  • 프라이빗 레지스트리에 존재하는 컨테이너 이미지를 활용하여 컨테이너를 생성할 수 있습니다. 지원되는 소스 레지스트리 유형과 URL, Access ID, Access Secret은 아래와 같습니다.
소스 레지스트리 유형 Access ID Access Secret
Azure Container Registry 액세스 키 사용자 이름 액세스 키 암호
Google Cloud Container Registry _json_key 서비스 계정의 비공개 키(JSON 유형)
Docker Hub Username Password
Harbor Username Password
Quay json_file {
"account_name": "$사용자 계정",
"docker_cli_password": "$Quay에서 생성한 암호화된 Password"
}
  • 컨테이너 이미지 내에서 컨테이너가 서비스를 위해 사용하기로 결정한 포트와 템플릿의 컨테이너 포트는 일치해야 합니다.
    • 80 포트를 서비스하기로 지정된 기본 nginx 컨테이너 이미지를 이용하는 경우 컨테이너 포트에 80을 지정해야 합니다. 컨테이너 이미지의 내용을 변경하여 다른 포트를 서비스하도록 설정한 경우 해당 포트 번호를 지정해야 합니다.

GPU

문제 해결 가이드

NCS 서비스를 사용하면서 겪을 수 있는 다양한 문제들을 해결하는 방법을 설명합니다.

워크로드

  • 워크로드가 정상적으로 생성되었고, 컨테이너도 정상적으로 실행 중일 때 FailedCreatePodSandBox/CNITimedOutWaitingForVIFs 타입의 컨테이너 이벤트가 발생하는 현상
    • 해당 이벤트는 NCS에서 사용하기 위한 Network Interface가 생성 완료되지 않은 경우 발생합니다. 템플릿 생성 직후 워크로드를 생성하거나 워크로드를 대량 생성하는 경우 일시적으로 발생하는 이벤트로 일정 시간이 경과하면 해당 이벤트는 발생하지 않습니다.
  • 워크로드가 Pending 상태일 때 IpAddressGenerationFailure 타입의 컨테이너 이벤트가 발생하는 현상
    • 해당 이벤트는 지정한 서브넷에 사용할 수 있는 IP 주소가 더 이상 없는 경우 발생합니다. 서브넷의 CIDR를 변경하거나 다른 서브넷을 사용하여 템플릿을 생성해야 합니다.
  • 워크로드의 템플릿 변경 이후에 계속 pending 상태로 유지되는 현상
    • 추가된 작업의 이벤트를 확인하여 컨테이너가 실행되지 않는 원인을 확인할 수 있습니다.
TOP