[MLOps] Seldon Core

GisangLee·2023년 3월 25일
0

ML

목록 보기
136/141

1.Prerequisite 개념 정리

쿠버네티스 관련 사전 지식이 필요.
아직 익숙치 않다면 Seldon Core의 사용방식만 익히고 넘어가자


작성자 본인은 아직 쿠버에 익숙하지 않다.
그러니 더 공부할 예정....

Custom Resource

  • https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

    CR은 쿠버네티스의 API 확장판

  • 쿠버네티스가 기본적으로 관리하는 리소스들에는 Pod, Deployment, Service, persistenetVolume 등이 있다.

  • BUT!! 유저가 직접 정의한 리소스를 쿠버네티스에의 API를 사용해서
    관리하고 싶은 경우, Custom Resouces와 해당 CR의 라이프 사이클과
    동작을 관리할 컨트롤러 (혹은 API 서버)를 구현 후, 쿠버네티스 클러스터에 배포해야한다.

    • CR을 클러스터에 등록하는 방법은 Custom Resource Definition (CRD) 방식과 API Aggregation (AA) 방식 두 가지가 있다.

    • CRD 방식은 CR을 관리할 Custom Controller를 구현하고 배포하여 사용하고, Controller는 대부분 Operator pattern으로 개발된다.
  • 쉽게 말하면, 쿠버네티스에서 default로 관리하지는 않지만,
    배포된 Custom Controller에 의해 쿠버네티스에서 관리되고 있는 리소스들이다.

Operator pattern

  • https://kubernetes.io/docs/concepts/extend-kubernetes/operator/

  • Controller

    • Desired State와 Current State를 비교하여,
      Current State을 Desired State에 일치시키도록 지속적으로 동작하는 무한 루프
  • Operator

    • Controller pattern을 사용하여 사용자의 애플리케이션을 자동화하는 것.
      • 주로 CR의 Current/Desired State를 지속적으로 관찰하고
        일치시키도록 동작하는 역할을 위해 사용

  • Operator 개발 방법

    • Operator 개발에 피룡한 부수 작업이 자동화 되어있는 Framework를 활용하여 개발 ( kubebuilder, KUDO, Operator SDK )

    • seldon-core, prometheus, grafana, kubeflow, katib을 포함해
      쿠버네티스 생태계에서 동작하는 많은 모듈들이 이러한 Operator로 개발되어있다.

Helm

쿠버네티스 모듈의 Package Managing tool

  • 우분투 OS의 패키지 관리 도구 apt, Mac os의 패키지 관리 도구 brew와 비슷
  • 하나의 쿠버네티스 모듈은 다수의 리소스들을 포함하고 있는 경우가 많다.

    • 즉, a.yaml, b.yaml 등 많은 수의 쿠버네티스 리소스 파일들을 모두 관리해야하기에
      버전 관리, 환경별 리소스 파일 관리 등이 어렵다.
  • Helm은 이러한 작업들을 템플릿화 시켜서 많은 수의 리소스들을
    마치 하나의 리소스처럼 관리할 수 있게 도와주는 도구.

    • Helm manifest는 크게 templates와 values.yaml로 이루어져있고,
      templates 폴더에는 해당 모듈에서 관리하는 모든 쿠버네티스 리소스들의
      템플릿 파일이 보관된다.

    • 또한 values.yaml 이라는 인터페이스로부터 사용자에게 값을 입력받아
      templates의 정보와 merge하여 배포된다.

2. Seldon Core 설치

  • Prerequisites
    • 쿠버네티스 환경 (v1.18 이상)
      • minikube
      • kubectl
    • Helm3
    • Ingress Controller
      • Ambassador
    • Python
      • 3.6 이상
      • pip3

minikube

$ minikube start --driver=docker --cpus='4' --memory='4g'

helm 설치

  • v3.0 이상

  • linux

# https://github.com/helm/helm/releases 에서 link 확인
$ wget <URL>

# 압축 풀기
$ tar -zxvf <zip 파일명>

# 바이너리 PATH로 이동
$ mv linux-amd64/helm /usr/local/bin/helm

# helm 동작 확인
$ helm help
  • mac
brew install helm

ambassador

  • chart version: ambassador-6.9.1
# ambassador를 install하기 위해 public하게 저장된 helm repository 등록

$ hepl repo add datawire https://www.getambassador.io

# helm repo update
$ helm repo update

# helm install ambassador with some configuration
$ helm install ambassador datawire/ambassador \
  --namespace seldon-system \
  --create-namespace \
  --set image.repository=quay.io/datawire/ambassador \
  --set enableAES=false \
  --set crds.keep=false

# 정상 설치 확인
$ kubectl get pod -n seldon-system -w
$ kubectl get pod -n seldon-system
profile
포폴 및 이력서 : https://gisanglee.github.io/web-porfolio/

4개의 댓글

comment-user-thumbnail
2023년 7월 31일

안녕하세요. 궁금한 부분이 있어서 댓글을 작성합니다.
지금 리눅스 20.04 서버 환경에서 seldom core 를 설치중인데,
helm install ambassador datawire/ambassador \
--namespace seldon-system \
--create-namespace \
--set image.repository=quay.io/datawire/ambassador \
--set enableAES=false \
--set crds.keep=false
에서 아래와 같은 에러가 계속 발생하는데, 검색을 해봐도 솔루션을 찾기가 힘드네요...
Error: failed to install CRD crds/filter.yaml: unable to recognize "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
혹시 설치가 되는 방법이 있을지 문의 드립니다.~~

1개의 답글