annotate mid_thesis.tex @ 7:bc9290d12651 default tip

del par
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Tue, 15 Sep 2020 12:59:54 +0900
parents 5f52fac4bacf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1 \documentclass[9.5pt]{jarticle}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2 \usepackage[dvips,dvipdfmx]{graphicx}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 \usepackage{multicol}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 \usepackage{picins}
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 \usepackage{fancyhdr}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
6 \usepackage{here}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部工学科知能情報コース 中間発表予稿}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
8 \usepackage[top=2cm, bottom=2cm, left=1cm, right=1cm]{geometry}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 \begin{document}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
11
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
12 \title{情報工学科演習用のコンテナ技術を用いたサービスの設計・実装 \\
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
13 Design and Implementation of service using container technology for Information science exercise}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
14 \author{175733E 氏名 {宮平 賢} 指導教員 : {河野 真治} }
6
5f52fac4bacf update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
15 \date{令和2年9月14日}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
16
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \maketitle
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
18 %\begin{abstract}
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
19 %情報技術の普及に伴い情報系の学生が課題や演習を行う学習環境が必要である。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
20 %学習環境を複数の学生に提供する方法として,VM や コンテナがある。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
21 %琉球大学工学部では VM 貸出サービスがある。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
22 %課題や演習によっては CPU より GPU が必要となる場合がある。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
23 %しかし,本コースの VM 貸出サービスは GPU の共有に対応していない。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
24 %そこで,コンテナ仮想化技術を利用できる Docker と Kubernetes,Singularity を用いて,GPU を含む学習環境を提供する。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
25 %本稿では学習環境を提供するサービスの設計・実装を行う。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
26 %\end{abstract}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
27
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
28
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
29 \renewcommand{\abstractname}{Abstract}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
30 \begin{abstract}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
31 With the spread of information technology, there is a need for a learning environment in which information students can do assignments and exercises.
3
98aae86b04e9 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
32 There are VMs and containers as a way to provide a learning environment for students.
98aae86b04e9 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
33 The University of the Ryukyus has a VM rental service. Some assignments and exercises require GPUs rather than CPUs.
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
34 However, the VM rental service in this course does not support GPU sharing.
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
35 Therefore, we provide a learning environment that includes GPUs by using Docker, Kubernetes, and Singularity, which can utilize container virtualization technologies.
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
36 In this paper, we design and implement a service that provides a learning environment.
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
37 \end{abstract}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
38
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
39 \thispagestyle{fancy}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
40
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
41 \begin{multicols*}{2}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
42 \section{コンテナ技術を用いた学習環境の提供}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
43 情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる。その学習環境として VM や コンテナにより,手軽に開発し試せる技術が普及している。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
44 だが,手元の PC 上で VM や コンテナを立ち上げ,開発を行うことはできるが,VM や コンテナの使用には高性能 PC や 有料のクラウドサービスが必要になる場合がある。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45 この大きな負担を学生に負わせない仕組みが必要である。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
46
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47 本コースでは希望する学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
48 貸出 VM スペックは CPU 1コア,メモリ 1GB,ストレージ 10GB である。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
49 このスペックで不足する場合,要望に応じてスペックの変更を行なっている。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
50 だが,貸出 VM でも課題によっては処理に時間がかかることがある。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
51 例として,人工知能の講義において課される課題においては CPU より GPU が必要となる場合がある。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
52 しかし,現在の VM 貸出サービスでは GPU の共有に対応していない。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
53 VM 上で GPU を共有するには PCI パススルーを利用することで可能だが,PCI パススルーでは複数の VM に共有することができない。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
54 そこで,GPU を含めた学習環境をコンテナ技術を用いて提供するサービスの設計・実装を行う。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
55
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
56 \vspace{-2zh}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
57
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
58 \section{技術概要}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
59 本研究で使用したコンテナ仮想化技術,また本コースで利用しているサービスについての概要を説明する。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
60
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
61 \subsection{Docker}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
62 Docker\cite{docker} とは OS レベルの仮想化技術を利用して,ソフトウェアをコンテナと呼ばれるパッケージで提供する。またコンテナの実行だけでなく,
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
63 コンテナの実行に用いるイメージの作成,イメージを共有する仕組みを持つコンテナ管理ソフトウェアである。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
64 コンテナの実行には Docker 社が提供している Docker Hub\cite{dockerhub} に登録されているイメージ,Dockerfile を用いて作成したイメージを利用することができる。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
65 Dockerfile を用いることで,必要なソフトウェアや各種設定を含んだイメージを作成できる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
66
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67 \subsection{Kubernetes}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
68 Kubernetes\cite{k8s} とは,アプリケーションのデプロイ,スケーリング,及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
69 Kubernetes ではオブジェクトによりクラスターの状態を表現する。オブジェクトはコンテナだけでなく,ネットワークやストレージ,接続ポリシーの望ましい状態を記述できる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
70
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
71 \subsection{Singularity}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
72 Singularity\cite{singu} とは,HPC クラスタ上で複雑なアプリケーションを実行するために開発されたコンテナプラットフォームである。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
73 Singularity は マルチユーザに対応しており,コンテナ内での権限は実行ユーザの権限を引き継ぐため,ユーザに特別な権限の設定が必要ない。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
74 またデフォルトで,\$HOME,/tmp,/proc,/sys,/dev がコンテナにマウントされ,サーバ上の GPU を簡単に利用できる。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
75 Singularity のコンテナイメージは Docker Hub に登録されているイメージ,またはDockerfile から作成したイメージを変換することで利用することができる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
77 \subsection{GitLab}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
78 GitLab\cite{gitlab} とは バージョン管理システムである Git のリポジトリマネージャである。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
79 GitLab は GitHub と違い,オンプレミス環境に構築することができるため,本コースでは GitLab を使用している。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
80 本研究では GitLab の統合機能の GitLab CI/CD\cite{gitlabcicd},また GitLab CI/CD と組み合わせて使用する GitLab Runner\cite{gitlabrunner} を利用する。
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
81
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
82 GitLab CI/CD は 継続的インテグレーション(CI)・継続的デリバリー(CD)を GitLab から利用することができる。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
83 CI では GitLab のコードを定期的または自動的にビルド・テストを行う。CD は CI を拡張した機能であり,ビルドやテストだけでなくリリースの準備も行う。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
84
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
85 GitLab Runner とは,ビルドのためのアプリケーションであり,GitLab CI と連携することで別の場所でビルドを動かすことができる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 \subsection{digdog}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
88 digdog\cite{digdog} とは Kubernetes を利用し Web コンソールからコンテナを作成することができるコンテナ貸出サービスである。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
89 学生は学科アカウントを使用して Web サービスへログインし,登録されている Docker イメージでコンテナを作成することができる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
91 \section{サービスの設計}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
92 サービスは本コースの学生や教員が利用する。そのため,ユーザが他のユーザのコンテナの削除などの操作を行えないように制限をするなどの,マルチユーザ環境へ対応する必要がある。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
93 また,管理者にコンテナで利用するイメージを用意してもらうのではなく,利用したい学習環境をユーザが構築できる仕組みが必要である。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
94 GPU を含む学習環境を提供するために,複数のコンテナへ GPU を共有できる仕組み,またコンテナへのファイルの共有ができる仕組みが必要となる。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
95
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
96 \subsection{マルチユーザへの対応}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
97 Docker は基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
98 そのため docker グループに追加されたユーザは,他ユーザのコンテナを操作できるなどセキュリティ上の問題がある。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
99
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
100 そこで,Web コンソールを用いて管理を行う。 Web コンソールには学科のアカウントを用いてログインし,コンテナの作成や操作を可能とする。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
101 コンテナ作成は Docker コンテナと Kubernetes コンテナの 2つから選択することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
102 コンテナ作成を選択するとコンテナを作成するために必要な情報を入力する。入力する内容は表\ref{tb:wmcon} である。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
103 作成時にコンテナ名をユーザのアカウント名で補完されるため,他のユーザと被ることはない。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
104
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
105 \begin{table}[H]
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
106 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
107 \caption{コンテナ作成時の入力内容}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
108 \begin{tabular}{|c|l|} \hline
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
109 ContainerName & コンテナ名 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
110 Image & Docker イメージ \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
111 Environments & コンテナ作成時の環境変数 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
112 GuestPort & コンテナが使用するポート番号 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
113 GPU & GPU を使用するか \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
114 \end{tabular}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
115 \label{tb:wmcon}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
116 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
117 \end{table}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
118
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
119 \subsection{イメージの作成}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
120 Docker イメージの作成は学科で使用している GitLab の CI/CD の CI 機能を利用する。ユーザがイメージを作成する流れを図\ref{fig:gitlab} に示す。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
121 ユーザは学科 GitLab から CI トークンを取得し,Web コンソールに取得したトークンをセットする。この時 Docker 側に GitLab Runner の立ち上げを依頼する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
122 トークンの設定後,Web コンソールから CI 用の YAML ファイルをダウンロードし Dockerfile と一緒に学科 GitLab のリポジトリにプッシュする。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
123 GitLab にプッシュした Dockerfile が GitLab Runner 上でビルドされる。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
124 ビルドの成否は GitLab から確認することができ,作成されたイメージは Web コンソールから確認することができる。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
125 GitLab の CI/CD 機能を利用することで,学生に権限を与えることなくイメージの作成を行うことが可能となる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
126
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
127 \begin{figure}[H]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
128 \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
129 \includegraphics[width=95mm]{Images/gitlab.pdf}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
130 \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
131 \caption{イメージの作成}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
132 \label{fig:gitlab}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
133 \end{figure}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
134
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
135 \subsection{GPU の利用}
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
136 GPU を使った学習を行うには NVIDIA Container Toolkit である nvidia-docker\cite{nvidia-docker} を利用する。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
137 nvidia-docker を導入することで,GPU を利用するための環境が整っている nvidia/cuda イメージを利用することが可能となる。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
138 GPU を使った学習環境を利用するには nvidia/cuda でイメージを作成する。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
139 作成したイメージをコンテナ作成時の表\ref{tb:wmcon} の Docker イメージに入力する。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
140 また GPU を利用するかのチェックを入れることで,コンテナへ GPU を共有することが可能となる。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
141
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
142 \subsection{ファイルの共有}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
143 コンテナに大量のデータを送信する必要がある場合や,データを永続化させたい場合に Singularity を利用する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
144 Singularity はユーザ権限で動作することから,学生が ssh でブレードサーバへ接続し利用する方が適している。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
145 Singularity は Docker イメージを変換し使用できる。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
146 だが,イメージの変換には sudo 権限が必要となる。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
147 そこで,Web コンソールから Singularity 用のイメージをダウンロードできる仕様とする。
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
148
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
149 ユーザは利用したいイメージをダウンロードし,ブレードサーバへ送信して Singularity を使用する。Singularity を利用する流れを図\ref{fig:singu} に示す。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
150
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
151 \begin{figure}[H]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
152 \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
153 \includegraphics[width=80mm]{Images/singularity.pdf}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
154 \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
155 \caption{Singularityの利用}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
156 \label{fig:singu}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
157 \end{figure}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
158
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
159 \section{サービスの実装}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
160
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
161 サービスのシステム構成を図\ref{fig:wm} に示す。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
162 Web コンソールで Docker や Kubernetes の操作をまとめるのではなく,機能ごとに以下の 3 つにサービスを分ける。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
163 Web コンソールから HTTP API で各機能へリクエストを送信し操作を行う。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
164
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
165 実装にはDocker や Kubernetes の実装言語であり,操作するためのライブラリが揃っている Go 言語を使用する。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
166 \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
167 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
168 \setlength{\itemsep}{0cm} % 項目間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
169 \item Web コンソール
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
170 \item Docker の操作
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
171 \item Kubernetes の操作
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
172 \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
173
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
174 \begin{figure*}[tb]
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
175 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
176 \includegraphics[width=100mm]{Images/whalemountain.pdf}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
177 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
178 \caption{システム構成}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
179 \label{fig:wm}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
180 \end{figure*}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
181
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
182 \subsection{Web コンソール}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
183 Web コンソールは本コースの学生や教員が利用するため,学科アカウントでログインできる必要がある。学科の LDAP サーバを利用して学科アカウントで LDAP 認証を実装する。
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
184
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
185 Docker の操作や Kubernetes の操作を行う機能では,ユーザの管理を行わないため Web コンソールで管理する必要がある。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
186 そのため,ユーザのコンテナやイメージの情報をデータベースに格納して管理する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
187 ユーザがコンテナやイメージの操作を行う時は,紐づけられたアカウントID の確認を行うことで,他のユーザのコンテナやイメージの操作を制限する。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
188
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
189 \subsection{Docker の操作}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
190 Docker は Docker Engine API を提供している。Docker デーモンは指定した IP アドレスと ポート を リッスンする。 IP アドレスと ポートの指定を行うことで外部から Docker の操作が可能になる。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
191 だが,Dockr デーモンが稼働しているホスト上の root アクセスを得られるため,推奨されてない。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
192 また,本研究で実装するサービスでは Docker のすべての操作を必要としない。そこで,Docker の操作を行うための SDK \cite{sdk} を使用し,必要な機能のみを実装する。
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
193
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
194 サービスを提供する上で Docker の必要となる操作は以下である。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
195 \begin{itemize}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
196 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
197 \setlength{\itemsep}{0cm} % 項目間
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
198 \item コンテナの作成
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
199 \item コンテナの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
200 \item コンテナでのコマンド実行
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
201 \item コンテナへファイル送信
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
202 \item イメージ一覧の取得
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
203 \item イメージの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
204 \end{itemize}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
206 Web コンソールから JSON 形式でリクエストを受信する。このリクエストを元に上記の操作を行う。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
207 だが,ファイルの送信では JSON 形式ではなく,multipart/form-data 形式でリクエストを受ける。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
208
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
209 \subsection{Kubernetes の操作}
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
210 Docker と同様に Kubernetes のすべての操作を必要としないため,Kubernetes と対話するためのライブラリである client-go \cite{kubecli} を使用し,必要な機能のみを実装する。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
211 サービスを提供する上で Kubernetes の必要となる操作は以下である。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
212
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
213 \begin{itemize}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
214 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
215 \setlength{\itemsep}{0cm} % 項目間
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
216 \item コンテナの作成
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
217 \item コンテナの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
218 \item 認証トークンの取得
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
219 \end{itemize}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
220
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
221 Docker と同様に Web コンソールから JSON 形式でリクエストを受信し,リクエストを元に上記の操作を行う。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
222 Kubernetes ではコンテナへのコマンドの実行やファイルの送信は実装せず,認証のトークンを取得する機能を実装する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
223 Kubernetes では,Kubernetes API の利用権限 Namespace ごとに定義する Role,ユーザやグループに Role を関連付ける RoleBinding がある。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
224 この Role と RoleBinding を用いた Role-based access control (RBAC) を利用することで手元の PC からコンテナに対して操作を行うことが可能となる。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
225 そのため,RBAC への認証トークンを取得する。RBAC で許可するリソースの操作は表\ref{tb:wm} である。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
226
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
227 \begin{table}[H]
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
228 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
229 \caption{kubectl のコマンド}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
230 \begin{tabular}{|c|l|} \hline
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
231 get & Pod, Deployment, Service, Ingress の一覧を表示する \\ \hline
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
232 log & Pod の Log を表示する \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
233 exec & Pod にアクセスする \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
234 cp & Pod にファイルを送信する \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
235 \end{tabular}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
236 \label{tb:wm}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
237 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
238 \end{table}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
240 \section{今後の課題}
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
241 本研究で実装したサービスでは学生が学習環境として利用するには,まだ必要な実装が不足している。
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
242
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
243 本サービスでは,大量のデータを用いる時に Singularity を使用できる環境を用意している。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
244 だが,Web コンソールから作成した Docker や Kubernetes のコンテナではデータの永続化に対応していないため,コンテナの削除で削除されてしまう。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
245 そこで,学科のサーバでは学生ごとのディレクトリにマウントするなどの対策を行う必要がある。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
246
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
247 本サービスでは,学生が自由に Docker イメージを作成できる。また,Docker イメージを Singularity 用のイメージに変換する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
248 そのため,イメージの容量でブレードサーバのストレージを圧迫してしまう可能性があることから,あまり利用されていないイメージは定期的に削除する必要がある。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
249
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
250 次にネットワークの設定である。
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
251 作成したコンテナへのアクセスには,コンテナが動作しているサーバの IP アドレス,設定されたポート番号を使用する。
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
252 そのため,外部からアクセスなどに対応することができない。そこで,コンテナごとに IP アドレスを設定するなどの対策が必要である。
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
253
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
254 また,本サービスではユーザごとにリソースの制限を行っていないため,過剰なリソースの占有を防ぐための対策をする必要がある。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
255 GPU などの負荷がかかるプログラムの実行で使用されるリソースにはジョブ管理ソフトウェアなどで対策をとる。\
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
256
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
257 \begin{thebibliography}{99}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
258
5
c35b0890b779 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
259 \bibitem{docker} Docker, https://www.docker.com/. 2020/9/11.
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
260 \bibitem{dockerhub} Docker Hub, https://hub.docker.com/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
261 \bibitem{k8s} Kubernetes, https://kubernetes.io/, 2020/9/11.
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
262 \bibitem{singu} Singularity. https://sylabs.io/singularity/, 2020/9/11.
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
263 \bibitem{gitlab} GitLab, https://about.gitlab.com/, 2020/9/11.
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
264 \bibitem{gitlabcicd} GitLab CI/CD, https://docs.gitlab.com/ce/ci/, 2020/9/11.
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
265 \bibitem{gitlabrunner} GitLab Runner Docs, https://docs.gitlab.com/runner/, 2020/9/11.
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
266 \bibitem{digdog} 秋田 海人 and 高瀬 大空 and 上地 悠斗 and 長田 智和 and 谷口 祐治, 情報系学科における教育研究情報システムの運用管理並びに新規システムの構築に関する取り組み, インターネットと運用技術シンポジウム(2019).
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
267 \bibitem{nvidia-docker} NVIDIA Container Toolkit, https://github.com/NVIDIA/nvidia-docker, 2020/9/11.
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
268 \bibitem{sdk} Docker Engine API, https://docs.docker.com/engine/api/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
269 \bibitem{kubecli} Go clients for talking to a kubernetes cluster, https://github.com/kubernetes/client-go, 2020/9/11.
7
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
270
bc9290d12651 del par
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
271 %\bibitem{kvm} KVM, https://www.linux-kvm.org/, 2020/9/11.
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
272 %\bibitem{ie-virsh} 平良 太貴 and 河野 真治, OS 授業向けマルチユーザ VM 環境の構築, 研究報告システムソフトウェアとオペレーティング・システム(OS)(2014).
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 \end{thebibliography}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
275 \end{multicols*}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
276
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 \end{document}