changeset 23:b76c03afc18f

update abst
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Sun, 09 Aug 2020 16:02:36 +0900
parents 91064f88780c
children bb1a10c74924
files paper/mk-wm.pdf paper/mk-wm.tex
diffstat 2 files changed, 29 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
Binary file paper/mk-wm.pdf has changed
--- a/paper/mk-wm.tex	Sat Aug 08 21:28:21 2020 +0900
+++ b/paper/mk-wm.tex	Sun Aug 09 16:02:36 2020 +0900
@@ -63,14 +63,17 @@
 \author{河野 真治}{Shinji Kono}{IE}[kono@ie.u-ryukyu.ac.jp]
 
 \begin{abstract}
-IT技術を学ぶ時の学習環境の 1つとして, OS 上の隔離された環境を構築する技術であるコンテナがある. これらはローカルに設置された計算機, あるいはクラウド上に作られる. 
-作成されるコンテナは学生, あるいは教員側から適切に管理するシステムが必要となる. 
-管理システムはマルチユーザで動作するのは当然として, 利用者や管理者に適したUI, sudo権限で動作するコンテナへの対処などが含まれる. 
-学生の演習には, Webサービスの実装や人工知能の学習などがある. そのため, 気軽に開発環境やテスト環境などを用意できる利用のしやすさが重要である. 
-本稿ではコンテナ管理ソフトウェアである Docker, Singularity を用いた新規 Web サービスの設計・実装を行う. 
+情報技術の普及に伴い情報系の学生が課題や演習を行う学習環境が必要である。
+この学習環境では, 課題や演習によっては並列処理により, CPU より GPU が必要となる場合がある。
+このような学習環境を複数の学生に提供する方法として, VM や コンテナがある。
+しかし, 琉球大学工学部で運用している VM 貸出サービスでは, GPU を共有することができない。
+そこで, コンテナを利用することができる Docker と Singularity を用いて, オンプレミス環境でコンテナ貸出サービスを提供する。
+また, PC 上からコンテナへの操作を可能にするために Kubernetes でのコンテナ作成にも対応する。
+コンテナ貸出サービスは LDAP で管理された学生のアカウントを使用することで, 適切にコンテナの管理を行う。
+本稿ではサービスを実装する上で必要な技術概要を延べ, サービスの設計・実装を行う。
+
 \end{abstract}
 
-
 \maketitle
 
 \section{はじめに}
@@ -80,22 +83,22 @@
 \par
 琉球大学工学部工学科知能情報コースは2017 年度よりコース制へと移行し, 人工知能やシステム開発などの先端技術を身につける講義や実験が設けられた。
 講義の演習や実験は学生の PC で環境を構築し実行する。
-本コースでは希望の学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。
+本コースでは希望する学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。
 貸出をする VM のデフォルトのスペックは CPU 1コア, メモリ 1GB, ストレージ 10GB である。
-デフォルトのスペックでは不足の場合, 要望に応じてスペックの変更を行なっている。
+デフォルトのスペックでは不足する場合, 要望に応じてスペックの変更を行なっている。
 だが, 貸出 VM でも課題によってはスペックが足りなく, 処理に時間がかかることがあった。
-例として, 人工知能の課題のプログラムの処理には CPU より GPU を用いることで処理時間を早くすることができる。
+例として, 人工知能の講義において課される課題においては CPU より GPU を用いることで処理時間を早くすることができる。
 しかし, 現在の VM 貸出サービスでは GPU を提供することができない。
 GPU が搭載されている PC は研究室によっては用意されているが, 研究室に所属していない学生は利用することができない。
-そのため, 本コースの学生が学習するための高性能な環境を利用できる新たな仕組みが必要である。
+そのため, 本コースの学生が高性能な環境を利用できる新たな仕組みが必要である。
 \par
 学科のブレードサーバに搭載される GPU は VM の貸出サービスでは利用することができない。そこでコンテナ技術を利用する。
 コンテナ管理ソフトウェアである Docker\cite{docker} では NVIDIA Container Toolkit である nvidia-docker\cite{nvidia-docker} を利用することで, 複数のコンテナで GPU を共有することができる。
 Docker は基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。
