view slide/slide.md @ 27:a69ae277bd6a

update slide
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Sun, 30 Aug 2020 14:42:38 +0900
parents 7ed1d2e0749f
children 1c5b6f768ae2
line wrap: on
line source

---
marp: false
title: 情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装
paginate: true

theme: default
size: 16:9
style: |
  section {
    background-color: #FFFFFF;
    font-size: 28px;
  }

---

# <!--fit--> 情報工学科演習用のコンテナ技術を用いた新規サービスの設計・実装

- 宮平 賢
    - 琉球大学工学部工学科知能情報コース
- 河野 真治
    - 琉球大学工学部

---

# 研究目的

- 情報技術の普及に伴い情報系の学生が課題や演習を行う学習環境が必要である
- 学生の課題や演習によっては, 並列処理が必要となるものがある
    - 例えば, 機械学習の課題など
    - だが, コース推奨の PC では性能的に厳しい
- 近年ではクラウドサービスが普及しているが, 制限があったり有料だったりする
- 学科のサーバを利用して, 学生が利用できる学習環境を提供したい

---

# 学習環境で要求されること

- 高性能な環境
    - 並列処理のために GPU を利用できるなど
- 学習環境の構築を自由に行える環境
    - 利用技術のバージョンの変更
    - ライブラリのインストールなど

---

# 本コースで利用しているサービス

本コースでは, 学生が課題や演習などで利用できる VM の貸出を行うサービスがある。

- Akatsuki
    - Web コンソールから VM の作成などができる
    - デフォルトのスペック
        - CPU 1 コア
        - メモリ 1GB
        - ディスク 10GB

- ie-virsh
    - virsh をラップし, CLI で操作できる
    - 手元の PC で作成した VM を移行できる

---

# 本コースで利用しているサービス

VM 貸出サービスはどちらも libvirt と virsh の機能を用いて実装されている。

- libvirt
    - 仮想マシンの制御を抽象化したライブラリ
    - KVM や VMWare, Xen など多くのハイパーバイザに対応している

- virsh
    - libvirt にある CLI ツール
    - libvirt がアクセスできるハイパーバイザを操作できる

---

# 本コースで利用しているサービス

VM 貸出サービスで学科サーバに搭載される GPU を利用するには, PCI パススルーを行う必要がある。だが, PCI パススルーでは 1つの VM に 1台の GPU となるため, 学生全員で利用するには現実的ではない。

そこで新たにコンテナ技術を用いて学生の学習環境を提供するサービスの実装を行った。

---

# 新規サービスの設計



---

# 新規サービスの実装

コンテナ貸出を行うため, コンテナ仮想化を利用できる Docker と Kubernetes, Singularity を利用する。

- Docker
    - OS レベルの仮想化技術を利用して, ソフトウェアをコンテナと呼ばれるパッケージで提供する。

- Kubernetes
    - アプリケーションのデプロイ, スケーリング, 及び管理を用意にするためのコンテナを動的管理するコンテナオーケストレーションである。

- Singularity
    - HCP クラスタ上で複雑なアプリケーションを実行するために開発されたコンテナプラットフォームである。
    - Docker イメージを利用することができる。

---

# 新規サービスの実装

Docker の操作には Docker Engine SDKs を使用し, コンテナやイメージの操作に必要な機能を抜き出し実装した。
実装した機能は以下である。

- コンテナの作成
- コンテナの削除
- コンテナへデータのコピー
- コンテナでコマンドの実行
- イメージの削除
- イメージの一覧取得

---

# 新規サービスの実装

Kubernetes の操作には Kubernetes クラスターと対話するライブラリである client-go を使用し, 必要な機能を抜き出し実装した。

- コンテナの作成
- コンテナの削除
- Kubernetes API のアクセス制御

---

# 新規サービスの実装

Singularity はマルチユーザに対応しているため, 学生がサーバへ ssh で接続を行い CLI から操作できるようにする。
Singularity で学生が作成した Docker イメージ利用するにはビルドを行う必要がある。だが, ビルドには sudo 権限が必要となるが, 学生全員に sudo 権限を与えるわけにはいかない。そこで, 学生が Docker イメージを作成後にビルドを行い Web コンソールからダウンロードできるように実装した。

![w:450 h:300](images/singularity.png)

--- 

# サービスの使用例


---

# サービスの使用例


---

# 比較


---

# 比較


---

# 改善点


---

# まとめ