2018年3月23日金曜日

コンテナオーケストレーションツールの Rancher を試してみた

概要

Rancher は kubernetes などのコンテナマネージメントツールを更にラップして簡単にコンテナマネージメントをできるオーケストレーションツールになります
要するに kubernetes の難しい概念などを吸収して使いやすくしてくれています
それに加えて kubernetes にない ACL などの機能も提供してくれます
とりあえず今回は Rancher サーバを構築してコンテナホストの追加と挙動の確認まで行ってみました

環境

Rancher サーバ

  • macOS 10.13.2
  • Rancher v1.6.14

コンテナホスト

  • vagrant 2.0.3
  • VirtualBox 5.1.30r118389
  • Ubuntu 16.04
  • docker 17.12.1-ce, build 7390fc6

構成

Rancher サーバの起動

Mac 上でコンテナを起動するだけです

  • docker run -d --restart=unless-stopped -p 8080:8080 rancher/server:stable

http://172.28.128.1:8080/ にアクセスできます
172.28.128.1 は vboxnet1 が刺さっているローカルの Mac です

コンテナホストの追加

今回は vagrant を使って Mac 上に Ubuntu 16.04 を構築してそこに dockerd をインストールしました
https://hawksnowlog.blogspot.jp/2018/03/install-vagrant-on-macos-high-sierra.html

Rancher には docker-machine の機能が実装されており、docker-machine で使えるドライバを使えば EC2 や digitalOcean に自動で構築することもできるようです

コンテナホストができたら Rancker 用のエージェントコンテナを起動します

  • docker run -e CATTLE_AGENT_IP="172.22.128.1" --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.9 http://172.28.128.1:8080/v1/scripts/277730D04E89F34BABFE:1514678400000:7Ob2cE0CNfOeYCsrbQOYHg24go
INFO: Running Agent Registration Process, CATTLE_URL=http://172.28.128.1:8080/v1
INFO: Attempting to connect to: http://172.28.128.1:8080/v1
INFO: http://172.28.128.1:8080/v1 is accessible
INFO: Inspecting host capabilities
INFO: Boot2Docker: false
INFO: Host writable: true
INFO: Token: xxxxxxxx
INFO: Running registration
INFO: Printing Environment
INFO: ENV: CATTLE_ACCESS_KEY=7FCF2ED7B53F4910177A
INFO: ENV: CATTLE_AGENT_IP=172.22.128.1
INFO: ENV: CATTLE_HOME=/var/lib/cattle
INFO: ENV: CATTLE_REGISTRATION_ACCESS_KEY=registrationToken
INFO: ENV: CATTLE_REGISTRATION_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_SECRET_KEY=xxxxxxx
INFO: ENV: CATTLE_URL=http://172.28.128.1:8080/v1
INFO: ENV: DETECTED_CATTLE_AGENT_IP=172.17.0.1
INFO: ENV: RANCHER_AGENT_IMAGE=rancher/agent:v1.2.9
INFO: Launched Rancher Agent: d928df0e9a8326fc857a0b3295fc5f81419adffd912c6a130bdb8fa80340decb

成功時のログは上記の通りです

エージェント側から Rancher サーバが見える必要があります
このコマンドは Rancher の管理画面から生成することができます
http://172.28.128.1:8080/env/1a5/infra/hosts/add?driver=custom

rancher1.png

エージェント用のコンテナが起動すると別のコンテナが 10 個起動するようです
管理画面 (Stacks -> All) で見ると Stack とそれぞれのコンテナがカテゴライズされているのがわかります
rancher2.png

コンテナを立ち上げてみる

docker コマンドでもできますが、せっかくなので UI から立ち上げてみます

INFRASTRUCTURE -> Containers -> Add Container

で新規でコンテナを立ち上げることができます
DockerHub にあるrancker3.pngイメージ名とポートしています

これで立ち上がると以下のようにメトリックを確認することができます
rancker4.png

Public に公開されている IP はコンテナホスト上の docker0 インタフェースに付与された IP のようです
172.28.128.3 の vboxnet1 のネットワークではないようです

最後に

Rancher を試してみました
今回は単一のコンテナを立ち上げただけなので Stack や Service の機能の仕組みは使っていません
Stack は複数のコンテナ定義を登録しておくことができる機能です
docker-compose.yml を登録することもできるます
更に LoadBalancer なども登録することができます
Service はコンテナ定義や LoadBalancer など Stack に登録することができるコンポーネントの単位になります

なので基本は Stack でアプリの定義をしたあとで Stack 単位でアプリの起動やスケールアウトを行っていきます

また今回は Ubuntu を構築してわざわざ docker をインストールしました
初めは docker-machine の virtualbox ドライバを使って構築したのですがどうやら boot2docker ではエージェントが動作しないようなので仕方なく Ubuntu を構築しました

参考サイト

0 件のコメント:

コメントを投稿