-そのため Docker をマルチユーザ環境で使用すると, 他ユーザのコンテナを操作できるなどセキュリティの問題がある。\par
-そこで, 本論文では, Docker と マルチユーザ環境で利用しやすいコンテナプラットフォームである Singularity\cite{singu} を利用したコンテナ貸出サービスを設計・実装する。
+そのため Docker をマルチユーザ環境で使用すると, 他ユーザのコンテナを操作できるなどセキュリティ上の問題がある。\par
+そこで, 本論文では, Docker とマルチユーザ環境で利用しやすいコンテナプラットフォームである Singularity\cite{singu} を利用したコンテナ貸出サービスを設計・実装する。
 このコンテナ貸出サービスでは, Web コンソールからコンテナの管理をすることで他ユーザのコンテナへの操作をさせない。
-また, 本コースの類似サービスの課題でもあった外部リポジトリの利用は, Docker の機能を HTTP API で提供することで解消する。
+%また, 本コースの類似サービスの課題であった外部リポジトリの利用は, Docker の機能を HTTP API で提供することで解消する。
 
 \section{技術概要}
 本研究で必要な技術概要を述べる。
@@ -160,10 +163,11 @@
 
 \subsection{GitLab}
 GitLab\cite{gitlab} とは バージョン管理システムである Git のリポジトリマネージャである。GitLab はオンプレミス環境で利用できるため, 本コースでは GitLab を使用している。
-また, 本研究では GitLab の統合機能の GitLab CI/CD\cite{gitlabcicd}, GitLab CI/CD と組み合わせて使用する GitLab Runner\cite{gitlabrunner} を利用する。\par
+本研究では GitLab の統合機能の GitLab CI/CD\cite{gitlabcicd}, また GitLab CI/CD と組み合わせて使用する GitLab Runner\cite{gitlabrunner} を利用する。\par
 GitLab CI/CD は 継続的インテグレーション(CI)・継続的デリバリー(CD)を GitLab から利用することができる。
 CI では GitLab のコードを定期的または自動的にビルド・テストを行う。CD は CI を拡張した機能であり, ビルドやテストだけでなくリリースの準備も行う。
-本コースでは, Operating System という講義で Mercurial と Jenkins を利用してコードのテストを行う課題などがある。\par
+%本コースでは, Operating System という講義で Mercurial と Jenkins を利用してコードのテストを行う課題などがある。
+\par
 GitLab Runner とは, ビルドのためのアプリケーションであり, GitLab CI と連携することで別の場所でビルドを動かすことができる。
 
 \section{本コースの類似サービス}
@@ -244,7 +248,9 @@
 コンテナ作成は Docker コンテナと Kubernetes コンテナの 2つから選択することができる。
 コンテナ作成を選択するとコンテナを作成するために必要な情報を入力する。入力する内容は表\ref{tb:wmcon} である。
 コンテナ名にはユーザのアカウント名が補完されるため, 他のユーザと被ることはない。
-Docker イメージには Docker Hub に登録されているイメージや, ユーザが作成したイメージを入力することができる。環境変数とゲストポートはスペース区切りで複数入力することができる。
+Docker イメージには Docker Hub に登録されているイメージや, ユーザが作成したイメージを入力することができる。
+環境変数とゲストポートはスペース区切りで複数入力することができる。
+また, コンテナ内で GPU を使用するにはチェックボックスにチェックを入れる。
 ホストポートは, エフェメラルポートの範囲から設定される。ユーザは設定されたホストポートを使用してコンテナのサービスへアクセスする。
 また, ユーザは Docker コンテナに対しては Web コンソールから, Kubernetes コンテナには手元の PC から操作することができる。
 必要なくなったコンテナは Web コンソールのコンテナ一覧から削除することができる。
