Kubeflow 생성 및 관리
사전 작업
Kubeflow는 Kubernetes 위에서 실행됩니다. 따라서, Kubeflow를 사용하려면 먼저 카카오클라우드 Kubernetes Engine 서비스의 클러스터가 생성되어 있어야 하며, 사용하고자 하는 클러스터와 동일한 네트워크 및 Subnet으로 설정된 카카오클라우드 File Storage가 있어야 합니다.
이러한 작업을 위해 먼저 IAM '프로젝트 멤버' 이상의 권한이 필요하고, 추후 Kubeflow 생성을 위해서는 'Kubeflow 관리자 권한'도 필요합니다. 자세한 내용은 IAM 프로젝트 레벨 역할을 참고하시기 바랍니다.
클러스터의 네트워크가 Private Subnet일 경우, Private Subnet의 노드는 인터넷 통신이 불가합니다. Private Subnet의 노드가 인터넷을 통해 외부 CR과 통신하기 위해서는 NAT 통신이 필요합니다.
NAT 통신은 NAT Instance를 사용할 수 있으며, 자세한 내용은 NAT 인스턴스 사용을 참고하시기 바랍니다.
쿠버네티스 클러스터 생성
카카오클라우드 콘솔에서 Kubernetes Engine 메뉴를 선택하여, 쿠버네티스 기반의 클러스터를 생성합니다. 이미 생성한 클러스터가 존재한다면, 노드 풀 생성부터 시작하시기 바랍니다.
- 이미 Kubeflow 연결에 사용된 클러스터는 Kubeflow 만들기 시 재사용할 수 없기 때문에 새로운 클러스터로 연결해야 합니다.
- 쿠버네티스 클러스터 생성에 대한 자세한 설명은 클러스터 생성을 참고하시기 바랍니다.
노드 풀 생성
Kubeflow 생성에 필요한 필수 노드 풀과 옵션 노드 풀을 생성합니다.
-
카카오클라우드 콘솔 > Container Pack > Kubernetes Engine 메뉴로 이동합니다.
-
Cluster 메뉴를 클릭한 후, Kubeflow와 연결할 클러스터의 상세 화면으로 이동합니다.
-
노드 풀 탭으로 이동하여, [노드 풀 만들기] 버튼을 클릭합니다.
-
노드 풀 만들기 화면에서 필요한 정보 입력 후, [만들기] 버튼을 클릭합니다.
(Kubeflow를 사용하기 위해서는 연결하고자 하는 클러스터에 반드시 Ingress 노드 풀과 Worker 노드 풀을 사전에 생성해두어야 합니다.)Kubeflow 클러스터 노드 풀 최소 사양 정보
항목 구분 노드 풀 사양 정보 Ingress 노드 풀 필수 - 인스턴스 유형 : 제한 없음 ( kr-central-2
리전의 경우 t1i.small 인스턴스 이상부터 사용 가능)
- 볼륨 유형/크기 : 50GB 이상
- 노드 수 : 1대 이상
- 노드 풀 자동 확장 : 사용 안 함Worker 노드 풀 필수 - 인스턴스 유형 : 제한 없음 ( kr-central-2
리전의 경우 t1i.small 인스턴스 이상부터 사용 가능)
- 볼륨 유형/크기 : 최소 100GB 이상
- 노드 수: 최소 4대 이상 (t1i.small 인스턴스의 경우 최소 5대 이상 필요)
- 노드 풀 자동 확장 : 사용 안 함CPU 노트북 노드 풀 선택 - 인스턴스 유형 : 제한 없음 ( kr-central-2
리전의 경우 t1i.small 인스턴스 이상부터 사용 가능)
- 볼륨 유형/크기 : 최소 100GB 이상
- 노드 풀 자동 확장 : 사용 안 함GPU 노트북 노드 풀 선택 - 인스턴스 유형 : A100 그룹 중 선택 (p2i 인스턴스 패밀리)
- 볼륨 유형/크기 : 최소 100GB 이상
- 노드 풀 자동 확장 : 사용 안 함CPU 파이프라인 노드 풀 선택 - 인스턴스 유형 : 제한 없음 ( kr-central-2
리전의 경우 t1i.small 인스턴스 이상부터 사용 가능)
- 볼륨 유형/크기 : 최소 100GB 이상
- 노드 풀 자동 확장 : 사용 안 함GPU 파이프라인 노드 풀 선택 - 인스턴스 유형 : A100 그룹 중 선택 (p2i 인스턴스 패밀리)
- 볼륨 유형/크기 : 최소 100GB 이상
- 노드 풀 자동 확장 : 사용 안 함
- Kubeflow 만들기를 하기 전에 인그레스 컨트롤러의 ingress-nginx를 미리 설치하는 경우 오류가 발생할 수 있습니다.
혹은 이미 인그레스 컨트롤러로 사용한 경우 ingress-nginx 관련 자원을 삭제한 후, Kubeflow 만들기를 진행해 주세요. - 생성한 노드 풀의 스케줄링 설정을
차단
으로 선택하는 경우, Kubeflow 만들기를 할 수 없습니다.
또한 Kubeflow 만들기 이후 해당 노드 풀을차단
으로 변경하는 경우, Kubeflow가 정상적으로 동작하지 않을 수 있습니다. 따라서, 반드시 스케줄링 설정을허용
으로 선택해 주세요.
파일 스토리지 인스턴스 생성
Kubeflow에서는 디폴트 파일 스토리지 외에 네임스페이스 별로 파일 스토리지를 지정할 수 있으며, 파일 스토리지 인스턴스 생성 방법은 다음과 같습니다.
Kubeflow 만들기에서 사용할 클러스터와 동일한 네트워크와 Subnet으로 설정된 파일 스토리지 인스턴스만 사용할 수 있습니다.
-
카카오클라우드 콘솔에서 File Storage 메뉴로 이동합니다.
-
Instance 탭을 클릭한 후, [Instance 만들기] 버튼을 클릭합니다.
-
Instance 만들기에서 아래 표의 안내를 확인한 후 정보를 입력하고, [만들기] 버튼을 클릭합니다.
항목 구분 설명 네트워크 설정 네트워크 Kubeflow 만들기에서 사용할 클러스터와 동일한 네트워크로 선택 Subnet Kubeflow 만들기에서 사용할 클러스터와 동일한 Subnet으로 선택 접근 제어 설정 설정된 네트워크 내 모든 사설 IP에서의 접근을 허용
Kubeflow 만들기
-
카카오클라우드 콘솔에서 Kubeflow 메뉴로 이동합니다.
-
Kubeflow 메뉴를 클릭한 후, [Kubeflow 만들기] 버튼을 클릭합니다.
-
필요한 정보 입력 후, [만들기] 버튼을 클릭합니다.
Kubeflow 만들기
항목 구분 설명 Kubeflow 이름 영어 소문자, 하이픈( -
)을 사용해 4~20자 이내로 작성
- 시작 문자는 영어 소문자만 가능하며 하이픈(-
)을 연속해서 사용하거나 이름 끝에 사용할 수 없음
- 같은 프로젝트 내에서 중복된 Kubeflow 이름은 사용 불가Kubeflow 구성 Kubeflow 버전 Kubeflow 버전 선택 Kubeflow 서비스 타입 Kubeflow 버전에 따라 서비스 유형 선택
- 지원하는 버전에 대한 자세한 설명은 Kubeflow 서비스 유형 및 사용 컴포넌트 참고클러스터 연결 Kubeflow에 연결할 카카오클라우드 Kubernetes Engine 서비스의 클러스터 선택
- 클러스터가 존재하지 않는 경우 사전 작업 참고
* 이미 Kubeflow 연결에 사용된 클러스터는 사용 불가Ingress 노드 풀 (필수) 선택한 클러스터의 Ingress 노드 풀 선택 Worker 노드 풀 (필수) 선택한 클러스터의 Worker 노드 풀 선택 CPU 노트북 노드 풀 (선택) 선택한 클러스터에 생성한 CPU 노트북 노드 풀 선택 CPU 파이프라인 노드 풀 (선택) 선택한 클러스터에 생성한 CPU 파이프라인 노드 풀 선택 GPU 노트북 노드 풀 (선택) 선택한 클러스터에 생성한 GPU 노트북 노드 풀 선택
- GPU MIG : 선택한 노드 풀의 MIG 인스턴스 사양 설정
- GPU MIG(Default) : Kubeflow 생성 후 추가되는 노드에 적용할 MIG 인스턴스 사양 설정
* GPU MIG에 대한 자세한 설명은 MIG 인스턴스 사용자 설정 참고GPU 파이프라인 노드 풀 (선택) 선택한 클러스터에 생성한 GPU 파이프라인 노드 풀 선택
- GPU MIG : 선택한 노드 풀의 MIG 인스턴스 사양 설정
- GPU MIG(Default) : Kubeflow 생성 후 추가되는 노드에 적용할 MIG 인스턴스 사양 설정
* GPU MIG에 대한 자세한 설명은 MIG 인스턴스 사용자 설정 참고디폴트 파일 스토리지 선택한 클러스터와 동일한 네트워크와 Subnet으로 설정된 파일 스토리지 선택 Kubeflow 소유자 설정 소유자 이메 일 계정 이메일 규격에 맞게 입력 (소유자는 최소 IAM '프로젝트 멤버' 이상의 권한 필요) 네임스페이스 이름 네임스페이스 이름을 입력 DB 설정 포트 숫자만 입력 가능 비밀번호 비밀번호를 입력 Object Storage 설정 (MinIO 선택 시) 아이디 아이디를 입력 (MinIO 선택 시) 비밀번호 비밀번호를 입력 (KC Object Storage 선택 시) KC Object Storage
(현재kr-central-2
리전에서만 지원 가능)- kubeflow-{kubeflow id}
이름으로 Object Storage 버킷 자동생성
* 생성된 버킷은 카카오클라우드 콘솔의 Object Storage 메뉴에서 확인 가능 (Object Storage 버킷 목록 보기 참고)도메인 연결 (선택) 유효한 형식의 도메인 입력
- Ingress 노드 풀은 다른 노드 풀과 중복하여 사용할 수 없습니다.
- 최초 생성 후 Kubeflow 이름 수정 및 노드 풀(GPU MIG 등) 추가는 불가합니다.
MIG 인스턴스 사용자 설정
MIG(Multi Instance GPU)는 여러 사용자가 성능에 영향을 주지 않고 동일한 GPU에서 서로 다른 워크로드를 실행할 수 있습니다.
- 카카오클라우드 Kubeflow 서비스에서는 MIG 인스턴스 설정 시, 해당 인스턴스의 리소스를 최대로 활용해야 합니다.
- GPU 카드가 2장 이상인 경우, 1장을 기준으로 하며 [설정한 MIG 인스턴스 수 x GPU 카드 장수]로 자동 적용됩니다.
- GPU MIG 인스턴스를 설정하지 않거나 기본 설정을 선택하는 경우 가장 작은 단위로 적용됩니다. 자세한 설명은 기본 설정 규격을 참고하시기 바랍니다.
- 제조사 혹은 기타 정책으로 인하여 예외 조합이 있을 수 있습니다. 자세한 설명은 MIG 인스턴스 예외 조합을 참고하시기 바랍니다.
기본 설정 규격
인스턴스 패밀리 | 설명 |
---|---|
A100 | 1g. 10gb 사양으로 7개 설정 |
MIG 인스턴스 예외 조합
인스턴스 패밀리 | 설명 |
---|---|
A100 | 3g. 40gb와 4g. 40gb를 동시에 사용하는 사양 설정 불가 * 제조사 정책으로 인한 사용 불가 조합 |
Kubeflow 서비스 유형 및 사용 컴포넌트
버전 | 서비스 유형 | 컴포넌트 및 버전 |
---|---|---|
1.0.0 | Essential + Hyper Param Tuning (HPT) + Serving API | - JupyterLab 3.2.9 - KF Pipelines 2.0.0 beta.0 - Katib 0.15.0 - Tensorboard 2.1.0 - KServe 0.8.0 |
Kubeflow 관리
Kubeflow는 쿠버네티스의 클러스터 관리 능력을 활용하여 머신러닝 워크플로우를 보다 쉽고 효율적으로 관리할 수 있게 합니다. Kubeflow 서비스에서 관리하는 방법은 다음과 같습니다.
Kubeflow 목록 보기
현재 생성된 Kubeflow 목록과 기본 정보를 확인할 수 있습니다.
-
카카오클라우드 콘솔에서 Kubeflow 메뉴를 선택합니다.
-
Kubeflow 메뉴에서 현재 생성된 Kubeflow를 확인합니다.
Kubeflow 목록화면
구분 설명 Kubeflow 필터 필터를 통해 Kubeflow 조회하거나, 키워드로 검색 Kubeflow 이름 사용자가 설정한 Kubeflow 이름 Kubeflow 상태 - Creating
,Active
,Failed
,Expired
,Terminating
,Terminated
- 각 상태값에 대한 자세한 설명은 Kubeflow 생명주기 및 상태 참고서비스 타입 사용자가 선택한 서비스 유형
- Essential+HPT+Serving APIGPU 활성화 GPU 활성화 상태
- 활성, 비활성프로파일 수 Kubeflow에 생성된 프로파일 수
- 사용자: 해당 Kubeflow에 등록된 사용자 수
- 그룹 수: kbm-g로 시작하는 그룹 네임스페이스 수생성 시간 Kubeflow를 생성한 일시 가동 시간 Kubeflow를 운영한 시간 더 보기 - Kubeflow 삭제 : 해당 Kubeflow를 Terminating
처리
*Active
상태만 삭제 가능합니다.
삭제된 Kubeflow는 삭제 후 1일 간만 노출됩니다. Kubeflow만 삭제하는 경우 연결된 클러스터 요금이 과금되오니 반드시 확인하시기 바랍니다.
Kubeflow 상세 보기
Kubeflow의 세부 정보, 그룹, 사용자, 구성 요소, 모니터링 정보를 확인할 수 있습니다.
-
카카오클라우드 콘솔에서 Kubeflow 메뉴로 이동합니다.
-
Kubeflow 메뉴에서 정보를 확인할 Kubeflow를 선택합니다.
-
Kubeflow의 상세 화면에서 정보를 확인합니다.
Kubeflow 상세 화면
구분 설명 Kubeflow 이름 사용자가 설정한 Kubeflow 이름 Kubeflow 상태 - Creating
,Active
,Failed
,Expired
,Terminating
,Terminated
- 각 상태값에 대한 자세한 설명은 Kubeflow 생명주기 및 상태 참고노드 수 Kubeflow에 연결된 클러스터 구성에 사용된 전체 인스턴스의 개수 GPU [MIG 인스턴스] 버튼 : 버튼 클릭 시, Kubeflow 생성 시 설정한 GPU MIG 인스턴스 설정 정보 JSON
형태로 확인
- GPU 노드 풀 미사용 시, 미노출빠른 실행 [대시보드 보기] 버튼 : Private Dashboard, Public Dashboard 버튼 클릭 시, Kubeflow 대시보드로 이동
Kubeflow 탭별 정보
- 세부 정보
- 그룹
- 사용자
- 구성 요소
- GPU 현황
- 모니터링
Kubeflow ID, 생성 시간, 연결 클러스터 등 세부 정보를 확인할 수 있습니다.
구분 | 항목 | 설명 |
---|---|---|
Kubeflow 정보 | Kubeflow ID | Kubeflow의 고유 ID 값 |
버전 | 버전 - 1.0.0 | |
서비스 타입 | 서비스 유형 - Essential+HPT+Serving API - 지원하는 버전에 대한 자세한 설명은 Kubeflow 서비스 유형 및 사용 컴포넌트 참고 | |
생성자 | Kubeflow 생성한 사용자 계정 | |
생성 시간 | 생성 일시 (가동 시간) - 생성 요청 이후 응답받은 시간을 기준으로 표시 (Kubeflow를 운영한 시간) | |
생성자 | Kubeflow 생성 시 등록된 소유자 계정 - Kubeflow 만들기 시, 사용자가 직접 입력하여 생성 | |
연결 클러스터 | 클러스터 이름 | Kubeflow와 연결된 클러스터 |
디폴트 파일 스토리지 | 연결한 클러스터에 설정된 파일 스토리지 - 데이터 저장 및 공유 | |
VPC | Kubeflow와 연결된 클러스터가 배포된 VPC | |
Subnet | Kubeflow와 연결된 클러스터가 배포된 Subnet |
Kubeflow에 등록된 그룹 이름, 상태, 그룹 쿼터 정보를 확인할 수 있습니다.
구분 | 설명 |
---|---|
필터 | 그룹 이름, 상태를 선택하여 원하는 조건으로 검색 |
그룹 이름 | 생성된 그룹 이름(네임스페이스 명) |
상태 | 그룹의 상태 - Active , Pending , Failed - Pending 의 경우 최대 약 10분간 지속될 수 있으며, 10분이 경과되거나 Failed 로 상태가 변경될 경우 헬프데스크 > 기술 문의로 문의하시기 바랍니다. |
파일 스토리지 | 그룹에 할당된 파일 스토리지 정보 |
그룹 쿼터 할당 여부 | 그룹에 할당된 쿼터 정보 |
그룹 사용자 수 | 그룹에 등록 된 사용자 수 - 클릭 시 그룹 사용자 설정 팝업 노출 |
생성 시간 | 그룹 생성 일시 |
[더 보기] 버튼 | - 그룹 수정: 그룹에 쿼터를 할당하거나 할당된 쿼터 정보를 수정할 수 있음 - 그룹 사용자 추가: 그룹에 사용자를 추가할 수 있음 - 그룹 사용자 설정: 그룹에 등록된 사용자를 확인하고 정보를 수정하거나 사용자를 그룹에서 제거할 수 있음 - 그룹 삭제: 그룹을 삭제할 수 있음 |
그룹 상태
상태 | 설명 | 분류 |
---|---|---|
Pending | 생성/수정/삭제 작업이 진행 중 | Yellow |
Active | 그룹이 정상적인 상태 | Green |
Failed | 그룹의 상태를 확인할 수 없는 상태 | Red |
그룹 추가
[그룹 추가] 버튼 클릭 시 노출되는 팝업을 통해 그룹을 추가할 수 있습니다.
상태 | 설명 |
---|---|
네임스페이스 이름 | 영어 소문자, - 만 사용하여 네임스페이스 이름을 지정할 수 있음 (4~20자) |
네임스페이스 파일 스토리지 | 생성된 클러스터와 동일한 네트워크와 서브넷으로 설정된 파일 스토리지 선택 (디폴트 파일 스토리지와 중복 선택 가능) |
그룹 쿼터 할당 | 클러스터 내에서 생성된 노드풀 사양 기준으로 쿼터 설정 가능 |
Kubeflow에 등록된 사용자 ID, 네임스페이스 명, 쿼터 정보 등을 확인할 수 있습니다.
구분 | 설명 |
---|---|
필터 | 사용자 ID, 네임스페이스명, 사용자 상태를 선택하여 원하는 조건으로 검색 |
사용자 ID | 사용자 등록 시 등록된 이메일 주소 (대시보드 접속 ID) |
네임스페이스 명 | 네임스페이스 보유 시 보유한 네임스페이스 이름 노출 - 네임스페이스 미보유 시 빈 값으로 노출됩니다. |
사용자 상태 | 사용자의 상태 - Active , Pending , Failed - Pending 의 경우 최대 약 10분간 지속될 수 있으며, 10분이 경과되거나 Failed 로 상태가 변경될 경우 헬프데스크 > 기술 문의로 문의하시기 바랍니다. |
파일 스토리지 | 사용자 네임스페이스에 할당된 파일 스토리지 정보 |
쿼터 할당 여부 | 사용자 네임스페이스에 할당된 쿼터 정보 |
등록된 그룹 수 | 사용자가 속해 있는 그룹 수 - 클릭 시 그룹 이름 및 그룹 권한 노출 |
생성 일자 | 사용자 생성 일시 |
마지막 업데이트 일자 | 사용자 생성/정보 수정 등 마지막 업데이트 일시 |
[더 보기] 버튼 | - 사용자 수정: 사용자 네 임스페이스를 생성하거나 쿼터를 수정할 수 있습니다. - 사용자 삭제: 사용자 및 소유한 네임스페이스를 Kubeflow에서 완전히 삭제하며, 소속된 그룹에서도 자동으로 제거됩니다. |
사용자 상태
상태 | 설명 | 분류 |
---|---|---|
Pending | 생성/수정/삭제 작업이 진행 중 | Yellow |
Active | 정상적인 상태 | Green |
Failed | 사용자 상태를 확인할 수 없는 상태 | Red |
사용자 추가
[사용자 추가] 버튼 클릭 시 노출되는 팝업을 통해 사용자를 추가할 수 있습니다.
사용자 추가 화면
상태 | 설명 |
---|---|
사용자 타입 | 소유자 또는 일반 사용자 중 선택 |
사용자 이메일 | 대시보드 로그인 시 사용되며 해당 이메일로 임시 비밀번호가 발송됨 |
네임스페이스 생성 (선택) | 영어 소문자,- 만 사용하여 네임스페이스 이름을 지정할 수 있음 (4~20자) |
네임스페이스 파일 스토리지 (네임스페이스 생성 시) | 생 성된 클러스터와 동일한 네트워크와 서브넷으로 설정된 파일 스토리지 선택 (디폴트 파일 스토리지와 중복 선택 가능) |
쿼터 할당 | 클러스터 내에서 생성된 노드풀 사양 기준으로 쿼터 설정 가능 |
Kubeflow ID, 생성 시간, 연결 클러스터 등 세부 정보를 확인할 수 있습니다.
구분 | 설명 |
---|---|
파드 필터 | 필터 속성을 선택하거나 검색어를 입력해 원하는 조건으로 파드 검색 |
이름 | 애플리케이션 파드 정보 노출 |
상태 | 파드의 상태 - Pending , Running , Failed , Succeeded , Unknown |
생성 시간 | 생성 일시 - 생성 요청 이후 응답받은 시간을 기준으로 표시 |
IP | Pod 내부에서 사용되는 IP 주소 |
파드 상태
상태 | 설명 | 분류 |
---|---|---|
Pending | Pod가 스케줄링되지 않았거나 스케줄링 대기 중 | Yellow |
Running | Pod가 성공적으로 스케줄링되어 실행 중 | Green |
Succeeded | Pod가 성공적으로 종료 | Gray |
Failed | Pod가 비정상적으로 종료 | Red |
Unknown | Pod의 상태를 확인할 수 없는 상태 | Gray |
애플리케이 션 파드 정보
Kubeflow 만들기 후 Kubeflow 상태가 Active
가 되면, 카카오클라우드 Kubernetes Engine 서비스의 클러스터에서 아래 애플리케이션 파드가 정상적으로 구동되었음을 확인할 수 있습니다.
분류 | 네임스페이스 | 파드 |
---|---|---|
Pod | auth | dex |
Pod | cert-manager | cert-manager cert-manager-cainjector cert-manager-webhook |
Pod | ingress-nginx | ingress-nginx-controller |
Pod | istio-system | authservice |
Pod | istio-system | cluster-local-gateway |
Pod | istio-system | istio-ingressgateway |
Pod | istio-system | istiod |
Pod | knative-eventing | eventing-controller eventing-webhook |
Pod | knative-serving | activator autoscaler controller webhook |
Pod | knative-serving | domain-mapping |
Pod | knative-serving | domainmapping-webhook |
Pod | knative-serving | net-istio-controller net-istio-webhook |
Pod | kube-system | metrics-server |
Pod | kubeflow | admission-webhook-deployment |
Pod | kubeflow | cache-server |
Pod | kubeflow | centraldashboard |
Pod | kubeflow | workflow-controller |
Pod | kubeflow | mysql |
Pod | kubeflow | minio |
Pod | kubeflow | ml-pipeline ml-pipeline-persistenceagent ml-pipeline-scheduledworkflow ml-pipeline-ui ml-pipeline-viewer-crd ml-pipeline-visualizationserver |
Pod | kubeflow | katib-controller katib-db-manager katib-ui |
Pod | kubeflow | jupyter-web-app-deployment notebook-controller-deployment |
Pod | kubeflow | metadata-envoy-deployment metadata-grpc-deployment metadata-writer |
Pod | kubeflow | metacontroller |
Pod | kubeflow | profiles-deployment kubeflow-pipelines-profile-controller |
Pod | kubeflow | kserve-controller-manager kserve-models-web-app |
Pod | kubeflow | tensorboard-controller-deployment tensorboards-web-app-deployment |
Pod | kubeflow | training-operator |
Pod | kubeflow | volumes-web-app-deployment |
Job | ingress-nginx | ingress-nginx-controller-admission-create ingress-nginx-controller-admission-patch |
Job | gpu-operator | gpu-mig-setter |
Job | cert-manager | cert-manager-issuer-injecter |
Job | ingress-nginx | ingress-nginx-cm-setter |
Job | kubeflow | user-generator |
Job | kubeflow | katib-cert-generator |
Job | istio-system | authservice-pvc-generator |
Pod | nfs | nfs-subdir-external-provisioner |
Pod | gpu-overview | gpu-overview-discovery |
Pod | gpu-operator | gpu-operator gpu-operator-node-overview-discovery-master gpu-operator-node-overview-discovery-worker |
Pod | nvidia | nvidia-container-toolkit-daemonset nvidia-cuda-validator nvidia-dcgm-exporter nvidia-device-plugin-daemonset nvidia-device-plugin-validator nvidia-mig-manager nvidia-operator-validator |
GPU 노드 풀을 사용하는 경우 GPU MIG 인스턴스 설정 항목과 사용 현황을 확인할 수 있습니다.
해당 탭은 GPU 노드 풀을 사용하지 않는 경우 노출되지 않습니다.
구분 | 설명 |
---|---|
필터 | 노드 풀, GPU MIG 인스턴스 중 선택하여 정렬된 GPU 사용 현황 확인 - “노드 풀” 선택 : 전체 노드 풀 혹은 Kubeflow 생성 시, 선택한 노드 풀 중 택 1 - “GPU MIG 인스턴스” 선택 : 전체 GPU MIG 인스턴스 혹은 Kubeflow 생성 시, 설정한 MIG 인스턴스(1g. 10gb 등) 중 택 1 |
Total | 필터로 선택한 항목의 총합 확인 - Total : 필터로 선택한 항목 명 - 현재 사용 중 : 현재 사용 중인 MIG 인스턴스 수의 총 합 - 최대 사용 가능 : Kubeflow 생성 시, 설정한 MIG 인스턴스 정보를 기반으로 최대 사용 가능한 MIG 인스턴스 수의 총 합 |
조회 항목 | - 노드 풀 : 클릭 시, 해당 노드 풀 상세화면으로 이동 - 인스턴스 유형 : 해당 노드 풀의 인스턴스 유형 안내 - MIG 인스턴스 ㄴ A100 인스턴스 패밀리 : 1g. 10gb, 2g. 10gb, 3g. 40gb, 4g. 40gb, 7g. 80gb - 현재 사용 중 : 해당 MIG 인스턴스에서 현재 사용 중인 수 - 최대 사용 가능 : 해당 MIG 인스턴스에서 최대로 사용 가능한 수 |
구분 | 설명 |
---|---|
필터 | 노드 풀, 네임스페이스, 파드 선택하여 데이터 현황 확인 |
데이터기간 | 조회할 모니터링 지표 기간 - 기간: 1시간(기본값) / 3시간 / 12시간 / 1일 / 7일 |
조회 항목 | 조회할 모니터링 항목 |
자동 새로고침 주기 | 자동 새로고침 주기 설정 - 주기: 자동 새로고침 안 함(기본값) / 10초 / 30초 / 1분 / 5분 |
수동 새로고침 | 클릭 시, 모니터링 결과 새로고침 |
모니터링 제공 데이터
Metric Name | 설명 | Unit |
---|---|---|
CPU 사용량 | CPU 사용량 | millicores |
Memory 사용량 | CPU 메모리 사용량 | bytes |
Graphic Engine Active Percent | 그래픽 엔진이 활동하는 시간 비율 | % |
Tensor Core Utilization | Tensor (HMMA) 파이프가 활성화되는 주기 비율 | % |
DRAM ACTIVE Percent | 장치 메모리 인터페이스에서 데이터를 보내거나 받는 활동 주기 비율 | % |
GPU Framebuffer Mem Usage | GPU 프레임버퍼 메모리 사용률 | % |
GPU Framebuffer Mem Used | GPU 프레임버퍼 메모리 사용량 | MiB |
GPU Framebuffer Mem Free | 사용 가능한 GPU 프레임버퍼 메모리 | MiB |
GPU SM Clocks | GPU SM 클럭 주파수 | MHz |
GPU Temperature | GPU 온도 | ℃ |
GPU Power Usage | GPU 전력 소비 | W |
GPU 인스턴스 유형에 대한 메트릭은 Kubeflow 상세화면 > 모니터링에서만 확인 가능합니다.
- 카카오클라우드 Monitoring 서비스의 커스텀 대시보드에서는 추후 지원 예정입니다.
Kubeflow 쿼터 설정
쿼터는 네임스페이스 안에서 사용할 수 있는 자원량을 의미하며, Kubeflow가 설치된 Kubernetes Engine의 자원을 기반으로 네임스페이스별 쿼터를 지정하여 사용할 수 있습니다.
네임스페이스 생성 시 기본적으로 CPU 5 core 및 4 GiB 메모리가 사용됩니다. 원활한 사용을 위해 해당 값 이상의 쿼터를 지정해야 합니다.
쿼터 설정 방법
쿼터는 콘솔 사용자/그룹 생성 및 수정 화면에서 가능합니다. (대시보드에서는 쿼터 설정을 할 수 없습니다.)
-
카카오클라우드 콘솔 > Kubeflow 메뉴로 이동합니다.
-
Kubeflow 탭에서 사용할 Kubeflow를 선택합니다.
-
Kubeflow의 상세 화면에서 사용자 탭을 선택합니다.
-
[사용자 추가] 버튼을 클릭합니다.
-
쿼터 할당 사용 체크 후 원하는 쿼터를 지정합니다.
사용자 추가 화면
사용자 별 [더 보기] 버튼 클릭 후 사용자 수정을 통해 쿼터 추가 및 변경이 가능하며, 그룹 쿼터의 경우 그룹 탭에서 동일한 방법으로 설정 가능합니다.
이미 사용 중인 네임스페이스의 쿼터를 추가/축소(+/-) 할 경우, 작업 중인 리소스에 영향이 있을 수 있습니다. 반드시 사용 중인 리소스 현황을 확인 후 수정해 주세요.
쿼터 할당 조건
-
쿼터는 CPU 수량(개수), CPU 메모리(GiB), GPU 메모리(GiB)로 구분되며 각 영역 별 최대 값은 Kubernetes Engine의 Worker와 Ingress 노드풀을 제외한 모든 노드풀의 합으로 이루어집니다.
(즉 쿼터 설정을 위해서는 Worker와 Ingress 노드풀 외에 추가적인 노드풀이 필요합니다.)쿼터 구분 최대 값 기준 CPU 수량 Worker, Ingress 노드풀을 제외한 모든 노드풀의 CPU Core 개수 합 (최소 5 core 이상) CPU 메모리 Worker, Ingress 노드풀을 제외한 모든 노드풀의 CPU Memory 합 (최소 4 GiB 이상) GPU 메모리 모든 GPU 노드풀의 GPU Memory 합 -
쿼터를 할당받기 위해서는 사용자 네임스페이스 또는 그룹 네임스페이스가 필요합니다.
-
이미 최대 쿼터 값을 사용중인 경우 추가 쿼터 설정은 불가합니다.
최대 쿼터 값 계산 방식
최대 쿼터 값은 Ingress 및 Worker 노드풀을 제외한 자원의 합으로 이루어지며, 생성된 자원보다 적게 설정될 수 있습니다.
또한 같은 노드 풀을 여러 번 사용한 경우 중복 계산되지 않습니다.
계산 방식 예시
노드풀 | 플레이버 | CPU Core | CPU Memory | GPU Memory | 노드 수 |
---|---|---|---|---|---|
ingressNodePool | a1-2-std | 2 | 8 | - | 1 |
workerNodePool | a1-4-std | 4 | 16 | - | 6 |
cpuNotebookNodePool | a1-8-std | 8 | 32 | - | 6 |
cpuPipelineNodePool | cpuNotebookNodePool과 동일한 노드풀 사용 | 8 | 32 | - | 6 |
gpuNotebookNodePool | 1a100-32-244 | 32 | 244 | 80 | 2 |
gpuPipelineNodePool | 2a100-64-488 | 64 | 488 | 160 | 2 |
Kubeflow 생성 시 설정한 노드풀 정보가 위와 같다고 가정할 때, 가용 가능한 각 쿼터 별 최대 값은 아래와 같습니다.
- CPU Core 최대 값: cpuNotebookNodePool(48) + cpuPipelineNodePool(0) + gpuNotebookNodePool(64) + gpuPipelineNodePool(128) = 240 Core
- CPU Memory 최대 값: cpuNotebookNodePool(192) + cpuPipelineNodePool(0) + gpuNotebookNodePool(488) + gpuPipelineNodePool(976) = 1656 Memory
- GPU Memory 최대 값: cpuNotebookNodePool(0) + cpuPipelineNodePool(0) + gpuNotebookNodePool(160) + gpuPipelineNodePool(320) = 480 Core
사용(점유) 중인 쿼터 값 계산 방식
-
사용(점유) 중인 쿼터 값은 해당 Kubeflow에서 네임스페이스를 가지는 모든 사용자 및 그룹에 설정된 쿼터의 합계로 계산됩니다.
-
네임스페이스는 있지만 쿼터 할당(설정)이 안된 경우 사용(점유) 중인 쿼터로 계산되지 않습니다.
가용 가능 쿼터 값 계산 방식
-
가용(사용) 가능 쿼터는 최대 쿼터 값 - 사용(점유) 중인 쿼터 값으로 계산됩니다.
-
쿼터 할당(설정) 없이 사용중인 자원은 사용(점유) 중인 쿼터로 계산되지 않습니다.
공인 IP로 Kubeflow 대시보드 연결
Kubeflow 대시보드에 공인 IP를 연결하여 접근할 수 있습니다.
로드밸런서에 공인 IP 연결
서비스 생성 시 Kubeflow 인그레스 컨트롤러를 통해 생성된 로드밸런서에 공인 IP를 연결한 후 할당된 IP 주소를 통해 대시보드에 접근합니다.
Kubeflow 만들기 시, 인그레스 컨트롤러를 통해 자동으로 필요한 Load Balancer 리스너, 타겟 그룹을 정의하기 때문에 별도의 생성 및 수정 작업은 없습니다.
-
카카오클라우드 콘솔 > Load Balancer 메뉴로 이동합니다.
-
Load Balancer 메뉴에서
kube_service_{프로젝트 아이디}_{IKE 클러스터명}_ingress-nginx_ingress-nginx-controller
네이밍 규칙의 로드밸런서를 선택합니다. -
로드밸런서 상세 페이지에서 [더 보기] 아이콘을 선택합니다.
-
공인 IP 연결 설정 모달에서 정보를 입력하고, [저장] 버튼을 클릭합니다.
로드밸런서에 공인 IP 연결 설정
구분 설명 로드밸런서 이름 선택한 로드밸런서의 이름 사설 IP 선택한 로드밸런서의 사설 IP 정보 공인 IP 할당 아래 옵션 중 선택
- 새로운 공인 IP를 생성하고 자동으로 할당
- 보유한 공인 IP 목록에서 선택 : 할당할 공인 IP 선택 -
공인 IP를 연결한 후, Kubeflow 상세 정보 탭에서 빠른 실행 선택 후 연결된 공인 IP 정보를 선택합니다.
-
대시보드에 정상적으로 접근되는지 확인합니다.
Kubeflow 대시보드 연결 확인
Kubeflow 서비스를 활용한 더 많은 사용 예제는 튜토리얼의 Machine Learning & AI 카테고리에서 확인할 수 있습니다.