annotate mid_thesis.tex @ 4:22f062ff21a2

update tex
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Mon, 14 Sep 2020 22:54:03 +0900
parents 98aae86b04e9
children c35b0890b779
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}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
14 \author{175733E 氏名 {宮平 賢}{Miyahira Ken} 指導教員 : {河野 真治} }
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
15 %\date{}
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 %情報技術の普及に伴い情報系の学生が課題や演習を行う学習環境が必要である。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
20 %学習環境を複数の学生に提供する方法として, VM や コンテナがある。
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 が必要となる場合がある。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
23 %しかし, 本コースの VM 貸出サービスは GPU の共有に対応していない。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
24 %そこで, コンテナ仮想化技術を利用できる Docker と Kubernetes, Singularity を用いて, GPU を含む学習環境を提供する。
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 %
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
27 %この学習環境では, 課題や演習によっては並列処理により, CPU より GPU が必要となる場合がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
28 %このような学習環境を複数の学生に提供する方法として, VM や コンテナがある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
29 %しかし, 琉球大学工学部で運用している VM 貸出サービスでは, GPU の共有に対応していない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
30 %また, PC 上からコンテナへの操作を可能にするために Kubernetes でのコンテナ作成にも対応する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
31 %コンテナ貸出サービスは LDAP で管理された学生のアカウントを使用することで, 適切にコンテナの管理を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
32 %本稿ではサービスを実装する上で必要な技術概要を延べ, サービスの設計・実装を行う。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
33 %\end{abstract}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
34
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
35
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
36 \renewcommand{\abstractname}{Abstract}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
37 \begin{abstract}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
38 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
39 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
40 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
41 However, the VM rental service in this course does not support GPU sharing.
3
98aae86b04e9 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 2
diff changeset
42 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
43 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
44 \end{abstract}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
45
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
46 \thispagestyle{fancy}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
47
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
48 \begin{multicols*}{2}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
49 \section{コンテナ技術を用いた学習環境の提供}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
50 情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる。その学習環境として VM や コンテナにより, 手軽に開発し試せる技術が普及している。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
51 だが, 手元の PC 上で VM や コンテナを立ち上げ, 開発を行うことはできるが, VM や コンテナの使用には高性能 PC や 有料のクラウドサービスが必要になる場合がある。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
52 この大きな負担を学生に負わせない仕組みが必要である。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
53 \par
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
54 本コースでは希望する学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
55 貸出 VM スペックは CPU 1コア, メモリ 1GB, ストレージ 10GB である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
56 このスペックで不足する場合, 要望に応じてスペックの変更を行なっている。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
57 だが, 貸出 VM でも課題によっては処理に時間がかかることがある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
58 例として, 人工知能の講義において課される課題においては CPU より GPU が必要となる場合がある。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
59 しかし, 現在の VM 貸出サービスでは GPU の共有に対応していない。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
60 VM 上で GPU を共有するには PCI パススルーを利用することで可能だが, PCI パススルーでは複数の VM に共有することができない。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
61 そこで, GPU を含めた学習環境をコンテナ技術を用いて提供するサービスの設計・実装を行う。
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
62
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
63 \vspace{-2zh}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
64
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
65 \section{技術概要}
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
66 本研究で使用したコンテナ仮想化技術, また本コースで利用しているサービスについての概要を説明する。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
67
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
68 \subsection{Docker}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
69 Docker とは OS レベルの仮想化技術を利用して, ソフトウェアをコンテナと呼ばれるパッケージで提供する。またコンテナの実行だけでなく,
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 コンテナの実行には Docker 社が提供している Docker Hub\cite{dockerhub} に登録されているイメージ, Dockerfile を用いて作成したイメージを利用することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
72 Dockerfile を用いることで, 必要なソフトウェアや各種設定を含んだイメージを作成できる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
73
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
74 \subsection{Kubernetes}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
75 Kubernetes\cite{k8s} とは, アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
76 Kubernetes ではオブジェクトによりクラスターの状態を表現する。オブジェクトはコンテナだけでなく, ネットワークやストレージ, 接続ポリシーの望ましい状態を記述できる。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
77 %本研究では以下のオブジェクトを主に利用する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
78 %\begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
79 % \item Pod
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
80 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
81 % \item Kubernetes で作成, 管理できる最小単位。Pod 内に 1 つ以上のコンテナを起動できる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
82 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
83 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
84 % \item ReplicaSet
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
85 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
86 % \item 安定した Pod の維持を行い, クラスタで必要な Pod 数を管理する。Pod のセルフヒーリングを行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
87 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
88 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
89 % \item Deployment
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
90 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
91 % \item ReplicaSet のロールアウトを図るなど, 管理を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
92 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
93 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
94 % \item Service
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
95 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
96 % \item Pod にアクセスするための IP アドレスやポートを割り振る。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
97 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
98 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
99 % \item Ingress
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
100 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
101 % \item 外部からのアクセスを管理する。負荷分散, SSL 終端, 名前ベースの仮想ホスティングの機能を提供する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
102 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
103 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
104 % \item Namespace
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
105 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
106 % \item 仮想クラスタとしてグループ化して取り扱える。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
107 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
108 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
109 % \item Role
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
110 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
111 % \item Kubernetes API の利用権限 Namespace ごとに定義する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
112 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
113 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
114 % \item RoleBinding
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
115 % \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
116 % \item ユーザやグループに Role を関連付ける。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
117 % \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
118 %\end{itemize}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
119
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
120 \subsection{Singularity}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
121 Singularity とは, HPC クラスタ上で複雑なアプリケーションを実行するために開発されたコンテナプラットフォームである。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
122 Singularity は マルチユーザに対応しており, コンテナ内での権限は実行ユーザの権限を引き継ぐため, ユーザに特別な権限の設定が必要ない。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
123 またデフォルトで, \$HOME, /tmp, /proc, /sys, /dev がコンテナにマウントされ, サーバ上の GPU を簡単に利用できる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
124 Singularity のコンテナイメージは Docker Hub に登録されているイメージ, またはDockerfile から作成したイメージを変換することで利用することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
125
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
126 \subsection{GitLab}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
127 GitLab\cite{gitlab} とは バージョン管理システムである Git のリポジトリマネージャである。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
128 GitLab は GitHub と違い, オンプレミス環境に構築することができるため, 本コースでは GitLab を使用している。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
129 本研究では GitLab の統合機能の GitLab CI/CD\cite{gitlabcicd}, また GitLab CI/CD と組み合わせて使用する GitLab Runner\cite{gitlabrunner} を利用する。\par
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
130 GitLab CI/CD は 継続的インテグレーション(CI)・継続的デリバリー(CD)を GitLab から利用することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
131 CI では GitLab のコードを定期的または自動的にビルド・テストを行う。CD は CI を拡張した機能であり, ビルドやテストだけでなくリリースの準備も行う。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
132 %本コースでは, Operating System という講義で Mercurial と Jenkins を利用してコードのテストを行う課題などがある。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
133 \par
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
134 GitLab Runner とは, ビルドのためのアプリケーションであり, GitLab CI と連携することで別の場所でビルドを動かすことができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
135
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
136 %\subsection{Kernel-based Virtual Machine (KVM)}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
137 %KVM\cite{kvm} とは, Linux 自体を VM の実行基盤として機能させるソフトウェアである。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
138 %CPU の仮想化支援機能を必要とし, 完全仮想化により OS の仮想化環境を提供する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
139 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
140 %\subsection{ie-virsh}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
141 %ie-virsh\cite{ie-virsh} とは, 本コースの Operating System という講義に向けに libvirt の CLI である virsh をラップし複数のユーザで利用することができる VM 管理ツールである。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
142 %学生が手元の PC で作成した VM をブレードサーバ上にデプロイすることができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
143 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
144 %\subsection{ie-docker}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
145 %ie-docker とは Docker をラップし複数のユーザで利用することのできるコンテナ管理ツールである。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
146 %利用する学生は ssh でブレードサーバへ接続し, ie-docker を使用してコンテナを操作することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
147 %
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
148 \subsection{digdog}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
149 digdog\cite{digdog} とは Kubernetes を利用し Web コンソールからコンテナを作成することができるコンテナ貸出サービスである。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
150 学生は学科アカウントを使用して Web サービスへログインし, 登録されている Docker イメージでコンテナを作成することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
151
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
152 \section{サービスの設計}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
153 %サービスでは本コースの学生や教員がにコンテナ貸出を行う。このコンテナ貸出の構成を図\ref{fig:wm} に示し, 概要を以下で説明する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
154
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
155 サービスは本コースの学生や教員が利用する。そのため, ユーザが他のユーザのコンテナの削除などの操作を行えないように制限をするなどの, マルチユーザ環境へ対応する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
156 また, 管理者にコンテナで利用するイメージを用意してもらうのではなく, 利用したい学習環境をユーザが構築できる仕組みが必要である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
157 GPU を含む学習環境を提供するために, 複数のコンテナへ GPU を共有できる仕組み, またコンテナへのファイルの共有ができる仕組みが必要となる。
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
159 %コンテナによる学習環境にあたっては以下の用件が必要となる。
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 %\begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
162 % \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
163 % \setlength{\itemsep}{0cm} % 項目間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
164 % \item マルチユーザへの対応
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
165 % \item イメージを自由に作成できる
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
166 % \item GPU が利用できる
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
167 % \item コンテナへファイルの共有ができる
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
168 %\end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
169
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
170 \subsection{マルチユーザへの対応}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
171 Docker は基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
172 そのため docker グループに追加されたユーザは, 他ユーザのコンテナを操作できるなどセキュリティ上の問題がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
173 \par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
174 そこで, Web コンソールを用いて管理を行う。 Web コンソールには学科のアカウントを用いてログインし, コンテナの作成や操作を可能とする。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
175 コンテナ作成は Docker コンテナと Kubernetes コンテナの 2つから選択することができる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
176 コンテナ作成を選択するとコンテナを作成するために必要な情報を入力する。入力する内容は表\ref{tb:wmcon} である。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
177 作成時にコンテナ名をユーザのアカウント名で補完されるため, 他のユーザと被ることはない。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
178
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
179 \begin{table}[H]
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
180 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
181 \caption{コンテナ作成時の入力内容}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
182 \begin{tabular}{c|l} \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
183 ContainerName & コンテナ名 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
184 Image & Docker イメージ \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
185 Environments & コンテナ作成時の環境変数 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
186 GuestPort & コンテナが使用するポート番号 \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
187 GPU & GPU を使用するか \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
188 \end{tabular}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
189 \label{tb:wmcon}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
190 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
191 \end{table}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
192
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
193 %\subsection{コンテナの作成}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
194 %学生または教員は学科アカウントで Web コンソールへログインする。Web コンソールでは ユーザのコンテナ一覧や Docker イメージ一覧を確認することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
195 %コンテナ作成は Docker コンテナと Kubernetes コンテナの 2つから選択することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
196 %コンテナ作成を選択するとコンテナを作成するために必要な情報を入力する。入力する内容は表\ref{tb:wmcon} である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
197 %コンテナ名にはユーザのアカウント名が補完されるため, 他のユーザと被ることはない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
198 %Docker イメージには Docker Hub に登録されているイメージや, ユーザが作成したイメージを入力することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
199 %環境変数とゲストポートはスペース区切りで複数入力することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
200 %また, コンテナ内で GPU を使用するにはチェックボックスにチェックを入れる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
201 %ホストポートは, エフェメラルポートの範囲から設定される。ユーザは設定されたホストポートを使用してコンテナのサービスへアクセスする。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
202 %また, ユーザは Docker コンテナに対しては Web コンソールから, Kubernetes コンテナには手元の PC から操作することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
203 %必要なくなったコンテナは Web コンソールのコンテナ一覧から削除することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
204 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
205 %\begin{table}[H]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
206 % \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
207 % \caption{コンテナ作成時の入力内容}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
208 % \begin{tabular}{c|l} \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
209 % ContainerName & コンテナ名 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
210 % Image & Docker イメージ \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
211 % Environments & コンテナ作成時の環境変数 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
212 % GuestPort & コンテナが使用するポート番号 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
213 % GPU & GPU を使用するか \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
214 % \end{tabular}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
215 % \label{tb:wmcon}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
216 % \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
217 %\end{table}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
218
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
219 \subsection{イメージの作成}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
220 Docker イメージの作成は学科で使用している GitLab の CI/CD の CI 機能を利用する。ユーザがイメージを作成する流れを図\ref{fig:gitlab} に示す。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
221 ユーザは学科 GitLab から CI トークンを取得し, Web コンソールに取得したトークンをセットする。この時 Docker 側に GitLab Runner の立ち上げを依頼する。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
222 トークンの設定後, Web コンソールから CI 用の YAML ファイルをダウンロードし Dockerfile と一緒に学科 GitLab のリポジトリにプッシュする。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
223 GitLab にプッシュした Dockerfile が GitLab Runner 上でビルドされる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
224 ビルドの成否は GitLab から確認することができ, 作成されたイメージは Web コンソールから確認することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
225 GitLab の CI/CD 機能を利用することで, 学生に権限を与えることなくイメージの作成を行うことが可能となる。
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 %Docker イメージのビルドが成功すると Web コンソールのイメージ一覧で確認ができる。作成した Docker イメージは編集からイメージの使い方の記述や他の学生に共有するか設定を行える。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
228 %必要なくなったイメージは Web コンソールのイメージ一覧から削除することができる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
229
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
230 \begin{figure}[H]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
231 \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
232 \includegraphics[width=95mm]{Images/gitlab.pdf}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
233 \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
234 \caption{イメージの作成}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
235 \label{fig:gitlab}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
236 \end{figure}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
237
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
238 \subsection{GPU の利用}
4
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
239 GPU を使った学習を行うには NVIDIA Container Toolkit である nvidia-docker\cite{nvidia-docker} を利用する。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
240 nvidia-docker を導入することで, GPU を利用するための環境が整っている nvidia/cuda イメージを利用することが可能となる。
22f062ff21a2 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 3
diff changeset
241 GPU を使った学習環境を利用するには nvidia/cuda でイメージを作成する。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
242 作成したイメージをコンテナ作成時の表\ref{tb:wmcon} の Docker イメージに入力する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
243 また GPU を利用するかのチェックを入れることで, コンテナへ GPU を共有することが可能となる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
244
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
245 \subsection{ファイルの共有}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
246 コンテナに大量のデータを送信する必要がある場合や, データを永続化させたい場合に Singularity を利用する。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
247 Singularity はユーザ権限で動作することから, 学生が ssh でブレードサーバへ接続し利用する方が適している。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
248 Singularity は Docker イメージを変換し使用できる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
249 だが, イメージの変換には sudo 権限が必要となる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
250 %Docker イメージの変換を申請性にすると, 管理者の仕事が増え, またユーザも利用しづらい。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
251 そこで, Web コンソールから Singularity 用のイメージをダウンロードできる仕様とする。\par
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
252 ユーザは利用したいイメージをダウンロードし, ブレードサーバへ送信して Singularity を使用する。Singularity を利用する流れを図\ref{fig:singu} に示す。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
253
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
254 \begin{figure}[H]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
255 \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
256 \includegraphics[width=80mm]{Images/singularity.pdf}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
257 \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
258 \caption{Singularityの利用}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
259 \label{fig:singu}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
260 \end{figure}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
261
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
262 \section{サービスの実装}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
263 %本コースでは学科システムを教員の指導の下, 学生主体でシステム管理チームと呼ばれる組織によって構築・運用・管理が行われている。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
264 %学科システムはブレードサーバを 4 台, SAN 用ストレージと汎用ストレージをそれぞれ 2台ずつ導入している。本コースの基幹サービスはこのブレードサーバの仮想環境上で VM として動作している。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
265 %新たにサービスを実装するとなると, システム管理チームが運用・管理を行いやすい実装にする必要がある。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
266 %Web コンソールや Docker の操作を 1 つにまとめると, Docker コンテナの作成が 1台のブレードサーバのみになってしまう。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
267 %そこで, コンテナ貸出システムは, 機能ごとに以下の 3 つにサービスに分ける。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
268 %Docker や Kubernetes の操作を HTTP API で提供することにより, リクエスト先を変更することで複数のブレードサーバにコンテナを分散することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
269 %だが, 現時点では未実装である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
270
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
271 サービスのシステム構成を図\ref{fig:wm} に示す。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
272 Web コンソールで Docker や Kubernetes の操作をまとめるのではなく, 機能ごとに以下の 3 つにサービスを分ける。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
273 Web コンソールから HTTP API で各機能へリクエストを送信し操作を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
274 \par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
275 実装にはDocker や Kubernetes の実装言語であり, 操作するためのライブラリが揃っている Go 言語を使用する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
276 \begin{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
277 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
278 \setlength{\itemsep}{0cm} % 項目間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
279 \item Web コンソール
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
280 \item Docker の操作
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
281 \item Kubernetes の操作
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
282 \end{itemize}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
283
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
284 \begin{figure*}[tb]
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
285 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
286 \includegraphics[width=100mm]{Images/whalemountain.pdf}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
287 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
288 \caption{システム構成}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
289 \label{fig:wm}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
290 \end{figure*}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
291
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
292 \subsection{Web コンソール}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
293 Web コンソールは本コースの学生や教員が利用するため, 学科アカウントでログインできる必要がある。学科の LDAP サーバを利用して学科アカウントで LDAP 認証を実装する。\par
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
294 %Docker の操作や Kubernetes の操作を行う HTTP API はセッション管理を行わないため, Web コンソールで管理する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
295 Docker の操作や Kubernetes の操作を行う機能では, ユーザの管理を行わないため Web コンソールで管理する必要がある。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
296 そのため, ユーザのコンテナやイメージの情報をデータベースに格納して管理する。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
297 ユーザがコンテナやイメージの操作を行う時は, 紐づけられたアカウントID の確認を行うことで, 他のユーザのコンテナやイメージの操作を制限する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
298 %ユーザが作成する Docker イメージの情報を取得しユーザのアカウントID と紐付けを行う。また, 作成した Docker イメージは共有することができ, 共有されたイメージはユーザのイメージ一覧とは別の一覧で確認することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
299 %ユーザはコンテナ作成時にイメージを入力することができる。この時, 他のユーザが作成したイメージの場合, そのイメージが共有されたイメージなのか確認を行うことで, 非共有に設定されたイメージではコンテナの作成はできない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
300 %コンテナの操作を行う時, コンテナに紐づけられたアカウントID との確認が行われることで, 他のユーザのコンテナを操作することはできない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
301 %同様にイメージの削除を行う時にもアカウントID の確認が行われる。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
302
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
303 \subsection{Docker の操作}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
304 Docker は Docker Engine API を提供している。Docker デーモンは指定した IP アドレスと ポート を リッスンする。 IP アドレスと ポートの指定を行うことで外部から Docker の操作が可能になる。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
305 だが, Dockr デーモンが稼働しているホスト上の root アクセスを得られるため, 推奨されてない。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
306 また, 本研究で実装するサービスでは Docker のすべての操作を必要としない。そこで, Docker の操作を行うための SDK \cite{sdk} を使用し, 必要な機能のみを実装する。\par
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
307 サービスを提供する上で Docker の必要となる操作は以下である。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
308 \begin{itemize}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
309 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
310 \setlength{\itemsep}{0cm} % 項目間
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
311 \item コンテナの作成
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
312 \item コンテナの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
313 \item コンテナでのコマンド実行
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
314 \item コンテナへファイル送信
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
315 \item イメージ一覧の取得
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
316 \item イメージの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
317 \end{itemize}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
318
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
319 Web コンソールから JSON 形式でリクエストを受信する。このリクエストを元に上記の操作を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
320 だが, ファイルの送信では JSON 形式ではなく, multipart/form-data 形式でリクエストを受ける。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
321
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
322 %コンテナは, 表\ref{tb:wmcon} で入力した情報を下に作成を行う。コンテナ名は Web コンソールからリクエストを送るタイミングで補完される。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
323 %また, コンテナが属するネットワーク名も補完される。リクエストは JSON 形式でやり取りを行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
324 %リクエストからコンテナを作成後, 作成したコンテナID やネットワークID, コンテナのステータスを返却する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
325 %返却したコンテナID やネットワークID を下にコンテナ削除やコマンドの実行, ファイルの送信を処理する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
326 %ファイルの送信では JSON 形式ではなく multipart/form-data 形式でリクエストを受ける。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
327 %ユーザが作成するコンテナとは別に, GitLab CI/CD で Docker イメージをビルドするための GitLab Runner を立てる必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
328 %立ち上げはユーザが Web コンソールで CD トークンの設定時に行われる。GitLab Runner をユーザごとに立ち上げることで, 複数のユーザが同時にビルドを行うことができる。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
329 %Docker イメージは GitLab CI/CD を利用して作成するが, ビルドが成功したかを判断することはできない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
330 %そのため, Web コンソール側から 5 分に一度イメージの更新リクエストを受け, Docker イメージの一覧をリストにまとめ返却を行う。\par
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
331
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
332 \subsection{Kubernetes の操作}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
333 Docker と同様に Kubernetes のすべての操作を必要としないため, Kubernetes と対話するためのライブラリである client-go \cite{kubecli} を使用し, 必要な機能のみを実装する。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
334 サービスを提供する上で Kubernetes の必要となる操作は以下である。
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
335
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
336 \begin{itemize}
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
337 \setlength{\parskip}{0cm} % 段落間
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
338 \setlength{\itemsep}{0cm} % 項目間
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
339 \item コンテナの作成
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
340 \item コンテナの削除
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
341 \item 認証トークンの取得
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
342 \end{itemize}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
343
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
344 Docker と同様に Web コンソールから JSON 形式でリクエストを受信し, リクエストを元に上記の操作を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
345 Kubernetes ではコンテナへのコマンドの実行やファイルの送信は実装せず, 認証のトークンを取得する機能を実装する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
346 Kubernetes では, Kubernetes API の利用権限 Namespace ごとに定義する Role, ユーザやグループに Role を関連付ける RoleBinding がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
347 この Role と RoleBinding を用いた Role-based access control (RBAC) を利用することで手元の PC からコンテナに対して操作を行うことが可能となる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
348 そのため, RBAC への認証トークンを取得する。RBAC で許可するリソースの操作は表\ref{tb:wm} である。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
349
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
350 %Kubernetes でのコンテナ作成は Pod を作成することである。 Kubernetes でのコンテナ作成は Namespace, Deployment, Service,
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
351 %Ingress の流れでオブジェクトを作成する。コンテナの作成は Docker と同様に表\ref{tb:wmcon} の情報を下に作成する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
352 %作成するそれぞれのオブジェクト名は Web コンソールでコンテナ名とアカウントID で補完される。また, Namespace はアカウントID となる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
353 %コンテナの削除にはそれぞれのオブジェクト名と Namespace を用いる。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
354 %Kubernetes で作成したコンテナは Web コンソールからコマンドの実行やファイルの送信などの操作を行わず, Role と RoleBinding を用いた Role-based access control (RBAC)
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
355 %を利用することで手元の PC より操作を行うこととする。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
356 %RBAC で使用する認証トークンはユーザごとに作成された Namespace に設定されるトークンを返すことで, 他のユーザが認証することはできない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
357 %またアクセス制御は Namespace ごとに設定されることで, 他のユーザのコンテナを操作することはできない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
358 %RBAC で許可するリソースの操作は表\ref{tb:wm} である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
359
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
360 \begin{table}[H]
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
361 \begin{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
362 \caption{kubectl のコマンド}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
363 \begin{tabular}{c|l} \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
364 get & Pod, Deployment, Service, Ingress の一覧を表示する \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
365 log & Pod の Log を表示する \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
366 exec & Pod にアクセスする \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
367 cp & Pod にファイルを送信する \\ \hline
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
368 \end{tabular}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
369 \label{tb:wm}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
370 \end{center}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
371 \end{table}
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
372
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
373 %\section{サービスの評価}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
374
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
375 %\section{他のサービスとの比較}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
376 %今回作成した Web サービスは主に学生の学習環境をコンテナ技術を利用して提供する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
377 %そこで, これまで本コースで使用されてきたサービス, また近年普及しているクラウドサービスと比較する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
378 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
379 %\subsection{ie-virsh}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
380 %ie-virsh は手元の PC で作成した VM を学科のブレードサーバにデプロイできるサービスである。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
381 %ie-virsh は ユーザの UID 及び GID 情報を取得することで, 他のユーザの VM を操作させない。表\ref{tb:ie-virsh}は ユーザが利用できる ie-virsh の機能である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
382 %ie-virsh では VM の実行環境を提供するため, ユーザが好みの VM を構築できるなど自由度が高い。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
383 %本研究で実装したサービスでは, コンテナ作成に使用する Docker イメージで構築されたアプリケーションに限定される。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
384 %また, ユーザが欲しい環境は Docker イメージを作成しなければいけないため, Docker について学習する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
385 %だが, コンテナは VM と違い開発環境やテスト環境の構築の容易さや, 他のユーザにイメージを共有することで同じ環境を利用することができるなどの良さがある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
386 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
387 %\begin{table}[htb]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
388 % \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
389 % \caption{ie-virsh のコマンド}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
390 % \begin{tabular}{c|l} \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
391 % define & XML の template を下に domain を作成 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
392 % undefine & define で作成した domain を削除 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
393 % list & define で作成した domain の一覧表示 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
394 % start & 指定した domain 名の VM を起動 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
395 % destroy & 指定した domain 名の VM を停止 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
396 % dumpxml & domain の XML を参照 \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
397 % \end{tabular}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
398 % \label{tb:ie-virsh}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
399 % \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
400 %\end{table}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
401 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
402 %\subsection{ie-docker}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
403 %ie-docker は Docker をラップしたツールであり, ユーザは学科のブレードサーバへ ssh で接続を行い CUI から利用することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
404 %ie-docker は ユーザの UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
405 %表\ref{tb:ie-docker} は ie-docker で利用できる機能である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
406 %この機能を使用しコンテナ作成などの操作を行うことができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
407 %だが, ie-docker ではユーザがコンテナで使用するイメージを管理者が用意する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
408 %そのため, コンテナで使用したいイメージが用意されていないなどの問題があった。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
409 %本研究で実装したサービスでは, コンテナで使用するイメージは Docker Hub に登録されているイメージ, または作成したイメージを利用することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
410 %ユーザが Docker イメージを作成できることで管理者の負担が少なくなると考える。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
411 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
412 %\begin{table}[htb]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
413 % \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
414 % \caption{ie-docker のコマンド}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
415 % \begin{tabular}{c|l} \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
416 % ps & 起動中のコンテナの一覧を表示する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
417 % run & コンテナを作成する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
418 % start & コンテナを起動する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
419 % stop & コンテナを停止する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
420 % attach & 起動しているコンテナに attach する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
421 % cp & コンテナにファイルを送信する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
422 % rm & コンテナを削除する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
423 % \end{tabular}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
424 % \label{tb:ie-docker}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
425 % \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
426 %\end{table}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
427 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
428 %\subsection{digdog}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
429 %digdog は Kubernetes を利用したコンテナ貸出サービスである。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
430 %学生は Dockerfile を GitLab CI/CD を利用してビルドし, 学科の GitLab Container Registry に Docker イメージを登録する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
431 %Web コンソールからコンテナ作成で使用するイメージは, 登録したイメージから選択することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
432 %Kubernetes 上にコンテナを作成するため, 学生の入力を下に Deployment, Service, Ingress の作成を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
433 %また, Namespace はユーザのアカウントID で作成され, Namespace ごとに RBAC の設定がされている。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
434 %そのため, 学生は手元の PC から Web コンソールから作成したコンテナを操作することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
435 %表\ref{tb:digdog} は RBAC で許可されているリソースの操作である。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
436 %本研究のサービスは digdog を参考に実装されている。そのため, Kubernetes でのコンテナ作成は digdog と同じ流れで作成を行う。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
437 %だが, digdog では Docker Hub に登録されているイメージを選択することができない。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
438 %また, Kubernetes でのコンテナ貸出のため, Kubernetes クラスター上の Master が停止するとサービスを提供できないなどの課題があった。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
439 %本研究のサービスでは, Kubernetes でのコンテナの作成だけでなく, Docker でのコンテナの作成にも対応することで, Docker のみでサービスの提供ができるように改良を行った。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
440 %また, コンテナ作成時のイメージを選択ではなく入力にすることで, Docker Hub に登録されているイメージを利用できるように改良を行った。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
441 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
442 %\begin{table}[htb]
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
443 % \begin{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
444 % \caption{kubectl のコマンド}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
445 % \begin{tabular}{c|l} \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
446 % get & Pod の一覧を表示する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
447 % log & Pod の Log を表示する \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
448 % exec & Pod にアクセスする \\ \hline
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
449 % \end{tabular}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
450 % \label{tb:digdog}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
451 % \end{center}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
452 %\end{table}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
453 %
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
454 %\subsection{クラウドサービス}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
455 %近年様々なクラウドサービスが普及し手元の PC から高性能なクラウド環境を利用することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
456 %だが, クラウドサービスは無料から有料まであり。無料では時間制限や容量制限など様々な制限がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
457 %また有料だと設定のミスにより高額な請求がくるなど, 気軽に利用しづらい。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
458 %そのため, 本サービスはオンプレミス環境で実装を行った。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
459 %オンプレミス環境にすることで利用の制限がなく, サービスで使用するデータを自身で管理できるなどの良さがある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
460 %だが, クラウドサービスと違い物理サーバなどのメンテナンスや, サービスの導入にあたって環境構築などの課題がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
461 %しかし, オンプレミスで運用していくことで, 学生の学習に繋がると考える。
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
462
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
463 \section{今後の課題}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
464 本研究で実装したサービスでは学生が学習環境として利用するには, まだ必要な実装が不足している。\par
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
465 本サービスでは, 大量のデータを用いる時に Singularity を使用できる環境を用意している。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
466 だが, Web コンソールから作成した Docker や Kubernetes のコンテナではデータの永続化に対応していないため, コンテナの削除で削除されてしまう。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
467 そこで, 学科のサーバでは学生ごとのディレクトリにマウントするなどの対策を行う必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
468 \par
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
469 本サービスでは, 学生が自由に Docker イメージを作成できる。また, Docker イメージを Singularity 用のイメージに変換する。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
470 そのため, イメージの容量でブレードサーバのストレージを圧迫してしまう可能性があることから, あまり利用されていないイメージは定期的に削除する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
471 \par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
472 次にネットワークの設定である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
473 作成したコンテナへのアクセスには, コンテナが動作しているサーバの IP アドレス, 設定されたポート番号を使用する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
474 そのため, 外部からアクセスなどに対応することができない。そこで, コンテナごとに IP アドレスを設定するなどの対策が必要である。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
475 \par
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
476 また, 本サービスではユーザごとにリソースの制限を行っていないため, 過剰なリソースの占有を防ぐための対策をする必要がある。
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
477 GPU などの負荷がかかるプログラムの実行で使用されるリソースにはジョブ管理ソフトウェアなどで対策をとる。\
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
478
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
479 %学科のブレードサーバでは学生ごとのディレクトリがある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
480 %Docker ではそのディレクトリをコンテナ立ち上げ時にマウントすることで, コンテナ内のデータの永続化に対応できる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
481 %また, Kubernetes では Peresistent Volumes という永続ボリュームの仕組みがある。この Peresistent Volumes をユーザごとに管理することで, コンテナ内のデータの永続化に対応できる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
482 %このような対策でコンテナ内のデータの永続化に対応できるが, コンテナごとにデータの保存場所が違うなどの問題があるため, データを管理する仕組みが必要だと考える。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
483 %本サービスでは, 学生が自由に Docker イメージを作成できる。また, Docker イメージを Singularity 用のイメージに変換する。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
484 %そのため, イメージの容量でブレードサーバのストレージを圧迫してしまう可能性があることから, 定期的にイメージを削除する必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
485 %また, 本サービスではユーザごとにリソースの制限を行っていないため, 過剰なリソースの占有を防ぐための対策をする必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
486 %GPU などの負荷がかかるプログラムの実行で使用されるリソースにはジョブ管理ソフトウェアなどで対策をとる。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
487 %本サービスは Docker Hub に登録されている Dokcer イメージを利用できるが, Docker Hub は誰でもイメージを登録することができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
488 %そのため, Docker Hub に登録されているイメージにマルウェアが仕込まれている可能性がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
489 %イメージの取得時にスキャンを行うなど, セキュリティ対策を考える必要がある。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
490
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
491 %\section{まとめ}
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
492 %本稿では, 本コースで利用する新規サービスの設計と実装, また本コースで利用しているサービスとの比較を行った。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
493 %学生がコンテナ技術を用いて学習環境を利用できるサービスの設計をし, マルチユーザ環境に対応した実装をすることができた。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
494 %学生は学科アカウントを持っていれば, Web コンソールからコンテナの作成ができる。
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
495 %また, GitLab CI/CD を利用し Dockerfile から Docker イメージをビルドすることで, イメージの作成を学ぶこともできる。\par
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
496 %今後, テスト環境にデプロイを行い, ユーザやシステム管理チームからのフィードバックをもらい, 改善や実証実験を目指す。
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
497
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
498 \begin{thebibliography}{99}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
499
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
500 \bibitem{singu} Singularity, https://sylabs.io/singularity/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
501 \bibitem{docker} Docker, https://www.docker.com/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
502 \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
503 \bibitem{k8s} Kubernetes, https://kubernetes.io/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
504 \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
505 \bibitem{kubecli} Go clients for talking to a kubernetes cluster, https://github.com/kubernetes/client-go, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
506 \bibitem{gitlab} GitLab, https://about.gitlab.com/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
507 \bibitem{gitlabrunner} GitLab Runner Docs, https://docs.gitlab.com/runner/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
508 \bibitem{kvm} KVM, https://www.linux-kvm.org/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
509 \bibitem{gitlabcicd} GitLab CI/CD, https://docs.gitlab.com/ce/ci/, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
510 \bibitem{nvidia-docker} NVIDIA Container Toolkit, https://github.com/NVIDIA/nvidia-docker, 2020/9/11.
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
511 \bibitem{digdog} 秋田 海人 and 高瀬 大空 and 上地 悠斗 and 長田 智和 and 谷口 祐治, 情報系学科における教育研究情報システムの運用管理並びに新規システムの構築に関する取り組み, インターネットと運用技術シンポジウム(2019).
2
2b2ba1d01f77 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
512 %\bibitem{ie-virsh} 平良 太貴 and 河野 真治, OS 授業向けマルチユーザ VM 環境の構築, 研究報告システムソフトウェアとオペレーティング・システム(OS)(2014).
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
513
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
514 \end{thebibliography}
1
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
515 \end{multicols*}
87eda0d283c5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
516
0
1f02fe29f47f init commit
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
517 \end{document}