コンテナ技術を用いた教育情報システムの構築

  • 宮平 賢
    • 琉球大学工学部工学科知能情報コース
  • 河野 真治
    • 琉球大学工学部

学生が自由に利用できる教育情報システムの構築

  • 情報通信技術の普及に伴い学ぶことが増えている
  • その学習環境として、Virtual MachineやContainerがある
    • 実行には高性能なPCが必要な場合がある
    • クラウドサービスもあるが、無料だと制限がある
  • 学生の学習環境として、コストを支払う必要のない環境を提供したい
  • 今年度はシステム更新があり、学科サーバにSSDとGPUが搭載された
    • リソースを最大限利用できる教育情報システムが必要となる

これまでの学生向け学習環境

  • VM貸出サービス

    • Akatsuki
      • 申請を行い、Webコントロールパネルから作成する
    • ie-virsh
      • 手元のPCで作成したVMイメージを学科サーバにデプロイできる
  • VM貸出サービスのデフォルトスペック

    • CPU 1コア
    • メモリ 1GB
    • ディスク容量 10GB

これまでの学習環境の問題点

  • VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた

  • 旧システムにはGPUが搭載されていないため、貸出サービスではなく研究室ごとの機器、クラウドサービスが多く利用された

  • VMイメージの保存場所に使用していたGFS2はロックマネージャの影響が大きく、サーバ1台でもクラスタに参加できないとGFS2上にアクセスできなくなった

教育情報システムの構築

VMベースからコンテナベースへ移行

  • 旧システムはVMベースでシステムが構築されていた
  • サービスごとにVMがあり、管理に手間が掛かる
  • VMベースではサーバに搭載されるGPUを有効活用できない
    • 1つのVMに1台のGPUが必要になる
    • 希望する学生全員に割り当てきれない

  • サーバのリソースを効率よく利用できるコンテナへ移行する
  • VM貸出サービスは継続する

コンテナ環境の導入

  • マルチユーザで利用できるPodman、Singularityを導入する

  • Podman

    • Dockerと同じCLIを提供する (alias docker=podman)
    • nvidia-dockerの設定を行えばGPUを利用できる
  • Singularity

    • ホームディレクトリ、/tmpなどがコンテナにマウントされる
    • コンテナにユーザ権限が引き継がれる
    • コンテナから容易にGPUを利用できる
  • コンテナベースの学習環境を提供できるようになる

コンテナエンジンの補い

  • Podman

    • rootlessではイメージの作成やコンテナの作成が遅い
    • rootlessでは実行できない機能がある
      • IPアドレスの割り当て
  • Singularity

    • イメージの作成に時間がかかる
      • ビルド中にエラーが発生すると、一から再開する必要がある
  • そこでPodmanをwrappしたie-podmanを作成した

ie-podmanの作成

  • rootfullのPodman wrapperである
  • ユーザのUID、GIDを取得し管理を行う
    • 他のユーザのリソースを操作できない
    • コンテナ名、イメージ名をユーザ名で補完する
  • SSD上にイメージ等を保存し、高速化を図る

ie-podmanの機能 1/2

  • Podmanのすべての機能をwrappするのではなく、一部機能のみを提供する
コマンド 機能
build Containerfileの指示に従いイメージを作成する
cp コンテナにファイルを送信する
exec 起動中のコンテナでプロセスを実行する
images コンテナイメージの一覧を表示する
info コンテナの情報を表示する
logs コンテナのlogを表示する
ps 起動中のコンテナの一覧を表示する

ie-podmanの機能 2/2

  • registryやsifなど独自機能を提供する
コマンド 機能
registry 学科のレジストリの操作を行う
rm コンテナを削除する
run コンテナを作成する
sif イメージをsifファイルに変換する
start コンテナを起動する
stop コンテナを停止する

ジョブスケジューラとファイルシステムの導入

  • Slurmを採用
    • プログラム実行のリソースの管理を行う
    • 利用方針
      • 計算リソースの利用効率を上げる
  • Cephを採用
    • 自己修復、自己管理機能を搭載するため信頼性が高い
    • Monitorを3台のサーバで構成することで、最大1台の停止は許容される
    • 柔軟なアクセス方法を提供する
      • Object Gateway
      • ブロックデバイス
      • POSIX互換のファイルシステム

