# HG changeset patch # User Ken Miyahira # Date 1596882276 -32400 # Node ID b31ddc8071f1f22faa76a6892e7f7716ee8bbd0f # Parent c8c18f20120c744f556a0bc338f1f9410594ef57 update tex diff -r c8c18f20120c -r b31ddc8071f1 paper/mk-wm.bib --- a/paper/mk-wm.bib Sat Aug 08 17:18:13 2020 +0900 +++ b/paper/mk-wm.bib Sat Aug 08 19:24:36 2020 +0900 @@ -3,6 +3,21 @@ title ="{https://sylabs.io/singularity/}", } +@manual{docker, +author = "{Docker}", +title ="{https://www.docker.com/}", +} + +@manual{dockerhub, +author = "{Docker Hub}", +title ="{https://hub.docker.com/}", +} + +@manual{k8s, +author = "{kubernetes}", +title ="{https://kubernetes.io/}", +} + @manual{sdk, author = "{Docker Engine API}", title ="{https://docs.docker.com/engine/api/}", @@ -13,6 +28,11 @@ title ="{https://github.com/kubernetes/client-go}", } +@manual{gitlab, +author = "{GitLab}", +title ="{https://about.gitlab.com/}", +} + @manual{gitlabrunner, author = "{GitLab Runner Docs}", title ="{https://docs.gitlab.com/runner/}", diff -r c8c18f20120c -r b31ddc8071f1 paper/mk-wm.pdf Binary file paper/mk-wm.pdf has changed diff -r c8c18f20120c -r b31ddc8071f1 paper/mk-wm.tex --- a/paper/mk-wm.tex Sat Aug 08 17:18:13 2020 +0900 +++ b/paper/mk-wm.tex Sat Aug 08 19:24:36 2020 +0900 @@ -76,22 +76,25 @@ \section{はじめに} 情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる。その学習環境として VM や コンテナにより, 手軽に開発し試せる技術が普及している。 だが, 手元の PC 上で VM や コンテナを立ち上げ, 開発を行うことはできるが, VM や コンテナの使用には高性能 PC や 有料のクラウドサービスが必要になる場合がある。 -この大きな負担を学生に負わせない仕組みが必要である。\par -琉球大学工学部工学科知能情報コースでは希望の学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。 +この大きな負担を学生に負わせない仕組みが必要である。 +\par +琉球大学工学部工学科知能情報コースは2017 年度よりコース制へと移行し, 人工知能やシステム開発などの先端技術を身につける講義や実験が設けられた。 +講義の演習や実験は学生の PC で環境を構築し実行する。 +本コースでは希望の学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。 貸出をする VM のデフォルトのスペックは CPU 1コア, メモリ 1GB, ストレージ 10GB である。 デフォルトのスペックでは不足の場合, 要望に応じてスペックの変更を行なっている。 -本コースは 2017 年度よりコース制へと移行し, 人工知能やシステム開発などの先端技術を身につける講義や実験が設けられた。 -これまで講義の演習や実験は学生の PC や 貸出 VM で実行していたが, 課題によってはスペックが足りなく処理に時間がかかることがあった。 +だが, 貸出 VM でも課題によってはスペックが足りなく, 処理に時間がかかることがあった。 例として, 人工知能の課題のプログラムの処理には CPU より GPU を用いることで処理時間を早くすることができる。 -だが, 現在の VM 貸出サービスでは GPU を提供することができない。 +しかし, 現在の VM 貸出サービスでは GPU を提供することができない。 GPU が搭載されている PC は研究室によっては用意されているが, 研究室に所属していない学生は利用することができない。 -そのため, 本コースの学生が学習するための高性能な環境を利用できる新たな仕組みが必要である。\par +そのため, 本コースの学生が学習するための高性能な環境を利用できる新たな仕組みが必要である。 +\par 学科のブレードサーバに搭載される GPU は VM の貸出サービスでは利用することができない。そこでコンテナ技術を利用する。 -コンテナ管理ソフトウェアである Docker では NVIDIA Container Toolkit である nvidia-docker\cite{nvidia-docker} を利用することで, 複数のコンテナで GPU を共有することができる。 +コンテナ管理ソフトウェアである Docker\cite{docker} では NVIDIA Container Toolkit である nvidia-docker\cite{nvidia-docker} を利用することで, 複数のコンテナで GPU を共有することができる。 Docker は基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。 そのため Docker をマルチユーザ環境で使用すると, 他ユーザのコンテナを操作できるなどセキュリティの問題がある。\par -そこで, 本論文では, Docker と マルチユーザ環境で利用しやすいコンテナプラットフォームである Singularity\cite{singu} を利用したコンテナ貸出サービスを提案する。 -このコンテナ貸出サービスでは, Web コンソールからコンテナの操作を行うことで他ユーザのコンテナへの操作をさせない。 +そこで, 本論文では, Docker と マルチユーザ環境で利用しやすいコンテナプラットフォームである Singularity\cite{singu} を利用したコンテナ貸出サービスを設計・実装する。 +このコンテナ貸出サービスでは, Web コンソールからコンテナの管理をすることで他ユーザのコンテナへの操作をさせない。 また, 本コースの類似サービスの課題でもあった外部リポジトリの利用は, Docker の機能を HTTP API で提供することで解消する。 \section{技術概要} @@ -99,12 +102,12 @@ \subsection{Docker} Docker とは OS レベルの仮想化技術を利用して, ソフトウェアをコンテナと呼ばれるパッケージで提供する。またコンテナの実行だけでなく, -コンテナの実行に用いるイメージの作成やイメージを共有する仕組みを持つコンテナ管理ソフトウェアである。 -コンテナの実行には Docker 社が提供している Docker Hub に登録されているイメージ, Dockerfile を用いて作成したイメージを利用することができる。 +コンテナの実行に用いるイメージの作成, イメージを共有する仕組みを持つコンテナ管理ソフトウェアである。 +コンテナの実行には Docker 社が提供している Docker Hub\cite{dockerhub} に登録されているイメージ, Dockerfile を用いて作成したイメージを利用することができる。 Dockerfile を用いることで, 必要なソフトウェアや各種設定を含んだイメージを作成できる。 \subsection{Kubernetes} -Kubernetes とは, アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。 +Kubernetes\cite{k8s} とは, アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。 Kubernetes ではオブジェクトによりクラスターの状態を表現する。オブジェクトはコンテナだけでなく, ネットワークやストレージ, 接続ポリシーの望ましい状態を記述できる。 本研究では以下のオブジェクトを主に利用する。 \begin{itemize} @@ -133,9 +136,14 @@ \item 外部からのアクセスを管理する。負荷分散, SSL 終端, 名前ベースの仮想ホスティングの機能を提供する。 \end{itemize} + \item Namespace + \begin{itemize} + \item 仮想クラスタとしてグループ化して取り扱える。 + \end{itemize} + \item Role \begin{itemize} - \item 仮想クラスタとしてグループ化して取り扱える。 + \item Kubernetes API の利用権限を定義する。 \end{itemize} \item RoleBinding @@ -151,7 +159,7 @@ Singularity のコンテナイメージは Docker Hub に登録されているイメージ, またはDockerfile から作成したイメージを変換することで利用することができる。 \subsection{GitLab} -GitLab とは バージョン管理システムである Git のリポジトリマネージャである。GitLab はオンプレミス環境で利用できるため, 本コースでは GitLab を使用している。 +GitLab\cite{gitlab} とは バージョン管理システムである Git のリポジトリマネージャである。GitLab はオンプレミス環境で利用できるため, 本コースでは GitLab を使用している。 また, 本研究では GitLab の統合機能の GitLab CI/CD\cite{gitlabcicd}, GitLab CI/CD と組み合わせて使用する GitLab Runner\cite{gitlabrunner} を利用する。\par GitLab CI/CD は 継続的インテグレーション(CI)・継続的デリバリー(CD)を GitLab から利用することができる。 CI では GitLab のコードを定期的または自動的にビルド・テストを行う。CD は CI を拡張した機能であり, ビルドやテストだけでなくリリースの準備も行う。 @@ -159,8 +167,8 @@ GitLab Runner とは, ビルドのためのアプリケーションであり, GitLab CI と連携することで別の場所でビルドを動かすことができる。 \section{本コースの類似サービス} -本サービスに類似したサービスとして, libvirt の CLI である virsh をラップしマルチユーザ VM 環境を提供する ie-virsh \cite{ie-virsh} 。 -また, Docker をラップし複数のユーザで利用することを目的とした ie-docker , Kubernetes を利用した教育用コンテナ貸出を目的とした, digdog \cite{digdog} がある。 +本サービスに類似したサービスとして, libvirt の CLI である virsh をラップしマルチユーザ VM 環境を提供する ie-virsh\cite{ie-virsh} 。 +また, Docker をラップし複数のユーザで利用することを目的とした ie-docker, Kubernetes を利用した教育用コンテナ貸出を目的とした digdog\cite{digdog} がある。 \subsection{ie-virsh} ie-virsh とは, 本コースの Operating System という講義に向けに libvirt の CLI である virsh をラップし複数のユーザで利用することができる VM 管理ツールである。