@@ -257,6 +263,7 @@
     Image & Docker イメージ \\ \hline
     Environments & コンテナ作成時の環境変数 \\ \hline
     GuestPort & コンテナが使用するポート番号 \\ \hline
+    GPU & GPU を使用するか \\ \hline
     \end{tabular}
   \label{tb:wmcon}
   \end{center}
@@ -340,14 +347,14 @@
 \end{itemize}
 
 コンテナは, 表\ref{tb:wmcon} で入力した情報を下に作成を行う。コンテナ名は Web コンソールからリクエストを送るタイミングで補完される。
-また, コンテナが属するネットワーク名も補完される。リクエストは JSON 形式で受け, JSON 形式でレスポンスを返す。
+また, コンテナが属するネットワーク名も補完される。リクエストは JSON 形式でやり取りを行う。
 リクエストからコンテナを作成後, 作成したコンテナID やネットワークID, コンテナのステータスを返却する。
 返却したコンテナID やネットワークID を下にコンテナ削除やコマンドの実行, ファイルの送信を処理する。
-だが, ファイルの送信では JSON 形式ではなく multipart/form-data 形式でリクエストを受ける。\par
+ファイルの送信では JSON 形式ではなく multipart/form-data 形式でリクエストを受ける。
+ユーザが作成するコンテナとは別に, GitLab CI/CD で Docker イメージをビルドするための GitLab Runner を立てる必要がある。
+立ち上げはユーザが Web コンソールで CD トークンの設定時に行われる。GitLab Runner をユーザごとに立ち上げることで, 複数のユーザが同時にビルドを行うことができる。\par
 Docker イメージは GitLab CI/CD を利用して作成するが, ビルドが成功したかを判断することはできない。
 そのため, Web コンソール側から 5 分に一度イメージの更新リクエストを受け, Docker イメージの一覧をリストにまとめ返却を行う。\par
-ユーザが作成するコンテナとは別に GitLab CI/CD で Docker イメージをビルドするための GitLab Runner を立てる必要がある。
-立ち上げはユーザが Web コンソールで CD トークンの設定時に行われる。GitLab Runner をユーザごとに立ち上げることで, 複数のユーザが同時にビルドを行うことができる。
 
 \subsection{Kubernetes の操作}
 Docker と同様に Kubernetes のすべての操作を必要としないため, Kubernetes と対話するためのライブラリである client-go \cite{kubecli} を使用し, 必要な機能のみを実装する。
@@ -361,7 +368,7 @@
 
 Kubernetes でのコンテナ作成は Pod を作成することである。 Kubernetes でのコンテナ作成は Namespace, Deployment, Service, 
 Ingress の流れでオブジェクトを作成する。コンテナの作成は Docker と同様に表\ref{tb:wmcon} の情報を下に作成する。
-作成するそれぞれのオブジェクト名は Web コンソールで コンテナ名とアカウントID で補完される。また, Namespace はアカウントID となる。
+作成するそれぞれのオブジェクト名は Web コンソールでコンテナ名とアカウントID で補完される。また, Namespace はアカウントID となる。
 コンテナの削除にはそれぞれのオブジェクト名と Namespace を用いる。\par
 Kubernetes で作成したコンテナは Web コンソールから操作より, digdog でも利用されている RBAC を用いる方が操作がしやすい。
 RBAC で使用する 認証トークンはユーザごとに作成された Namespace に設定されるトークンを返すことで, 他のユーザが認証することはできない。
@@ -386,7 +393,7 @@
 
 \section{他のサービスとの比較}
 今回作成した Web サービスは主に学生の学習環境をコンテナ技術を利用して提供する。
-そこで, これまで本コースで使用されてきたサービスと, 近年普及しているクラウドサービスと比較する。
+そこで, これまで本コースで使用されてきたサービス, また近年普及しているクラウドサービスと比較する。
 
 \subsection{ie-virsh}
 ie-virsh は手元の PC で作成した VM を学科のブレードサーバにデプロイできるサービスである。