nuclio function을 쿠버네티스에서 배포해보자!

mingg·2024년 2월 15일
0

쿠버네티스

목록 보기
8/9
post-thumbnail

쿠버네티스에서 CVAT을 설치해보자!
일단 들어가기 앞서서 여러모로 CVAT을 쿠버네티스에서 돌리기 위해서 이것저것 하게 되었다.

첫번째 방법은 nuclio function
두번째 방법은 helm chart 이용이다.

일단 시작해보자!

Docker registry 구축

nuclio function은 일종의 이미지로 배포과정에서 이미지를 레지스트리에 push하고 pull하는 작업을 거치게 되는데, 해당 작업을 하기 위해서는 도커 레지스트리가 필요하다.
나는 nexus를 활용하여 private docker registry를 구축했다.
이거에 관련해서는 이전 post에서 다뤘으니 넘어가자

Nuclio helm package 설치

helm repo add nuclio https://nuclio.github.io/nuclio/charts
helm install nuclio \
--set registry.pushPullUrl=localhost:5000 nuclio/nuclio \
--set registry.secretName=registry-credential

Untitled

  • nuclio dashboard를 외부로 노출시키기 위한 service 오브젝트생성
kubectl expose deployment nuclio-dashboard --type=NodePort --name=nuclio-nodeport

[service]

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/managed-by: Helm
  name: nuclio-nodeport
  namespace: nuclio
spec:
  clusterIP: 10.99.69.2
  clusterIPs:
  - 10.99.69.2
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 32002
    port: 8070
    protocol: TCP
    targetPort: 8070
  selector:
    app: nuclio
    nuclio.io/app: dashboard
    nuclio.io/class: service
    nuclio.io/name: nuclio-dashboard
    release: nuclio
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
helm repo add nuclio https://nuclio.github.io/nuclio/charts
helm install nuclio \
--set registry.pushPullUrl=localhost:5000 nuclio/nuclio \
--set registry.secretName=registry-credential

  • nuclio dashboard를 외부로 노출시키기 위한 service 오브젝트생성
kubectl expose deployment nuclio-dashboard --type=NodePort --name=nuclio-nodeport

[service]

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/managed-by: Helm
  name: nuclio-nodeport
  namespace: nuclio
spec:
  clusterIP: 10.99.69.2
  clusterIPs:
  - 10.99.69.2
  externalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 32002
    port: 8070
    protocol: TCP
    targetPort: 8070
  selector:
    app: nuclio
    nuclio.io/app: dashboard
    nuclio.io/class: service
    nuclio.io/name: nuclio-dashboard
    release: nuclio
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

Nuclio CLI 기반 프로젝트 생성```bash

nuctl create project cvat


cvat git clone한 파일로 이동해서 하기

```yaml
docker build -t localhost:5000/cvat.pth.foolwood.siammask:latest .
docker tag cvat.pth.foolwood.siammask:latest localhost:5000/cvat.pth.foolwood.siammask:latest
docker push localhost:5000/cvat.pth.foolwood.siammask:latest
nuctl deploy --project-name cvat \
--path "./serverless/pytorch/foolwood/siammask/nuclio" \
--platform kube \
--registry 192.168.58.2:5000 --run-registry localhost:5000 \
--http-trigger-service-type NodePort
nuctl deploy --project-name cvat \
# Nuclio 함수의 소스 코드 및 설정 파일이 있는 경로를 지정
--path serverless/tensorflow/faster_rcnn_inception_v2_coco/nuclio \
# 수를 실행하는 동안 마운트되는 볼륨을 지정. 이 경우 "serverless/common" 디렉토리를 "/opt/nuclio/common" 경로에 마운트
--volume serverless/common:/opt/nuclio/common \
# 함수를 배포할 플랫폼을 지정한다. 여기서는 Kubernetes 플랫폼을 사용한다는거
--platform kube \
# Kubernetes 클러스터에 연결하기 위한 kubeconfig 파일의 경로를 지정
--kubeconfig ~/.kube/config \
# Docker 이미지를 푸시하고 풀할 Docker 레지스트리의 주소
--registry localhost:5000 \
# Kubernetes의 NodePort 서비스 유형을 사용하여 함수에 대한 HTTP 엔드포인트를 제공
--http-trigger-service-type NodePort

nuctl deploy --project-name cvat \
--path "./serverless/pytorch/foolwood/siammask/nuclio" \
--platform kube \
--registry 192.168.58.2:5000 --run-registry localhost:5000 \
--http-trigger-service-type NodePort

nexus registry에 이미지 빌드

profile
혼자 이것저것 해보는걸 즐깁니다..!

1개의 댓글

comment-user-thumbnail
2024년 12월 11일

안녕하세요! 저는 CVAT에 SAM 모델 사용해보려고 하고 있습니다! nuclio 부분에 보니 error 뜨신 부분이 있던데, 저와 비슷한 이유가 아닐까 싶어서요. 제 에러 내용은 아래와 같습니다.
Error - open serverless/pytorch/facebookresearch/sam/nuclio/function.yaml: no such file or directory
/nuclio/pkg/functionconfig/reader.go:111
혹시, 이 케이스에 대한 error 를 해결하셨거나 의견 부탁드려도될까요?

답글 달기