annotate paper/mk-wm.tex @ 16:01a913c03f07

update tex
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Fri, 07 Aug 2020 21:50:13 +0900
parents 650cac660dd1
children c17db5f554c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 %% 研究報告用スイッチ
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 %% [techrep]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 %% 欧文表記無しのスイッチ(etitle,eabstractは任意)
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 %% [noauthor]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 %%
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 %\documentclass[submit,techrep]{ipsj}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 \documentclass[submit,techrep,noauthor]{ipsj}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 \usepackage[dvips,dvipdfmx]{graphicx}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 \usepackage{latexsym}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 \usepackage{listings}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 \lstset{
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 language=C,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 tabsize=2,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 frame=single,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 basicstyle={\tt\footnotesize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 identifierstyle={\footnotesize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 commentstyle={\footnotesize\itshape}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 keywordstyle={\footnotesize\ttfamily}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 ndkeywordstyle={\footnotesize\ttfamily}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 stringstyle={\footnotesize\ttfamily},
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 breaklines=true,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 captionpos=b,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 columns=[l]{fullflexible}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 xrightmargin=0zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 xleftmargin=1zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 aboveskip=1zw,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 numberstyle={\scriptsize}, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 stepnumber=1,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 numbersep=0.5zw, %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 lineskip=-0.5ex,
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 \usepackage{caption}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 \def\|{\verb|}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 %
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 %\setcounter{巻数}{59}%vol59=2018
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 %\setcounter{号数}{10}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 %\setcounter{page}{1}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 \renewcommand{\lstlistingname}{Code}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 \begin{document}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 \title{情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 %\etitle{How to Prepare Your Paper for IPSJ SIG Technical Report \\ (version 2018/10/29)}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 \affiliate{KIE}{琉球大学大学院理工学研究科情報工学専攻}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 \affiliate{IE}{琉球大学工学部工学科知能情報コース}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 \author{宮平 賢}{Miyahira Ken}{IE}[mk@cr.ie.u-ryukyu.ac.jp]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 \author{河野 真治}{Shinji Kono}{IE}[kono@ie.u-ryukyu.ac.jp]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 \begin{abstract}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 IT技術を学ぶ時の学習環境の 1つとして, OS 上の隔離された環境を構築する技術であるコンテナがある. これらはローカルに設置された計算機, あるいはクラウド上に作られる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 作成されるコンテナは学生, あるいは教員側から適切に管理するシステムが必要となる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 管理システムはマルチユーザで動作するのは当然として, 利用者や管理者に適したUI, sudo権限で動作するコンテナへの対処などが含まれる.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 学生の演習には, Webサービスの実装や人工知能の学習などがある. そのため, 気軽に開発環境やテスト環境などを用意できる利用のしやすさが重要である.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 本稿ではコンテナ管理ソフトウェアである Docker, Singularity を用いた新規 Web サービスの設計・実装を行う.
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 \end{abstract}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 \maketitle
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 \section{はじめに}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる。その学習環境として VM や コンテナにより, 手軽に開発し試せる技術が普及している。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 だが, 手元の PC 上で VM や コンテナを立ち上げ, 開発を行うことはできるが, VM や コンテナの使用には高性能 PC や 有料のクラウドサービスが必要になる場合がある。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 この大きな負担を学生に負わせない仕組みが必要である。\par
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
80 琉球大学工学部工学科知能情報コースでは希望の学生に学科のブレードサーバから仮想環境を貸出すサービスを行なっている。貸出をする VM のデフォルトのスペックでは
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
81 不足の場合, 要望に応じてスペックの変更を行なっている。だが, 貸出サービスでは GPU を利用した処理環境を提供することができない。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 %だが, 貸出サービスでは近年盛んに行われている人工知能の研究に必要な環境を提供することができない。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
83 GPU が搭載されている PC は研究室によっては用意されているが, 研究室に所属していない学生は利用することができない。そのため, 新たな仕組みが必要である。\par
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
84 学科のブレードサーバに搭載される GPU は VM の貸出サービスでは利用することができない。そこでコンテナ技術を利用する。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
85 コンテナ管理ソフトウェアである Docker では NVIDIA Container Toolkit である nvidia-docker を利用することで, 複数のコンテナで GPU を共有することができる。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
86 Docker は基本的に root 権限で動作する。また一般ユーザが docker コマンドを使用するには docker グループに追加する必要がある。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
87 そのため Docker をマルチユーザ環境で使用すると, 他ユーザのコンテナへアクセスができるなどセキュリティの問題がある。\par
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 そこで, 本論文では, Docker と マルチユーザ環境で利用しやすい Linux コンテナである Singularity を利用したコンテナ貸出サービスを提案する。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
89 このコンテナ貸出サービスでは, Web コンソールからコンテナの操作を行うことで他ユーザのコンテナへの操作をさせない。また, 本コースの類似サービスの課題でもあったデータの永続化を
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
90 Singularity で, 外部リポジトリの利用を Docker の操作を HTTP API で提供することで解消する。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
11
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
92 \section{技術概要}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
93 本研究で必要な技術概要を述べる。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
94
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
95 \subsection{Docker}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
96 Docker とは OS レベルの仮想化技術を利用して, ソフトウェアをコンテナと呼ばれるパッケージで提供する。またコンテナの実行だけでなく,
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
97 コンテナの実行に用いるイメージの作成やイメージを共有する仕組みを持つコンテナ管理ソフトウェアである。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
98 コンテナの実行には Docker 社が提供している Docker Hub に登録されているイメージ, Dockerfile を用いて作成したイメージを利用することができる。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
99 Dockerfile を用いることで, 必要なソフトウェアや各種設定を含んだイメージを作成できる。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
100
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
101 \subsection{Kubernetes}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
102 Kubernetes とは, アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
103 Kubernetes ではオブジェクトによりクラスターの状態を表現する。オブジェクトはコンテナだけでなく, ネットワークやストレージ, 接続ポリシーの望ましい状態を記述できる。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
104 本研究では以下のオブジェクトを主に利用する。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
105 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
106 \item Pod
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
107 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
108 \item Kubernetes で作成, 管理できる最小単位。Pod 内に 1 つ以上のコンテナを起動できる。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
109 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
110
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
111 \item ReplicaSet
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
112 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
113 \item 安定した Pod の維持を行い, クラスタで必要な Pod 数を管理する。Pod のセルフヒーリングを行う。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
114 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
115
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
116 \item Deployment
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
117 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
118 \item ReplicaSet のロールアウトを図るなど, 管理を行う。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
119 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
120
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
121 \item Service
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
122 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
123 \item Pod にアクセスするための IP アドレスやポートを割り振る。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
124 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
125
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
126 \item Ingress
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
127 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
128 \item 外部からのアクセスを管理する。負荷分散, SSL 終端, 名前ベースの仮想ホスティングの機能を提供する。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
129 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
130
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
131 \item Role
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
132 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
133 \item 仮想クラスタとしてグループ化して取り扱える。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
134 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
135
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
136 \item RoleBinding
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
137 \begin{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
138 \item ユーザやグループに Role を関連付ける。
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
139 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
140 \end{itemize}
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
141
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
142 \subsection{Singularity}
12
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
143 Singularity とは, HCP クラスタ上で複雑なアプリケーションを実行するために開発されたコンテナプラットフォームである。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
144 Singularity は マルチユーザに対応しており, コンテナ内での権限は実行ユーザの権限を引き継ぐため, ユーザに特別な権限の設定が必要ない。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
145 またデフォルトで, \$HOME, /tmp, /proc, /sys, /dev がコンテナにマウントされ, サーバ上の GPU を簡単に利用できる。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
146 Singularity のコンテナイメージは Docker Hub に登録されているイメージ, またはDockerfile から作成したイメージを変換することで利用することができる。
11
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
147
5ae4054bcc94 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 10
diff changeset
148 \subsection{GitLab}
12
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
149 GitLab とは バージョン管理システムである Git のリポジトリマネージャである。GitLab はオンプレミス環境で利用できるため, 本コースでは GitLab を使用している。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
150 また, 本研究では GitLab の統合機能の GitLab CI/CD, GitLab CI/CD と組み合わせて使用する GitLab Runner を利用する。\par
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
151 GitLab CI/CD は 継続的インテグレーション(CI)・継続的デリバリー(CD)を GitLab から利用することができる。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
152 CI では GitLab のコードを定期的または自動的にビルド・テストを行う。CD は CI を拡張した機能であり, ビルドやテストだけでなくリリースの準備も行う。
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
153 本コースでは, Operating System という講義で Mercurial と Jenkins を利用してコードのテストを行う課題などがある。\par
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
154 GitLab Runner とは, ビルドのためのアプリケーションであり, GitLab CI と連携することで別の場所でビルドを動かすことができる。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
156 \section{本コースの類似サービス}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
157 本サービスに類似したサービスとして, libvirt の CLI である virsh をラップしマルチユーザ VM 環境を提供する ie-virsh \cite{ie-virsh} 。
12
d932810274a5 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 11
diff changeset
158 また, Docker をラップし複数のユーザで利用することを目的とした ie-docker , Kubernetes を利用した教育用コンテナ貸出を目的とした, digdog \cite{digdog} がある。
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
159
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
160 \subsection{ie-virsh}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
161 ie-virsh とは, 本コースの Operating System という講義に向けに libvirt の CLI である virsh をラップし複数のユーザで利用することができる VM 管理ツールである。
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
162 ie-virsh は 本コースの講義に向け作成されたが, 学生の演習でも利用ができる。
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
163 課題では VM の環境を学生が設定し, 情報工学科の持つブレードサーバ上にアップロードし, プログラムの実装や測定を行う。\cite{ie-virsh}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
164 学生は手元の PC で作成した VM をブレードサーバ上にデプロイすることで, 演習環境を構築することができる。
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
165 ie-virsh は ユーザの UID 及び GID 情報を取得することで, 他のユーザの VM を操作させない。表\ref{tb:ie-virsh}は ユーザが利用できる ie-virsh の機能である。
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
166
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
167 \begin{table}[htb]
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
168 \begin{center}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
169 \caption{ie-virsh のコマンド}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
170 \begin{tabular}{c|l} \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
171 define & XML の template を下に domain を作成 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
172 undefine & define で作成した domain を削除 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
173 list & define で作成した domain の一覧表示 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
174 start & 指定した domain 名の VM を起動 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
175 destroy & 指定した domain 名の VM を停止 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
176 dumpxml & domain の XML を参照 \\ \hline
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
177 \end{tabular}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
178 \label{tb:ie-virsh}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
179 \end{center}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
180 \end{table}
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
181
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 \subsection{ie-docker}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 ie-docker とは Docker をラップし複数のユーザで利用することのできるコンテナ管理ツールである。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 利用する学生は ssh でブレードサーバへ接続し, ie-docker を使用してコンテナを操作することができる。
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
185 ie-docker は UID 及び GID 情報を取得することで, 他のユーザのコンテナを操作させない。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
186 またユーザが使える docker の機能を制限する。表\ref{tb:ie-docker}が ie-docker で利用できる機能である。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 \begin{table}[htb]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 \begin{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 \caption{ie-docker のコマンド}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 \begin{tabular}{c|l} \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 ps & 起動中のコンテナの一覧を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 run & コンテナを作成する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 start & コンテナを起動する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 stop & コンテナを停止する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 attach & 起動しているコンテナに attach する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 cp & コンテナにファイルを送信する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 rm & コンテナを削除する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 \end{tabular}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 \label{tb:ie-docker}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 \end{table}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 \subsection{digdog}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 digdog とは Kubernetes を利用したコンテナ貸出サービスである。
16
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
206 学生は Dockerfile を GitLab CI/CD を利用してビルドし GitLab Registry に Docker イメージを登録する。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
207 学科アカウントを使用して Web サービスへログインし, 登録した Docker イメージでコンテナを作成することができる。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
208 コンテナ作成時は digdog が Kubernetes に Deployment を設定する。Deployment は学生のアカウント名で作成された Namespace に設定される。
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
209 Namespace は Role と RoleBinding を用いた, Role-based access control (RBAC) が設定されている。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
210 そのため学生は Kubernetes コマンドである kubectl コマンドで 手元の PC から Pod の操作を行うことができる。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 RBAC で許可されているリソース操作は表\ref{tb:digdog}である。
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 \begin{table}[htb]
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 \begin{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 \caption{kubectl のコマンド}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 \begin{tabular}{c|l} \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 get & Pod の一覧を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 log & Pod の Log を表示する \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 exec & Pod にアクセスする \\ \hline
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 \end{tabular}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 \label{tb:digdog}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 \end{table}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
225
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
226 \section{サービスの設計}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
227 サービスでは本コースの学生や教員がにコンテナ貸出を行う。このコンテナ貸出の構成を図\ref{fig:wm} に示し, 概要を以下で説明する。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
228
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
229 \subsection{コンテナの作成}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
230 学生または教員は学科アカウントで Web コンソールへログインする。Web コンソールでは ユーザのコンテナ一覧や Docker イメージ一覧を確認することができる。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
231 コンテナ作成を選択するとコンテナを作成するために必要な情報を入力する。入力する内容は表\ref{tb:wmcon} である。コンテナ名にはユーザのアカウント名が補完されるため, 他のユーザと被ることはない。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
232 Docker イメージには Docker Hub に登録されているイメージや, ユーザが作成したイメージを入力することができる。環境変数とゲストポートはスペース区切りで複数入力することができる。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
233 ホストポートは, エフェメラルポートの範囲から設定される。ユーザは設定されたホストポートを使用してコンテナのサービスへアクセスする。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
234 また, ユーザはコンテナに対して Web コンソールから, または手元の PC から操作することができる。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
235 必要なくなったコンテナは Web コンソールのコンテナ一覧から削除することができる。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
236
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
237 \begin{table}[htb]
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
238 \begin{center}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
239 \caption{コンテナ作成時の入力内容}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
240 \begin{tabular}{c|l} \hline
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
241 ContainerName & コンテナ名 \\ \hline
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
242 Image & Docker イメージ \\ \hline
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
243 Environments & コンテナ作成時の環境変数 \\ \hline
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
244 GuestPort & コンテナが使用するポート番号 \\ \hline
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
245 \end{tabular}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
246 \label{tb:wmcon}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
247 \end{center}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
248 \end{table}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
249
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
250 \subsection{イメージの作成}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
251 Docker イメージの作成は学科で使用している GitLab の CI/CD の CI 機能を利用する。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
252 ユーザは学科 GitLab から CI トークンを取得し, Web コンソールで取得したトークンをセットする。この時 Docker 側に GitLab Runner の立ち上げを依頼する。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
253 トークンの設定後, Web コンソールから CI 用の YAML ファイルをダウンロードし Dockerfile と一緒に学科 GitLab のリポジトリにプッシュする。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
254 Docker イメージのビルドが成功すると Web コンソールのイメージ一覧で確認ができる。作成した Docker イメージは編集からイメージの使い方の記述や他の学生に共有するか設定を行える。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
255 必要なくなったイメージは Web コンソールのイメージ一覧から削除することができる。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
256
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
257 \subsection{Singularity の利用}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
258 コンテナに大量のデータを送信する必要がある場合や, データを永続化させたい場合に Singularity を利用する。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
259 Singularity は Docker イメージを変換し使用できるが, イメージの変換には sudo 権限が必要となる。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
260 Docker イメージの変換を申請性にすると, 管理者の仕事が増え, またユーザも利用しづらい。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
261 Singularity はユーザ権限で動作することから, 学生が ssh でブレードサーバへ接続し利用する方が適している。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
262 そこで, Web コンソールから Singularity 用のイメージをダウンロードできる仕様とする。\par
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
263 ユーザは利用したいイメージをダウンロードし, ブレードサーバへ送信して Singularity を使用する。Singularity を利用する流れを図\ref{fig:singu} に示す。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
265 \begin{figure*}[tb]
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 \begin{center}
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
267 \includegraphics[width=100mm]{Images/whalemountain.pdf}
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 \end{center}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 \caption{システム構成}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 \label{fig:wm}
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
271 \end{figure*}
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
273 \begin{figure}[tb]
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
274 \begin{center}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
275 \includegraphics[width=80mm]{Images/singularity.pdf}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
276 \end{center}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
277 \caption{Singularityの利用}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
278 \label{fig:singu}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
279 \end{figure}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
280
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
281 \section{サービスの実装}
7
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
282 本コースでは学科システムを教員の指導の下, 学生主体でシステム管理チームと呼ばれる組織によって構築・運用・管理が行われている。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
283 学科システムはブレードサーバを 4 台, SAN 用ストレージと汎用ストレージをそれぞれ 2台ずつ導入している。本コースの基幹サービスはこのブレードサーバの仮想環境上で VM として動作している。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
284 新たにサービスを実装するとなると, システム管理チームが運用・管理を行いやすい実装にする必要がある。\par
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
285 Web コンソールや Docker の操作を 1 つにまとめると, Docker コンテナの作成が 1台のブレードサーバのみになってしまう。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
286 そこで, コンテナ貸出システムは, 機能ごとに以下の 3 つにサービスに分ける。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
287 Docker や Kubernetes の操作を HTTP API で提供することで, 図\ref{fig:api} のようにリクエスト先の変更で複数のブレードサーバにコンテナを分散することができる。
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
288 だが, 現時点では未実装である。\par
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
289 実装にはDocker や Kubernetes の実装言語であり, 操作するためのライブラリが揃っている Go 言語を使用する。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
290 \begin{itemize}
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
291 \item Web コンソール
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
292 \item Docker の操作
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
293 \item Kubernetes の操作
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
294 \end{itemize}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
295
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
296 \begin{figure}[tb]
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
297 \begin{center}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
298 \includegraphics[width=80mm]{Images/apihukusu.pdf}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
299 \end{center}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
300 \caption{機能の分散}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
301 \label{fig:api}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
302 \end{figure}
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
303
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
304 \subsection{Web コンソール}
9
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
305 Web コンソールは本コースの学生や教員が利用するため, 学科アカウントでログインできる必要がある。学科の LDAP サーバを利用して学科アカウントで LDAP 認証を実装する。\par
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
306 Docker の操作や Kubernetes の操作を行う HTTP API はセッション管理を行わないため, Web コンソールで管理する必要がある。
7
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
307 そのため, ユーザのコンテナやイメージの情報をデータベースに格納して管理する。
9
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
308 ユーザが作成する Docker イメージの情報を取得しユーザのアカウントID と紐付けを行う。また, 作成した Docker イメージは共有することができ, 共有されたイメージはユーザのイメージ一覧とは別の一覧で確認することができる。
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
309 ユーザはコンテナ作成時にイメージを入力することができる。この時, 他のユーザの作成したイメージの場合, そのイメージが共有されたイメージなのか確認を行うことで, 非共有に設定されたイメージではコンテナの作成はできない。
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
310 コンテナの操作を行う時, コンテナに紐づけられたアカウントID との確認が行われることで, 他のユーザのコンテナを操作することはできない。
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
311 同様にイメージの削除を行う時にもアカウントID の確認が行われる。
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
312
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
313 \subsection{Docker の操作}
7
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
314 Docker は Docker Engine API を提供している。Docker デーモンは指定した IP アドレスと ポート を リッスンする。 IP アドレスと ポートの指定を行うことで外部から Docker の操作が可能になる。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
315 だが, Dockr デーモンが稼働しているホスト上の root アクセスを得られるため, 推奨されてない。
790bc05dc78c update tex, mm
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 6
diff changeset
316 また, 本論文で実装するサービスでは Docker のすべての操作を必要としない。そこで, Docker の操作を行うための SDK \cite{sdk} を使用し, 必要な機能のみを実装する。\par
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
317 サービスを提供する上で Docker の必要となる操作は以下である。
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
318 \begin{itemize}
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
319 \item コンテナの作成
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
320 \item コンテナの削除
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
321 \item コンテナでのコマンド実行
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
322 \item コンテナへファイル送信
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
323 \item イメージ一覧の取得
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
324 \item イメージの削除
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
325 \end{itemize}
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326
8
aa9a8f31b61d update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
327 コンテナは, 表\ref{tb:wmcon} で入力した情報を下に作成を行う。コンテナ名は Web コンソールからリクエストを送るタイミングで補完される。
9
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
328 また, コンテナが属するネットワーク名も補完される。リクエストは JSON 形式で受け, JSON 形式でレスポンスを返す。
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
329 リクエストからコンテナを作成後, 作成したコンテナID や ネットワークID , コンテナのステータスを返却する。
8
aa9a8f31b61d update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
330 返却したコンテナID や ネットワークID を下にコンテナ削除やコマンドの実行, ファイルの送信を処理する。
9
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
331 だが, ファイルの送信では JSON 形式ではなく multipart/form-data 形式でリクエストを受ける。\par
8
aa9a8f31b61d update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
332 Docker イメージは GitLab CI/CD を利用して作成するが, Build が成功したかを判断することはできない。
10
e4de1a56f77f add ie-virsh, update figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 9
diff changeset
333 そのため, Web コンソール側から 5 分に一度イメージの更新リクエストを受け, Docker イメージの一覧をリストにまとめ返却を行う。\par
8
aa9a8f31b61d update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
334 ユーザが作成するコンテナとは別に GitLab CI/CD で Docker イメージを Build するための GitLab Runner を立てる必要がある。
9
bf3c55a19edb update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 8
diff changeset
335 立ち上げはユーザが Web コンソールで CI/CD トークンの設定時に行われる。GitLab Runner をユーザごとに立ち上げることで, 複数のユーザが同時に Build を行うことができる。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
336
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
337 \subsection{Kubernetes の操作}
13
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
338 Docker と同様に Kubernetes のすべての操作を必要としないため, Kubernetes と対話するためのライブラリである client-go \cite{kubecli} を使用し, 必要な機能のみを実装する。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
339 サービスを提供する上で Kubernetes の必要となる操作は以下である。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
340
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
341 \begin{itemize}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
342 \item コンテナの作成
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
343 \item コンテナの削除
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
344 \item 認証トークンの取得
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
345 \end{itemize}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
346
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
347 Kubernetes でのコンテナ作成は Pod を作成することである。 Kubernetes でのコンテナ作成は Namespace, Deployment, Service,
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
348 Ingress の流れでオブジェクトを作成する。コンテナの作成は Docker と同様に表\ref{tb:wmcon} の情報を下に作成する。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
349 作成するそれぞれのオブジェクト名は Web コンソールで コンテナ名とアカウントID で補完される。また, Namespace はアカウントID となる。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
350 コンテナの削除にはそれぞれのオブジェクト名と Namespace を用いる。\par
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
351 Kubernetes で作成したコンテナは Web コンソールから操作できないため, digdog でも利用されている RBAC を用いる。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
352 RBAC で使用する 認証トークンはユーザごとに作成された Namespace に設定されるトークンを返すことで, 他のユーザが認証することはできない。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
353 またアクセス制御は Namespace ごとに設定されることで, 他のユーザのコンテナを操作することはできない。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
354 RBAC で許可するリソースの操作は表\ref{tb:wm} である。
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
355
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
356 \begin{table}[htb]
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
357 \begin{center}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
358 \caption{kubectl のコマンド}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
359 \begin{tabular}{c|l} \hline
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
360 get & Pod, Deployment, Service, Ingress の一覧を表示する \\ \hline
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
361 log & Pod の Log を表示する \\ \hline
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
362 exec & Pod にアクセスする \\ \hline
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
363 cp & Pod にファイルを送信する \\ \hline
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
364 \end{tabular}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
365 \label{tb:wm}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
366 \end{center}
bc00c7e09a01 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 12
diff changeset
367 \end{table}
6
db794a6414e4 update tex, add figs
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
368
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
369
14
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
370 %\section{サービスの評価}
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
371
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
372 \section{他のサービスとの比較}
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
373 今回作成した Web サービスは主に学生の学習環境をコンテナ技術を利用して提供する。
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
374 そこで, これまで本コースで使用されてきたサービスと, クラウドのサービスと比較する。
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
375
14
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
376 \subsection{ie-virsh}
16
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
377 ie-virsh は手元の PC で作成した VM を学科のブレードサーバにデプロイできるサービスである。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
378 VM は OS の仮想化環境を提供するため, ユーザが好みの環境を構築できるなど自由度が高い。\par
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
379 本研究で実装したサービスでは, Docker イメージで構築されたアプリケーションに限定される。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
380 また, ユーザが欲しい環境は Docker イメージを作成しなければいけないため, Docker について学習する必要がある。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
381 だが, VM と違い気軽に環境の構築やテストを行える。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
382 また Docker イメージを共有することで, 自身と同じ環境を他のユーザに利用してもらえるなどの良さがある。
14
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
383
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
384 \subsection{ie-docker}
16
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
385 ie-docker は Docker をラップしたツールであり, ユーザは学科のブレードサーバへ ssh で接続を行い CUI から利用することができる。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
386 表\ref{tb:ie-docker} の機能でコンテナを操作することができる。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
387 だが, ie-docker ではユーザがコンテナで使用するイメージを管理者が用意する必要がある。 \par
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
388 本研究で実装したサービスでは, コンテナで使用するイメージは Docker Hub に登録されているイメージ, または作成したイメージを利用することができる。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
389 また, ユーザが Docker イメージを作成できることから管理者の負担が少なくなると考える。
14
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
390
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
391 \subsection{digdog}
16
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
392 digdog は Kubernetes を利用したコンテナ貸出サービスである。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
393 コンテナ作成時に選択できるイメージはユーザが作成する必要があり, Docker Hub に登録されているイメージを選択することができなかった。 \par
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
394 本研究で実装したサービスでは, コンテナで使用するイメージは Docker Hub に登録されているイメージ, または作成したイメージを利用することができる。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
395 また Kubernetes でのコンテナ貸出だけでなく, Docker でのコンテナ貸出を行うことができる。
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
396 そのため, Kubernetes 全体が停止したとしてもブレードサーバの Docker のみでサービスを提供することができる。
14
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
397
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
398 \subsection{クラウドサービス}
650cac660dd1 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 13
diff changeset
399
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
400
16
01a913c03f07 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 14
diff changeset
401 \section{今後の課題}
0
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
402
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
403
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
404 \section{まとめ}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
405
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
406 \nocite{*}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 \bibliographystyle{ipsjunsrt}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 \bibliography{mk-wm}
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409
5
ef6f19e8ec75 update tex
Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
410 \end{document}