RancherOS + RancherでNvidia Dockerホストを使ってみました。
これまでの検証でコンテナーでGPUを使うことはできるようになったものの、もう少しわかりやすくコンテナーを管理できないかなと思いRancherOSとRancherを使ったら割と便利だったので、ブログにまとめてみようと思いました。
インストールから利用まで書くとだいぶ長くなりそうですので、前後編に分けます。今回は前編の構築編です。 インストール手順に入る前に、ざっと今回使うソフトウェアについて解説します。
RancherOSとは
RancherOSとはRancher Labが開発、提供しているコンテナーを動かすためのシンプルなOSです。色々なサービスがコンテナー上で動きます。 RancherOSはシステムコンテナーとユーザーコンテナーに分かれており、ユーザーがアプリケーションを動かすのに使うのはユーザーコンテナーになります。
インストールに必要な設定はYAMLに書いて、コマンド一発でインストールが完了します。
Rancherとは
RancherはRancher Labが開発、提供している、アプリケーションのデプロイ、コンテナー、コンテナーホストをWebインターフェイスや専用のコマンドラインツールを使って管理するできるソフトウェアです。
Nvidia Dockerとは
Nvidia DockerはNvidia GPUをDockerで活用して、コンテナーのパフォーマンスを上げたりすることができるコンテナーランタイムライブラリーとユーティリティです。
インストール開始
それでは早速インストールしたいと思います。
RancherOSをインストール
Rancherを動かすため、RancherOSをインストールします。 インストール方法については公式のドキュメントがありますので詳細は割愛します。
IPアドレスは固定のものを割り当ててください。
Rancherをデプロイ
RancherOSのセットアップが終わったら、Rancherをデプロイしましょう。 今回はKubernetesではなくNvidia Dockerを使うことが目的なので、Rancher 2.xではなくRancher 1.6.xを利用します。
RancherOS 1.5.xの場合、コマンド一発でRancher 1.6.xを起動できます(もちろん、Rancher自体はDockerのイメージがあるので、イメージを使ってdocker runでも動かすことはできます)。
一行目はサービスの有効化、二行目の方がサービスの起動です。
$ sudo ros service enable rancher-server $ sudo ros service up rancher-server
少々デプロイには時間がかかります。次のコマンドを実行して正常にサービスが稼働しているか確認します。 Rancher 1.6.xではTCPポートの8080番を使って通信するため、ポートが開いていることを確認します。
$ sudo ros service list|grep enable enabled rancher-server $ ss -natu |grep 8080 tcp LISTEN 0 128 :::8080 :::*
これでGPUコンテナー環境を管理する側のRancherOSとRancherの環境のセットアップは終了です。 RancherOSホストのIPアドレスの8080ポートにブラウザーでアクセスすると、RancherのWebインターフェイスにアクセスできます。
デフォルトのままだと認証せずにアクセスできてしまうので、上部メニューの「ADMIN > Access Control」からなんらかの方法でユーザー認証するように構成してください。特に該当するものがなければ「ローカル認証」を設定し、ユーザーとパスワードを入力することで、次回ログイン時にそのユーザーでRancherにログインできます。
GPUコンテナーホストの用意
次にGPUコンテナーホストを用意します。次の要件にマッチしたOSが必要です。今回はMAASを使ってUbuntu 18.04.3を用意することにしました。このホストには事前にNVIDIAのGPUを接続しておく必要があります。
インストール方法は公式のドキュメントもありますし、難しくはないのでざっとやることをまとめると...
Ubuntu 18.04.3の場合
- CUDA Toolkit 10.1 Update 2のパッケージリポジトリーを有効にする
cuda-drivers
と依存するパッケージを一通りインストール- Nvidia Dockerのパッケージリポジトリーを有効にする
nvidia-docker2
とDockerをインストールする
Docker 19.03以降の場合は nvidia-docker2
ではなく nvidia-container-toolkit
をインストールします。
今回はUbuntu Archive版のdocker.io (2019/08/26現在は18.09ベース)をインストールするため、nvidia-docker2の方をインストールする必要があります。次のようにパッケージをインストールしました。
$ sudo apt-get update $ sudo apt-get install -y docker.io $ sudo apt-get install -y nvidia-docker2 $ sudo systemctl restart docker
インストール後は一旦再起動します。
再起動後に次のようにコマンドを実行して、コンテナー内でnvidia-smi
コマンドの結果が出ることを確認します。
結果が出力されれば、コンテナーでGPUを使うための環境は準備完了です。
% sudo docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
前編は以上です。 後編ではこのGPUコンテナーホストをRancherのノードとして登録し、アプリケーションをいろいろ実行してみたいと思います。