対象Notebook
「作業用Notebookの作成」の冒頭で、作業用Notebookを配置するディレクトリを次のように指定しています。
= 'work' WORK_DIR
ここで指定したディレクトリ配下に作業用Notebookが作成されていますので、そちらのNotebookを直接実行ください。
対象Notebook
'scripts/check_params.py'
not found.と出力されエラーとなる000-README.ipynb
において「作業用Notebookの作成」を実行せず、notebooks/
にあるNotebookを直接実行している場合に下記のようなエラーが出力されます。 000-README.ipynb
において「作業用Notebookの作成」を実行し、作成された作業用のNotebookを実行してください。
File /opt/conda/lib/python3.10/site-packages/IPython/core/interactiveshell.py:2305, in InteractiveShell.run_line_magic(self, magic_name, line, _stack_depth)
2303 kwargs['local_ns'] = self.get_local_scope(stack_depth)
2304 with self.builtin_trap:
-> 2305 result = fn(*args, **kwargs)
2306 return result
File /opt/conda/lib/python3.10/site-packages/IPython/core/magics/execution.py:707, in ExecutionMagics.run(self, parameter_s, runner, file_finder)
705 if os.name == 'nt' and re.match(r"^'.*'$",fpath):
706 warn('For Windows, use double quotes to wrap a filename: %run "mypath\\myfile.py"')
--> 707 raise Exception(msg) from e
708 except TypeError:
709 if fpath in sys.meta_path:
Exception: File `'scripts/check_params.py'` not found.```
[DEPRECATION WARNING]
が出力されエラーとなるansibleの実行で warning メッセージが出ているため、想定した出力結果を処理できずにエラーになってしまっています。 ansible.cfg
の [defaults]
セクションに command_warnings
を設定している行があるのでそれを削除し、再度実行ください。
対象Notebook
コンテナの起動に失敗していることがあります。「コンテナの起動」の最後にある起動後の状態を次のコマンドを個別に実行しログを確認しているセルがありますので、それらを実行し、何度も再起動がくりかえされていないか、エラーが出ていないか確認ください。
!ansible {target_hub} -a 'docker stack ps {{{{ugroup_name}}}}'
!ansible {target_hub} -a 'docker service logs {{{{ugroup_name}}}}_postgres'
!ansible {target_hub} -a 'docker service logs {{{{ugroup_name}}}}_jupyterhub'
!ansible {target_hub} -a 'docker service logs {{{{ugroup_name}}}}_auth-proxy'
再起動を繰り返している場合やエラーが出力されている場合はmanagerノード上で次のコマンドでCoursewareHubのコンテナ群を再配備を実行し、問題が解消されないかお試しください。
# 下記の{unitgroup_name}は構築時に指定したUnitGroup名に置き換えて実行ください
cd /srv/cwh
docker stack rm {unitgroup_name}
docker stack deploy -c docker-compose.yml {unitgroup_name}
問題が解消されない場合はお問い合わせください。
対象Notebook
CoursewareHub管理者環境から manager ノードに ssh で 初めて 接続する際に、接続先のホスト鍵を ~/.ssh/known_hosts
に取り込むかどうかを Are you sure you want to continue connecting (yes/no)?
のように聞かれます。この状態で止まったままになるとNotebook上には何も表示されずセルが実行中のままとなります。
Jupyter Notebook Terminal から manager ノード に ssh 接続をし、上記のメッセージに yes
と入力し、known_hosts ファイルにホスト鍵を取り込み、その後にセルを実行ください。
managerノードでexportしているファイルをsingleuserコンテナでマウントするには次の2ステップを踏む形になります。
workerノードでは、managerノードの /exported/${ugroup_name}
を /mnt/nfs
にNFSマウントしています(workerノードの /etc/fstab
で確認出来ます)。 そのため、そのディレクトリの下に共有ディレクトリを作ればNFSにより各ノードでファイルを共有することができます。
ノードでNFSの共有ができていることを前提とすれば singleuser コンテナではNFSを考慮する必要はなく(bind mountなどを利用して)そのノードのファイルをどうやってsingleuserコンテナに見えるように設定できるかだけを検討すれば良いことになります。 singleuserコンテナに対して追加のbind mountを設定するには jupyterhub コンテナの中にある設定ファイル /srv/jupyterhub/jupyterhub_config.py
に extra_user_mounts の記述を追加します。
singleuserコンテナに対して追加のbind mountを設定する方法は次のステップになります。
編集元となる(ocs-templateで使っているjupyterhubコンテナの) jupyterhub_config.py は、以下のコマンドで取得できます。
curl -L -O <https://raw.githubusercontent.com/NII-cloud-operation/CoursewareHub-LC_platform/54a91>
fabd6490ae43347967fe203353c53d45f2c/jupyterhub/jupyterhub_config.py
例えば worker ノードの /mnt/nfs/local
をsingleuserコンテナの /opt/local
としてbind mountするには、以下のような記述内容を元々の jupyterhub_config.py に追記します。
from docker.types import Mount
= [Mount(
c.CoursewareUserSpawner.extra_user_mounts type="bind",
='/opt/local',
target='/mnt/nfs/local',
source=False
read_only )]
記述を追加した設定ファイルをjupyterhubコンテナに反映するには、 docker-compose.yml を変更し、追加の設定ファイルをbind mountするように、以下に示す差分のような変更を行ってCoursewareHubのコンテナ群を再配備します。前提としては追加の設定ファイル jupyterhub_config.py をmanagerノードの /srv/cwh/jupyterhub/jupyterhub_config.py
に配置していることを想定しています。
--- docker-compose.yml.orig 2023-05-25 14:01:27.494816172 +0000
+++ docker-compose.yml 2023-05-25 14:01:12.746763628 +0000
@@ -33,20 +33,23 @@
target: /var/run/docker.sock
- type: bind
source: /var/run/restuser.sock
target: /var/run/restuser.sock
- type: bind
source: /srv/cwh/jupyterhub/logo.png
target: /var/jupyterhub/logo.png
- type: bind
source: /srv/cwh/jupyterhub/resource.yaml
target: /srv/jupyterhub/resource.yaml
+ - type: bind
+ source: /srv/cwh/jupyterhub/jupyterhub_config.py
+ target: /srv/jupyterhub/jupyterhub_config.py
networks:
- courseware-backend
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
auth-proxy:
image: <http://harbor.vcloud.nii.ac.jp/vcp/coursewarehub:auth-proxy-20220222|harbor.vcloud.nii.ac.jp/vcp/coursewarehub:auth-proxy-20220222>
volumes:
managerノード上で次を実行ください。
# 下記の{unitgroup_name}は構築時に指定したUnitGroup名に置き換えて実行ください
cd /srv/cwh
docker stack rm {unitgroup_name}
docker stack deploy -c docker-compose.yml {unitgroup_name}
下記のNotebook内の「リソース制限の設定」にて実施している制限値が影響していることが考えられます。
上記で作成する設定ファイルに次のような最小保証値を設定をすることができます。
mem_guarantee: 1G
cpu_guarantee: 0.5
上記はそれぞれCPUとメモリの最小保証値となります。 single-userサーバコンテナを起動する際に、実際に使用されていなくても起動数 * 最小保証値
分のリソースが確保できない場合はそれ以上起動できなくなります。 これらの値を変更し、起動可能数に変化がないかご確認ください。 収容設計に関しましては、次のNotebookの「収容設計について」も情報がありますので参照ください。
設定値の変更の反映は次のような手順で可能です。
1.変更いただいた resource.yaml ファイルをmanagerノード上の次のファイルと置き換えてください。
/srv/cwh/jupyterhub/resource.yaml
2.その後managerノード上で次のコマンドを実行いただくと、新しい resource.yaml の設定で各コンテナを起動しなおすことができます。
# 下記の{unitgroup_name}は構築時に指定したUnitGroup名に置き換えて実行ください
cd /srv/cwh
docker stack rm {unitgroup_name}
docker stack deploy -c docker-compose.yml {unitgroup_name}
3.上記後に次を実行いただくと、各コンテナの起動状態が確認できます。
# 下記の{unitgroup_name}は構築時に指定したUnitGroup名に置き換えて実行ください
docker stack ps {unitgroup_name}
下記のNotebook内で「リソース制限の設定」節がありますので、こちらを確認いただきsingle-userサーバコンテナに割り当てるリソース配分の変更をお試しください。
お試しの際は次のNotebookを参考にGrafanaにて問題発生時のリソース状況を確認しつつ変更を実施いただくとよいかと思います。 特にNotebook内で紹介しているJupyterHub.jsonでは、single-userサーバコンテナの起動数やリソース使用量を確認することができますのでお役に立つかと思います。
リソース設定変更の反映の方法につきましては、こちらの項目を参照ください。
チェックスクリプトを用意していますのでご利用ください。
仮想マシンテンプレート化前の仮想マシン上で次の様に実行ください。
sudo sh ./ocs_vmware_template_check.sh
下記のサポート窓口までお問い合わせください。
CousewareHub構築時の問題の場合は、情報収集用のNotebookを用意していますので、こちらの実行結果を保存したファイルも添付ください。
国立情報学研究所 クラウド支援室 学認クラウドオンデマンド構築サービスサポート窓口:cld-ocs-support@nii.ac.jp