多機能なコンテナクラスタ構築ツール「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つめ以降のノードを稼働させる場合、以上の作業を各ノードで繰り返せば良い。各ノードに配置する設定ファイルはまったく同じなので、たとえばさくらのクラウドのような環境で利用する場合、ディスクイメージをそのままコピーすることで容易に複数のノードを追加できる。