관리 메뉴

중요한건 꺾이지 않는 맥북

Kubeflow - k8s cluster using Minikube 본문

MLOPS/kubernetes

Kubeflow - k8s cluster using Minikube

개발허재 2022. 11. 13. 22:14

모두의 MLOps를 따라하면서 이해하고 정리해봤습니다.


docker version: 5:20.10.11~3-0~ubuntu-bionic

kubectl version: v1.21.7

 

VirtualBox에서 단일 노드로 클러스터를 구축하기 위해 minikube로 설치하였습니다.

VirtualBox VM의 스펙은 CPU 4core, RAM 8G, 디스크공간 80G 입니다.

minikube version: v1.24.0


k8s modules

kustomize - v3.10.0

쿠버네티스 패키지와 관련된 자원을 한 번에 배포하고 관리할 수 있게 도와주는 패키지 매니징 도구 중 하나입니다. Node.js의 npm과 Python의 pip와 같은 역할이라고 생각하면 됩니다.

 

CSI Plugin(Container Storage Instance) : Local Path Provisioner - v0.0.20

kubernetes 내의 스토리지를 담당하는 모듈입니다. 단일 노드 클러스터에서 쉽게 사용할 수 있는 CSI Plugin인 Local Path Provisioner를 설치합니다. 


Setup Components

Kubeflow - v1.4.0

 

Cert-manager

Kubernetes 내부에서 HTTPS 통신을 위한 인증서를 생성하고, 또 인증서의 만료 기간이 되면 자동으로 인증서를 갱신해주는 역할을 하는 Certificate manager controller입니다.

- issuer: Issuer는 Namespace의 리소스로 속해있는 Namespace 안에서만 사용할 수 있는 리소스입니다. 반면 ClusterIssuer는 Namespace를 가리지 않고 Cluster 전역에서 접근할 수 있는 리소스입니다.

 

Istio

서비스 메쉬(Service Mesh)를 구현할 수 있는 오픈소스이다. Istio를 사용하면 서비스 코드 변경 없이 로드밸런싱, 서비스 간 인증, 모니터링 등을 적용하여 마이크로 서비스를 쉽게 관리할 수 있다. 마이크로 서비스 간의 모든 네트워크 통신을 담당할 수 있는 프록시인 Envoy를 사이드카 패턴으로 마이크로 서비스들에 배포한 다음, 프록시들의 설정값 저장 및 관리/감독을 수행하고, 프록시들에 설정값을 전달하는 컨트롤러 역할을 수행한다. 각각의 마이크로 서비스에 사이드카 패턴으로 배포된 Envoy 프록시를 Data Plane이라고 하고, Data Plane을 컨트롤 하는 부분은 컨트롤 플레인(Control Plane)이라고 한다. 

 

Dex

서드 파티로부터 OAuth 인증 토큰을 가져와 관리하는 인증 도구이다. OAuth를 사용하기 위해 반드시 Dex를 써야 하는 것은 아니지만, Dex는 OAuth 서드 파티와의 중간 매개체 역할을 해주기 때문에 OAuth의 인증 토큰의 발급, 저장 및 관리를 좀 더 수월하게 해결할 수 있다.

- OIDC(Open ID Connect)

OIDC 인증 방법은 OAuth2 위에서 동작하는 인증으로, Github이나 Google과 같이 서드 파티에서 부여받은 OAuth 권한을 통해 쿠버네티스의 인증을 수행한다.

 

Kubeflow Pipelines 

- Components: 실험, 작업 및 실행을 관리하고 추적하기 위한 사용자 인터페이스 (UI), 파이프라인을 관리하는 파이프라인 서비스, 파이프라인과 컴포넌트를 정의하고 제어하기 위한 SDK, 머신 러닝 워크 플로우 실행을 위한 컨트롤러

 

Katib

Kubeflow 컴포넌트로서, 하이퍼 파라미터(Hyperparameter) 튜닝 및 신경망 아키텍처 탐색(Neural Architecture Search)을 위한 쿠버네티스 기반의 시스템입니다. Katib는 TensorFlow, PyTorch, Apache MXNet, XGBoost 등 다양한 머신러닝 프레임워크를 지원합니다. Katib에는 실험(Experiment), 제안(Suggestion), 시도(Trial) 및 작업(Job) 이라는 개념이 있습니다.

 

Central Dashboard

Kubeflow 구성 요소에 빠르게 액세스할 수 있는 메인 대시보드

아직 notebook, tensorboards 등 리소스를 적용하지않은 메인 대시보드이다.
노트북은 위와같이 유효하지않은 페이지라고 뜨는 것을 확인할 수 있음

Admission Webhook

 

Notebooks & Jupyter Web App

자신의 Namespace에서 할당 받은 가용 Resource(Memory,Cpu)를 분할 해서 notebook 이라는 CRD를 통해 해당 네임스페이스에서pod가 생성됩니다. 이와 같은 구조를 가진 노트북은 jupyter-web-app-deployment 를 통해 API 통신이 이루어지고 생성됩니다.

 

 

Profiles + KFAM

Profile CRD는 다중 사용자를 Kubernetes 클러스터 내에서 액세스 할수있도록 합니다.

 

Volumes Web App