이세개발
article thumbnail

jupyterhub

https://github.com/jupyterhub
JupyterHub는 여러 사용자가 동시에 Jupyter notebook 서버를 사용할 수 있게 해주는 플랫폼입니다. 각 사용자는 자신만의 격리된 Jupyter notebook 인스턴스를 받게 되며, 이를 통해 코드를 작성하고 실행할 수 있습니다.

JupyterHub for kubernetes

JupyterHub는 사용자 인증, 사용자별 격리된 환경 제공, 컴퓨팅 리소스 할당 등의 기능을 제공합니다. 또한, Kubernetes와 같은 클라우드 플랫폼에 배포할 수 있어, 대규모 사용자 그룹을 지원하고, 컴퓨팅 리소스를 효율적으로 관리할 수 있습니다.

zero-to-jupyterhub
https://github.com/jupyterhub/zero-to-jupyterhub-k8s
이 레포지토리는 jupyterhub를 k8s 클러스터에 배포하는 JupyterHub에서 권장하는 공식 레포지토리 입니다.

준비 사항

먼저, Kubernetes 클러스터와 Helm이 설치되어 있어야 합니다. Kubernetes는 컨테이너화된 애플리케이션을 배포, 확장, 관리하는 오픈소스 플랫폼이며, Helm은 Kubernetes의 패키지 관리자로 애플리케이션을 쉽게 배포하고 관리할 수 있게 해줍니다.

설치 과정

  1. Helm 차트 추가: JupyterHub의 Helm 차트를 추가합니다. Helm 차트는 애플리케이션의 설치 및 설정을 단순화하는 패키지입니다. JupyterHub의 Helm 차트는 GitHub에서 제공됩니다.
  2. helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/ helm repo update
  3. JupyterHub 설치: Helm을 사용하여 JupyterHub를 설치합니다. 이 명령은 JupyterHub를 설치하고 필요한 모든 종속성을 설정합니다.config 파일에 admin 계정과 userScheduler: false를 적용시킨다.
    vi config.yaml
    
    hub:
       config:
         Authenticator:
           admin_users:
             - adminuser1
             - adminuser2
     scheduling:
       userScheduler:
         enabled: false
    
  4. 여기서 config.yaml은 JupyterHub의 설정을 포함하는 파일입니다. 이 파일을 사용하여 JupyterHub의 동작을 사용자 정의할 수 있습니다.
  5. touch config.yaml helm install jupyterhub jupyterhub/jupyterhub --version=0.8.2 --values config.yaml
   ### 고급 설정
   helm upgrade --cleanup-on-fail \
    --install <helm-release-name> jupyterhub/jupyterhub \
    --namespace <k8s-namespace> \
    --create-namespace \
    --version=<chart-version> \
    --values config.yaml

저는 이런 옵션으로 설치 했습니다.

   helm install jupyterhub jupyterhub/jupyterhub --create-namespace --namespace jupyterhub --values config.yaml

namespace만 지정해주고 version은 지정하지 않으면 최신버전으로 설치됩니다.

3.0.0 버전으로 설치가 된 것을 볼 수 있습니다.

  1. JupyterHub 확인: JupyterHub가 제대로 설치되었는지 확인합니다. 다음 명령을 실행하여 JupyterHub 서비스의 상태를 확인할 수 있습니다.
  2. kubectl get all -n <namespace>

이제 JupyterHub가 Kubernetes 클러스터에 설치되었습니다. 사용자는 웹 브라우저를 통해 JupyterHub에 접속하고, 자신만의 Jupyter 노트북 서버를 생성하여 사용할 수 있습니다.

  1. 접속하기
    port-forwarding설치 후 나온 링크에 있는 port-forwarding 방법입니다.
    이후 8080포트로 접근 하시면 됩니다.
     kubectl -n <namespace> get service
     
     kubectl -n <namespace> edit service proxy-public
     

    type 수정 -> NordPort
    ports:nodePort: 원하는 포트로 수정브라우저접속확인
  2. ![](https://velog.velcdn.com/images/tkfka/post/f5e25e73-0253-4ad8-9fef-670e9f8c3b1a/image.png)
  3. 2) 서비스 수정
    loadbalancer로 서비스 중인 proxy-public을 수정합니다.
  4. NodePort
    개인적으로 저는 nodeport 방식으로접속을 즐겨 사용하기 때문에 nodeport를 사용해보겠습니다.
    1) 서비스 찾기
  5. kubectl --namespace=jupyterhub port-forward service/proxy-public 8080:http

config 에서 지정한 adminuser1 으로 접속합니다.
처음 지정한 비밀번호로 계정이 생성됩니다.

마치며

JupyterHub와 Kubernetes, Helm을 사용하면, 여러 사용자가 동시에 데이터 분석 작업을 수행할 수 있습니다. 이 글에서는 이러한 도구들을 어떻게 사용하여 JupyterHub를 설치하는지에 대해 설명하였습니다. 다음 글에는 jupyerHub를 사용해 간단한 머신러닝, 데이터분석 관련을 구성한 jupyterHub에서 다뤄보도록 하겠습니다.

공식 설치 문서 링크
https://z2jh.jupyter.org/en/latest/jupyterhub/installation.html

profile

이세개발

@print(name)

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!