概要
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
エージェント用のコンテナが起動すると別のコンテナが 10 個起動するようです
管理画面 (Stacks -> All) で見ると Stack とそれぞれのコンテナがカテゴライズされているのがわかります
コンテナを立ち上げてみる
docker コマンドでもできますが、せっかくなので UI から立ち上げてみます
INFRASTRUCTURE -> Containers -> Add Container
で新規でコンテナを立ち上げることができます
DockerHub にあるイメージ名とポートしています
これで立ち上がると以下のようにメトリックを確認することができます
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 件のコメント:
コメントを投稿