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 생성에 필요한 필수 노드 풀과 옵션 노드 풀을 생성합니다.
-
카카오클라우드 콘솔에서 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 로 상태가 변경될 경우 헬프데스크 > 기술 문의로 문의하시기 바랍니다. |
파일 스토리지 | 그룹에 할당된 파일 스토리지 정보 |
그룹 쿼터 할당 여부 | 그룹에 할당된 쿼터 정보 |
그룹 사용자 수 | 그룹에 등록된 사용자 수 - 클릭 시 그룹 사용자 설정 팝업 노출 |
생성 시간 | 그룹 생성 일시 |
[더 보기] 버튼 | - 그룹 수정: 그룹에 쿼터를 할당하거나 할당된 쿼터 정보를 수정할 수 있음 - 그룹 사용자 추가: 그룹에 사용자를 추가할 수 있음 - 그룹 사용자 설정: 그룹에 등록된 사용자를 확인하고 정보를 수정하거나 사용자를 그룹에서 제거할 수 있음 - 그룹 삭제: 그룹을 삭제할 수 있음 |