Веб-превью от CloudShell из Jupyter Lab не работает
Я использую инструкции для запуска Deep Learning Image из Cloud Shell:
export IMAGE_FAMILY="tf-latest-cu92"
export ZONE="us-central1-f"
export INSTANCE_NAME="myvm"
gcloud compute instances create $INSTANCE_NAME \
--zone=$ZONE \
--image-family=$IMAGE_FAMILY \
--image-project=deeplearning-platform-release \
--maintenance-policy=TERMINATE \
--accelerator='type=nvidia-tesla-v100,count=1' \
--metadata='install-nvidia-driver=True'
VM запускается, и я могу ssh к нему и видеть, что Jupyter Lab работает.
Однако я не могу сделать WebPreview из Cloud Shell для подключения к нему. Что я делаю неправильно?
2 ответа
К сожалению, WebPreview от CloudShell до JupyterLab по образу глубокого обучения в настоящее время не работает. Команда работает над этим.
До этого, пожалуйста, установите и используйте gcloud ssh со своего ноутбука (обратите внимание на - между именем экземпляра и -L):
export INSTANCE_NAME="myvm"
gcloud compute ssh $INSTANCE_NAME -- -L 8080:localhost:8080
Причина, по которой вы не можете использовать предварительный просмотр Cloud Shell для подключения к JupyterLab, заключается в том, что предварительный просмотр подключается к экземпляру виртуальной машины Cloud Shell, в то время как JupyterLab работает на myvm (отдельном экземпляре), который вы создали с помощью gcloud compute instances create
Однако вы можете использовать ssh-туннелирование в Cloud Shell, так же, как вы предлагаете в своем ответе, а затем использовать предварительный просмотр Cloud Shell.
Например, я могу успешно подключиться к JupyterLab с помощью веб-предварительного просмотра, если я выполню следующее в Cloud Shell после настройки переменных среды и создания экземпляра:
export IMAGE_FAMILY="tf-latest-cu92"
export ZONE="us-central1-f"
export INSTANCE_NAME="myvm"
gcloud compute instances create ...
gcloud compute ssh $INSTANCE_NAME --zone=$ZONE -- -L 8080:localhost:8080
ОБНОВЛЕНИЕ: Как указано в комментариях, вышеприведенного недостаточно для того, чтобы заставить JupyterLab (как настроено в образе глубокого обучения) работать с Cloud Shell; нам также нужно настроить JupyterLab, чтобы разрешать запросы между источниками. Поскольку мы туннелируем через ssh, рекомендуется также ограничивать соединения JupyterLab локальным хостом (по соображениям безопасности). Для этого выполните следующие команды на myvm (например, после настройки туннеля выше):
myvm$ sudo sed -i \
-e "s/\(c.NotebookApp.ip\).*/\1 = 'localhost'/g; \
s/\(c.NotebookApp.allow_origin\).*/\1 = '*'/g" \
/root/.jupyter/jupyter_notebook_config.py
myvm$ sudo pkill jupyter-lab # restart to pick up config