주피터 노트북이 안들어가질 때

작성자 김아름 수정일 2022-10-17 15:37

#jupyter, #SparklingSoDA3.0, #스파클링소다3.0, #Notebook, #hub

아티클 관련 제품: SparklingSoDA3.0

오류 메세지 혹은 현상
  • 프로젝트에 새로운 user를 추가한 후, engine 구동 완료가 되었습니다.

  • 그 후, 새로 추가주피터 노트북 Login을 하였습니다.
  • jupyter노트북이 열리지 않고, sorry for inconvenience 문구가 뜹니다.



원인
  • 구동 된 엔진의 로그를 살펴보아야 합니다.
    kubectl get po
    NAME                                             READY   STATUS    RESTARTS   AGE
    devai-59c6bbd7bf-lwhkp                           1/1     Running   1          5d22h
    devai-monitor-69959fbdc8-x7fmm                   1/1     Running   1          5d22h
    devai-service-mariadb-6b8cc7855d-29l6m           2/2     Running   2          5d22h
    devai-svc-68c467bcb9-r8bwg                       1/1     Running   1          5d22h
    gitlab-server-gitlab-2gsfk                       1/1     Running   8          455d
    gitlab-server-postgresql-vtmnv                   1/1     Running   25         455d
    gitlab-server-redis-f528h                        1/1     Running   36         455d
    jupyterhub-2-0-7-1-7bff5977b4-gc5c7              2/2     Running   14         382d
    nginx-ingress-controller-7b4d84d69d-phdk7        1/1     Running   7          455d
    nginx-ingress-default-backend-799d4df74f-ghhnz   1/1     Running   7          455d
    tiller-deploy-7848f5cf7c-bq8lt                   1/1     Running   7          455d

    pod를 조회한 뒤, 해당 프로젝트의 엔진 pod 이름을 찾습니다.
    위 예시에서는 jupyterhub-2-0-7-1-7bff5977b4-gc5c7 입니다.

    찾은 pod 이름으로 log를 확인해봅니다.
    kubectl logs <jupyterhub pod name> hub
    >>>> current user: <user name>
    create project git local repository..<user name> <user emai> <project name>
    Cloning into '<project name>'...
    error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out
    fatal: The remote end hung up unexpectedly

    로그를 조회해본 결과, clone_gitproject.sh 가 수행될 때 error가 발생하였습니다.
    새로운 user가 추가되어, 해당 user에 한해 git clone을 해오는 과정에서 time-out이 발생하였습니다.
    이러한 이유로 제대로 clone해오지 못해, 정상적인 jupyter login이 실패하였습니다.



문제 해결
  • git proxy time out 설정

    git proxy connect time out, git proxy send time out, git proxy read time out 값을 여유 있게 설정해 줍니다.
    1. 먼저, gitlab ingress 를 찾습니다.
      kubectl get ing | grep git
      gitlab-server-gitlab   *                 80      455d

    2. gitlab ingress를 수정합니다.
      kubectl edit ing gitlab-server-gitlab
      ingress.kubernetes.io/proxy-connect-timeout: "36000"
      ingress.kubernetes.io/proxy-send-timeout: "36000"
      ingress.kubernetes.io/proxy-read-timeout: "36000"

    3. 저장 후 나갑니다.
      kubectl edit ing gitlab-server-gitlab
      ingress.extensions/gitlab-server-gitlab edited

  • git branch 생성

    기존에 프로젝트를 사용 중이던 user로 로그인 한 뒤, git branch를 생성합니다.
    1. jupyter노트북으로 로그인한 뒤, New > Terminal 을 클릭합니다.
    2. 프로젝트 디렉터리로 이동합니다.
      cd <project name>


    3. git branch 를 생성합니다.
      git checkout --orphan test
      git rm -rf .
      git commit --allow-empty -m "init server manager"
      git push origin test


    4. 다시 원래 master branch 로 변경해줍니다.
      git checkout master



  • git clone 수정

    clone_gitproject.sh 를 수정하여, 새로운 user에게 빈 branch를 clone해오도록 합니다.

  1. devai/jupyter_hub/ 로 이동합니다.
    cd <sparklingsoda install directory>/devai/jupyter_hub

  2. clone_gitproject.sh를 백업 후, 수정합니다.
    cp cloen_gitproject.sh clone_gitproject.sh.org
    vi clone_gitproject.sh
    su $user -c "git clone -b test http://gitlab-server-gitlab/${GIT_ROOT}/${PROJECT}.git"

    git clone 해오는 명령어를 -b test 를 추가합니다.

  • pod 재기동

    pod를 삭제하면, 다시 올라오면서 엔진의 정상적인 로그를 확인할 수 있습니다.
    kubectl delete po <jupyterhub pod name>
    >>>> current user: <user name>
    create project git local repository..<user name> <user emai> <project name>
    Cloning into '<project name>'...
    Enabling tree extension jupyter_tensorboard/tree...
          - Validating: [32mOK[0m
    Enabling: jupyter_tensorboard
    - Writing config: /home/<user name>/.jupyter
        - Validating...
          jupyter_tensorboard 0.1.9 [32mOK[0m

아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300