教育情報システムの利用

ie-podmanの使用方法 1/2

  • IPアドレス、GPUをコンテナへ割り当てられる
    • ie-podman run --ip --gpu [IMAGE_NAME]
$ ie-podman run --rm --ip --name test -dit ubuntu:20.04 
Assign an IP address: 10.100.20.1
6842a8a572a73f7a21542dbb9fec5b5b4ca668aa9c2f7d7fe2522e3be316836d

$ ping 10.100.20.1 
PING 10.100.20.1 (10.100.20.1) 56(84) bytes of data.
64 bytes from 10.100.20.1: icmp_seq=2 ttl=63 time=0.215 ms
64 bytes from 10.100.20.1: icmp_seq=3 ttl=63 time=0.201 ms

ie-podmanの使用方法 2/2

  • 作成したイメージをsifファイルへの変換に対応
    • ie-podman sif [IMAGE_NAME]
$ ie-podman images 
REPOSITORY                    TAG     IMAGE ID      CREATED         SIZE
localhost/e175733_test        latest  cb42448d39ca  21 seconds ago  138 MB

$ ie-podman sif e175733_test
INFO:    Starting build...
Getting image source signatures

(省略)

INFO:    Creating SIF file...
INFO:    Build complete: e175733_test_latest.sif

$ ls
e175733_test_latest.sif

GPUの利用方法

  • GPUを使用するプログラムはSingularityから実行する
    • singularity run --nv [SIF_NAME]
  • Jobの処理手順をまとめたBatchファイルの作成する
    • Jobに必要なリソース、実行したい処理を記述する
  • SlurmによるJobの投下する
    • sbatch [BATCH_FILE]
$ sbatch test.sbatch
Submitted batch job 1318

$ squeue
JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON) 
1318    steins      test  e175733  R       0:01      1 amane 

Batchファイルの例

  • Jobに必要とするリソース
    • CPU 8コア、GPU 1つ
  • Jobの実行時間
    • 1分
#!/bin/bash
#SBATCH --job-name sample
#SBATCH --output logs/%x-%j.log
#SBATCH --error logs/%x-%j.err
#SBATCH --nodes 1
#SBATCH --cpus-per-task 8
#SBATCH --gpus tesla:1
#SBATCH --time 01:00

singularity exec --nv [SIF_NAME] [COMMANDS]

教育情報システムの評価

ie-podmanの評価 1/2

  • 実験環境

    • 新システムの汎用サーバで実施
  • 実験概要

    • イメージのBuild速度を比較する
FROM ubuntu:20.04
RUN apt-get update && \
    apt-get upgrade -y
  • 比較するコンテナエンジン
    • Docker
    • ie-podman (Podman rootfull wrapper)
    • Podman (rootless)

ie-podmanの評価 2/2

ファイルシステムの評価 1/2

  • 実験概要

    • ddコマンドを使用し書き込み速度を比較する
  • 比較するファイルシステム

    • GFS2
      • 旧システムのVMイメージの保存場所として利用された
    • NFS
      • 旧システムのホームディレクトリとして利用された
    • CephFS
      • 新システムのホームディレクトリとして利用する
    • CephRBD
      • 新システムのVMイメージの保存場所の1つとして利用する

ファイルシステムの評価 2/2

まとめ

  • 今年度のシステム更新で教育情報システムの構築を行った
    • VMベースからコンテナベースへの移行ができた
    • 学生が自由にサーバのリソースを利用できるようになった
  • Cephと、これまでのGFS2との書き込み速度の比較を行った
  • 不便な点を補うために作成したie-podmanの評価を行った

今後の課題

  • 教育情報システムの周知
    • Jobの投下やリソースの要求方法
    • ie-virsh、ie-podmanの使用方法
  • ie-podmanのネットワーク構成の見直し
    • プレフィックス長が24のため、最大254個のIPアドレス
    • コンテナを停止したまま使用されない場合は削除する必要がある
  • 基幹サービスすべてのコンテナ移行
    • まだVMで動いている基幹サービスがある
  • 監視システムの導入
    • Prometheusによるコンテナの監視

--- # ie-podmanの評価 3/3 - Rootlessは`syscall`が複数呼ばれている - そのため、イメージの作成が遅いのではないか - 左がrootless、右がrootfull ![height:325](images/syscall.png)