훈스비
개발잡부
훈스비
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • 스터디 (29)
      • 데이터 분석 (4)
      • SQL (4)
      • Python (1)
      • JavaScript (1)
      • Spark (1)
      • DevOps (7)
      • 기타 (8)
      • 검색 엔진 (3)
    • 나의 이야기 (4)
      • 회사 생활 (3)
    • 사이드 프로젝트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Docker
  • elasticsearch
  • flask
  • GCP
  • github copilot
  • helm
  • java
  • jupyterhub
  • k8s
  • Kubernetes
  • leetcode
  • linux
  • ncp
  • Ray
  • ReplicaSet
  • spark
  • spring
  • sql
  • udemy
  • Virtualization
  • vm
  • vsCode
  • vue
  • 개발원칙
  • 검색엔진
  • 데이터 분석
  • 랭킹
  • 백엔드
  • 사이드프로젝트
  • 유사도 정규화

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
훈스비

개발잡부

[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기
스터디/DevOps

[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기

2022. 4. 17. 16:24

쿠버네티스에 JupyterHub 구성하기

 

[배경]

회사에서 쿠버네티스(Kubernetes)를 이용해서 분석 환경을 구성하고 있습니다. 회사에서는 쿠버네티스를 Iaas(Infra as a service)를 제공하고, 각 팀에서는 본인의 팀 상황에 맞게 환경을 구축하는거죠.

제가 소속된 팀에서는 최근 JupyterHub를 도입하기로 결정했는데요. 그 이유는 3가지가 있습니다.

  1. Spark를 편리하게 사용하기 위해 노트북 환경이 필요함.
  2. 보안 설정을 위해 이미지를 따로 빌드해야 함.
  3. VSCode에서 SSH로 연결해서 사용 가능하도록 각자의 Instance(Pod)을 따로 구성해야 함.

Spark를 사용하기에는 Zeppelin이 더 편리한 부분이 있지만 특히 보안 이슈와 VSCode 접근 목적으로 결국 JupyterHub를 사용하기로 결정했습니다.

그리고 쿠버네티스의 패키지 도구인 헬름(Helm)을 이용하면 정말 쉽게 서비스를 배포할 수 있는데, JupyterHub에서는 자체적으로 헬름 차트(Chart)를 지원합니다.

Zero to JupyterHub

 


[배포]

헬름을 이용하면 JupyterHub의 배포는 정말 쉽습니다.

1. config.yaml 정의

JupyterHub를 커스터마이징하기 위해 config.yaml를 정의해야 합니다.

참고로 {}로 적혀있는 부분은 직접 적어줘야 하는 부분이고, 간단한 구성에 필요없는 설정들은 제외한 점은 참고해주세요!

## config.yaml  # 레퍼런스 참고 # https://zero-to-jupyterhub.readthedocs.io/en/stable/resources/reference.html # https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/1.1.3/jupyterhub/values.yaml  ingress: # 외부와 연결을 위한 Ingress 설정   enabled: true  singleuser: # 개인마다 JupyterLab이 생성될 때의 설정   startTimeout: 600   defaultUrl: "/lab"  cull:   enabled: false  hub: # Hub Control Panel 설정   networkPolicy:     interNamespaceAccessLabels: accept    extraConfig:     httpTimeout: |       c.KubeSpawner.http_timeout = 3000 

 

2. Helm을 이용한 설치

## helm repo 추가 helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/ helm repo update  ## helm chart 설치 helm upgrade --cleanup-on-fail \   --install test-jupyterhub jupyterhub/jupyterhub \   --namespace default \   --version=1.2.0 \   --values config.yaml 

설치가 끝났습니다!

 

3. 접속

## 접속할 서비스 확인 kubectl --namespace=default get svc proxy-public  ## 포트 포워딩 kubectl port-forward service/proxy-public 8088:80 

포트 포워딩이 정상적으로 됐다면 http://localhost:8088/로 JupyterHub 접속이 가능합니다.

접근이 가능한 계정을 따로 정의해두지 않았기 때문에 임의의 계정을 입력하면 자동으로 계정이 생성되어 접속이 가능합니다.

이렇게 접속이 되는 모습을 볼 수 있습니다!

어쨌든 배포는 했는데... Spark를 사용하기 위해서는 추가 설정과 난관이 있어서, 다음 포스팅에서 이야기해보겠습니다.

 

[Reference]

  • Helm
  • Zero to JupyterHub

'스터디 > DevOps' 카테고리의 다른 글

[Kubernetes] #4 ReplicaSet  (0) 2022.10.29
[Kubernetes] #3 Pod  (2) 2022.10.08
[Kubernetes] #2 Kubernetes Architecture  (0) 2022.09.29
[Kubernetes] #1 Kubernetes(쿠버네티스) 개요 및 가상화 기술  (0) 2022.09.29
[Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub)에 Random Port 설정하기  (0) 2022.04.17
    '스터디/DevOps' 카테고리의 다른 글
    • [Kubernetes] #3 Pod
    • [Kubernetes] #2 Kubernetes Architecture
    • [Kubernetes] #1 Kubernetes(쿠버네티스) 개요 및 가상화 기술
    • [Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub)에 Random Port 설정하기

    티스토리툴바