検索
連載

Docker管理ツール、Kubernetes、etcd、flannel、cAdvisorの概要とインストール、基本的な使い方Docker運用管理製品/サービス大全(3)(2/6 ページ)

数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、グーグルが主導で開発しているOSSであるKubernetes、flannel、cAdvisorの概要や主な機能、環境構築方法、使い方について。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

Docker、etcd、flannel、Kubernetesの役割

 繰り返しますが、KubernetesではDocker、etcd、flannelと連携して複数ホスト間のコンテナー管理を行います。ここでは上記のそれぞれの役割について記載します。

Dockerの役割

 Dockerを使用することにより単一ホスト間で複数のコンテナーを動かすことが可能になります。Dockerでは仮想ブリッジ「docker0」をゲートウェイに持つIPアドレス空間を作成し、その中でコンテナーを動かします。コンテナーは、「veth」と呼ばれる、仮想インターフェースにひも付けられるIPアドレスを付与されます。

etcdとflannelの役割

 etcdとflannelを使用することにより、複数ホスト間でのコンテナー連携が可能になります。flannelの機能は下記の2点です。

  • etcd経由で他ホストと協調して、自ホストのdocker0に割り当てるべきネットワークアドレス帯を決めてくれる。Docker本体を起動するときに、その結果を、以下のように「-bip」で指定する
docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}
  • 各ホストがどのネットワークアドレス帯をdocker0に割り当てているかを把握しルーティングする。

 etcdとflannelは下記の段取りで使えます。

  1. etcdを起動
  2. etcdにflannel用の設定(flannelが配布していいネットワークアドレス帯の指定)を行う
  3. flannelを起動

Kubernetesの役割

 KubernetesはPodの配備、レプリケーション、Podへのリクエストのロードバランシングを行います。etcdにMinionの情報を保存して、レプリケーション機能の多重度に合わせてホストにPodの配備を行います。flannelと連携することにより複数ホストに対してPodの配備が可能になります。

 また、Podの死活監視を行い、Podが異常終了した場合はPodの削除や再配備を行います。

 flannelと連携しない場合は単一ホストでPodの配備を行うため、Podの多重度は常に「1」になります。そのため、flannelと連携しないKubernetesは単一ホストでのPodのオートヒーリングを行うものになります。

Kubernetesの主な機能

 Kubernetesは下記の機能を持っています。GUIを持たず、CLIで各設定を行い、各機能を実行します。

コンテナーの操作

 複数のコンテナーをPodという単位でグルーピングし、配備/削除、起動/停止を行います。セットアップ時は、Pod作成時にPodで使用するコンテナーイメージやCPU、メモリディスクスペースを指定できます。

 また、Podがどこに配備されたかを自動追尾したり、Pod単位で多重度の設定、スケールアウトを行ったりします。

 kubectlコマンドを実行すると、徐々にPodが新しいイメージに入れ替わっていくように自動アップデートします。

コンテナーの監視

 Podの状態を監視し、異常終了した場合は再配備を行います。Kubernetesのヘルスチェックは下記の3通りがあります。

  • Webヘルスチェック:ページにアクセスしリターン値が「200」〜「399」の場合は成功
  • コンテナーExecヘルスチェック:コンテナー内でコマンドを実行しリターン値が「0」の場合は成功
  • TCP Socketヘルスチェック:コンテナーのポートに対してソケットのオープンを試みて、実行できれば成功

 コンテナーごとのリソース値を取得する際は、cAdvisorを使用してGUI上から監視可能です。cAdvisorの詳細は、後述します。

通信

 内部的な処理ならばServiceを使用してリクエストのロードバランシングが可能です。ただし、Serviceは内部的なIPしか持たないため外部からのリクエストをロードバランシングできません。

 flannelを使用してホスト間同士の連携が可能です。

セキュリティ

 Kubernetes APIの実行にユーザー認証/TSL認証を持たせることが可能です。Kubernetes API実行ログ「kube-apiserver.log」にアクセスされたAPIの履歴が残ります。ただし、誰がアクセスしたかの情報は出力されません。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る