多機能なコンテナクラスタ構築ツール「Kontena」 3ページ
グリッドの作成
エージェントをインストールする前に、各ノードが所属する「グリッド(grid)」の設定を行っておく必要がある。まず、「kontena grid create <グリッド名>」コマンドを実行してグリッドを作成する。たとえば「grid01」という名前のグリッドを作成する場合、次のようになる。
$ kontena grid create grid01 Using grid: grid01
グリッドの情報は、「kontena grid current」コマンドで確認できる。なおここで表示される「token」はKontena Agentの設定時に必要となる文字列だ(後述)。
$ kontena grid current grid01: uri: wss://192.168.1.10 token: JJ8LDpFfB8uPo6iwq87O4XCr2Tgez2E+8MuUyZKh1lRqUatpTkfhKkud9jDcZxZWdwAzZfoFMA7/I2Rfil761w== stats: nodes: 0 of 0 cpus: 0 load: 0.0 0.0 0.0 memory: 0.0 of 0.0 GB filesystem: 0.0 of 0.0 GB users: 1 services: 0 containers: 0
エージェントのインストール
続いて、コンテナを稼動させるノード上にKontena Agentをインストールしていこう。Kontena Agentに必要な設定ファイルは以下の2つだ。
- /etc/kontena/kontena-agent.env
- /etc/systemd/system/kontena-agent.service
まず/etc/kontena/kontena-agent.envファイルだが、以下のようになる。
KONTENA_URI="https://<Kontena Serverのホスト名もしくはIPアドレス>" KONTENA_TOKEN="<グリッドのトークン>" KONTENA_PEER_INTERFACE=<Kontena Serverとの通信に使用するNIC> KONTENA_VERSION=latest
たとえばKontena ServerのIPアドレスが192.168.1.10、グリッドのトークンが「JJ8LDpFfB8uPo6iwq87O4XCr2Tgez2E+8MuUyZKh1lRqUatpTkfhKkud9jDcZxZWdwAzZfoFMA7/I2Rfil761w==」、使用するNICがeth1だった場合、以下のようになる。
KONTENA_URI="https://192.168.1.10" KONTENA_TOKEN="JJ8LDpFfB8uPo6iwq87O4XCr2Tgez2E+8MuUyZKh1lRqUatpTkfhKkud9jDcZxZWdwAzZfoFMA7/I2Rfil761w==" KONTENA_PEER_INTERFACE=eth1 KONTENA_VERSION=latest
また、/etc/systemd/system/kontena-agent.serviceファイルは以下のようになる。
[Unit] Description=kontena-agent After=network-online.target After=docker.service Description=Kontena Agent Documentation=http://www.kontena.io/ Requires=network-online.target Requires=docker.service [Service] Restart=always RestartSec=5 EnvironmentFile=/etc/kontena/kontena-agent.env ExecStartPre=-/usr/bin/docker stop kontena-agent ExecStartPre=-/usr/bin/docker rm kontena-agent ExecStartPre=/usr/bin/docker pull kontena/agent:${KONTENA_VERSION} ExecStart=/usr/bin/docker run --name kontena-agent \ -e KONTENA_URI=${KONTENA_URI} \ -e KONTENA_TOKEN=${KONTENA_TOKEN} \ -e KONTENA_PEER_INTERFACE=${KONTENA_PEER_INTERFACE} \ -v=/var/run/docker.sock:/var/run/docker.sock \ -v=/etc/kontena-agent.env:/etc/kontena.env \ --net=host \ kontena/agent:${KONTENA_VERSION}
これらファイルを作成したら、Kontena Serverの場合と同様にsystemdをリロードし、「kontena-agent」サービスを開始させよう。
# systemctl daemon-reload # systemctl start kontena-agent
kontena-agentサービスも、Kontena Serverのサービスと同様にコンテナ内で稼動する。「docker ps」コマンドでそれらの稼動を確認できる。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9610a645423c kontena/etcd:2.3.3 "/usr/bin/etcd --name" 2 minutes ago Up 2 minutes kontena-etcd b1f62187436d weaveworks/weave:1.4.5 "/home/weave/weaver -" 2 minutes ago Up 2 minutes weave 9589d74e93d2 kontena/cadvisor:0.23.0 "/entrypoint.sh --doc" 3 minutes ago Up 3 minutes 8080/tcp kontena-cadvisor 3206025005ef kontena/agent:latest "/app/bin/kontena-age" 3 minutes ago Up 3 minutes kontena-agent
ノードの状況把握
Kontena Agentを起動させたら、Kontena CLIをインストールしたマシンで「kontena node ls」コマンドを実行して正しくノードが認識されているか確認してみよう。たとえば「centos11」というホスト上でKontena Agentが稼動している場合、次のように表示される。
# kontena node ls Name Status Initial Labels centos11 online yes -
複数のノードを稼働させる
2つめ以降のノードを稼働させる場合、以上の作業を各ノードで繰り返せば良い。各ノードに配置する設定ファイルはまったく同じなので、たとえばさくらのクラウドのような環境で利用する場合、ディスクイメージをそのままコピーすることで容易に複数のノードを追加できる。