2020/11/18
今回できたこと
日本仮想化技術株式会社提供のMac mini (Late 2014)の初期設定とminikube環境のインストール。 nvidiaランタイム実験用環境としての3Dゲームに関しての調査。
DockerコンテナからKubernetesとOpenShiftまで要点解説 2020-4-25 B-3を視聴し、K8sなどの役割の理解を深めた。
これからの作業
Mac mini (Late 2014)環境
minikube環境で、改めて実習を行う。
Docker on macOSの評価。
Jetson Nano環境
とりあえず、現状のDockerイメージでのXアプリケーション(最終的にはtorcs)の起動。
お約束
文章化作業
tmp: 一時的にリンクを保存する場所として利用する。 定例作業
DockerコンテナからKubernetesとOpenShiftまで要点解説 2020-4-25 B-3視聴
https://www.youtube.com/watch?v=6YjF4tzhLVY
用語の例えが素晴らしい
K8sとは、ライブ(コンサート)を実現するためのもの。
コンテナ化した色々な役割を統括する。
コンテナは箱詰めの荷物、荷物はアプリケーションなどをインストールした環境。
Podは(豆の)鞘にあたり、その中で複数の豆(Dockerコンテナ)が動いている。
神輿に乗ったワークロード(アプリケーション)と、神輿を担ぐワーカー。
サービスはお店(Podの生情報などを隠蔽する)。柔軟なロードバランサーになる。
新たなサービス(ハンバーガショップ)を作る時には
なぜK8s?
止められないサービスが多くなっている現在、サービスを止めない仕組みが必要。
マイクロサービスを効率よく容易に実現するための仕組み。
スケールの大きいマイクロサービスの展開には、Istioが利用可能。 今回は、K8sの活用に関してを中心に説明
コンテナの監視はどうなっているのか?
ログを集める。
メトリックスが稼働状況などを集めている。
OpenShiftとは?
K8sをベースに色々な機能を足した製品
コントローラ
マスターノードに存在。以下のような特徴がある。
可用性
スケール
無停止入れ替え
Mac mini初期設定と情報確認
仕様は、以下の通り。
table:Mac mini仕様
OS Catalina (10.15.7)
機種 Mac mini (Late 2014)
CPU 2.8 GHz Dual core Intel Core i5
Memory 16GB 1600MHz DDR3
Disk SSD 500.07GB
Graphics Intel Iris 1536MB
アプリケーションのインストールのために、Homebrawのインストールを行う。
code:shell
Password:
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following new directories will be created:
/usr/local/bin
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/share
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
(snip)
==> Next steps:
- Run brew help to get started
- Further documentation:
以下のように、よく使うアプリケーション(tmux)と、minikube環境をインストールする。
code:shell
% brew install tmux
(snip)
% brew install minikube
(snip)
次回以降、Mac miniの環境でminikube環境での実習を再開する。
Dockerで3Dゲームを動かす@攻めのITのためのDocker塾の実習
Jetson Nanoのnvidiaランタイムの効果を確認するための例題を考えていたが、3D描画性能が必要となるゲームを動かすことがわかりやすいと考えた。
そこで、Dockerで3Dゲームを動かす@攻めのITのためのDocker塾(準備編, 構築編, 稼働編)を参照して、この環境を構築してみる。 以下のような手順で、この環境構築を行う。
対象とする3Dゲーム選択のために、調査を行う(@Raspberry Pi)。
@Jetson Nano
native環境に対象アプリをインストールして、動作を確認する。
nvidiaランタイムを利用しない状態でのDockerイメージを作成する。
このイメージで、対象アプリをインストールして、パフォーマンスを確認する。
nvidiaランタイムが利用できる状態のDockerイメージを作成する。
Dockerイメージをruncランタイムとnvidiaランタイムで実行して、パフォーマンスを確認する。
3Dゲームの調査
はじめに、Raspberry Piに以下の3D Gameを入れて、評価できるかどうか確認する。
Doom(dhewm3, doomsday, prboom-plus, ): First Person Shooting(FPS)
Quake(quake*): FPS
torcs: Car race
trigger-rally: Car race
flightgear: Flight Simulator
大きくまとめると、以下のような特徴がある。
table:3Dゲームの特徴
ゲーム 全画面表示 オーディオ ゲームパッド 備考
doomsday o ? ? フリーイメージで起動できず
prboom-plus o (荒い) o ?
torcs o (解像度選択可能) o x
trigger-rally ? ? ? 起動せず
flightgear o ? ? ゲーム開始方法がわからず
Doomsday(manual)は、画面の最大化が可能であるが、ゲームデータに当たるwadファイルを読み込むことができなかった。 無料のゲームデータ(wadファイル)としては、以下のようなものがある。
freedoom(/usr/share/games/doom/freedoom.wad:以下、同じディレクトリにあるため、ファイル名だけを表示)
freedoom1(freedoom1.wad)
freedoom2(freedoom2.wad)
freedoomu(freedoomu.wad)
prboom-plusは、無理やり最大化しているようで、画面が荒くなってしまっている。
torcsは、画面が小さいが、色々な解像度で全画面表示ができる(Options->Display->Screen Resolution & Display Mode(Full-screen mode))。さらに、OpenGLの設定もでき、3Dレンダリングの状態も変更できるため、有力な候補と考えられる。
trigger-rallyは、以下のようなエラーが出て起動できない。
code:shell
$ trigger-rally
Failed to initialize SDL: No available video device
Trigger Rally init
Build: 0.6.6 on Feb 19 2019 at 15:53:49
Initialising PhysFS
Setting writable user directory to "/home/pi/.local/share/trigger-rally/"
Application base directory "/usr/games/"
Loading game configuration
SDL error, SDL_GetCurrentDisplayMode(): Video subsystem has not been initialized
Failed to add PhysFS search directory "../data"
PhysFS: 11 - not found
Failed to add PhysFS search directory "C:\Program Files\Trigger Rally\data"
PhysFS: 11 - not found
Main game data directory datadir="/usr/share/games/trigger-rally"
Create window and set video mode
Failed to create window or set video mode
SDL error: No available video device
Try changing your video settings in trigger-rally.config
flightgearは、全画面表示ができるが、ゲームの起動方法がよくわからなかった。
以上の特徴から、とりあえずtorcsを対象のゲームとし、改めてJetson Nanoにインストールする。
3DゲームtorcsのJetson Nanoへのインストール
以下の手順でtorcsをJetson Nanoにインストールする。
code:shell
$ sudo apt search torcs
ソート中... 完了
全文検索... 完了
torcs/bionic 1.3.7+dfsg-4 arm64
OpenGL を使った三次元レーシングカーシミュレータゲーム
torcs-data/bionic 1.3.7+dfsg-4 all
data files for TORCS
$ sudo apt install torcs
(snip)
テストを行うと、30-50fpsぐらい出ているようである。
torqs用Docker環境の構築
はじめにテストとして、dockerhubのUbuntuイメージでDockerのtorcs用イメージを作成する。
実際の評価には、nvidiaランタイムが利用可能なイメージをベースとする必要がある。
code:Dockerfile
FROM ubuntu:latest
MAINTAINER Takeshi MUTOH <takeshi.mutoh@gmail.com
ENV container docker
RUN apt-get update
RUN apt-get install -y wget sudo apt-utils lsb-release torcs
code:shell
$ cd ~/Docker/torcs/
$ sudo docker build -t torqs_dockerfile .
Sending build context to Docker daemon 2.048kB
Step 1/5 : FROM ubuntu:latest
---> 10c482e6af12
Step 2/5 : MAINTAINER Takeshi MUTOH <takeshi.mutoh@gmail.com
---> Using cache
---> 787cff5fd9db
Step 3/5 : ENV container docker
---> Using cache
---> a4f09f509374
Step 4/5 : RUN apt-get update
---> Using cache
---> c8d37fdb9c6b
Step 5/5 : RUN apt-get install -y wget sudo apt-utils lsb-release torcs
---> Running in 7828a665de3d
(snip)
Removing intermediate container 7828a665de3d
---> 26a8ffb72be9
Successfully built 26a8ffb72be9
Successfully tagged torqs_dockerfile:latest
$ sudo docker images|grep torqs
torqs_dockerfile latest 26a8ffb72be9 2 hours ago 784MB
以下のように、このイメージを実行する。
しかし、/bin/bashは起動できるが、Xの設定がうまくできていないようで、torcsは実行できていない。
code:shell
$ sudo docker run -it torqs_dockerfile
root@c56c835d9aef:/# whereis torcs
torcs: /usr/lib/aarch64-linux-gnu/torcs /usr/games/torcs
root@c56c835d9aef:/# /usr/games/torcs
/root/.torcs created, copying/linking game data
freeglut (/usr/lib/aarch64-linux-gnu/torcs/torcs-bin): failed to open display ''
$ sudo docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix torqs_dockerfile /bin/bash
/usr/games/torcs
/root/.torcs created, copying/linking game data
No protocol specified
freeglut (/usr/lib/aarch64-linux-gnu/torcs/torcs-bin): failed to open display ':1'
$ sudo docker run \
-it \
--rm \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v $HOME/.vdrift:$HOME/.vdrift \
-v /var/lib/dbus:/var/lib/dbus \
-v /var/run/dbus:/var/run/dbus \
-v /etc/machine-id:/etc/machine-id \
--device=/dev/dri:/dev/dri \
--device=/dev/snd:/dev/snd \
--device=/dev/input:/dev/input \
torqs_dockerfile /usr/games/torcs
docker: unknown server OS: .
See 'docker run --help'.
今後、とりあえずXのアプリケーションが起動するためのコマンドラインオプションやDockerイメージに関して調べていく。