Docker管理ツール、Kubernetes、etcd、flannel、cAdvisorの概要とインストール、基本的な使い方:Docker運用管理製品/サービス大全(3)(2/6 ページ)
数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。今回は、グーグルが主導で開発しているOSSであるKubernetes、flannel、cAdvisorの概要や主な機能、環境構築方法、使い方について。
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は下記の段取りで使えます。
- etcdを起動
- etcdにflannel用の設定(flannelが配布していいネットワークアドレス帯の指定)を行う
- 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.
関連記事
- 所要時間わずか10分で「Docker」を体験しよう――Azureで始めるDocker入門
2014年から急速に注目度が増しているコンテナー型仮想化技術「Docker」。すでに多くのLinuxで利用可能な技術ですが、次期Windows Serverでもサポートされる予定です。Dockerとはどのようなものなのか、一度、実際に触って体験してみてはいかがでしょうか。 - Linux/OSSに不慣れでも大丈夫! WindowsでDockerを扱う際のポイント
本連載第31回は「Azureで始めるDocker入門」を掲載しました。掲載後、すぐに「Docker 1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。今回は、その記事でも紹介した「Docker Client for Windows」をフォローアップします。 - Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開
CoreOSがDocker代替のシンプルなコンテナーランタイムを公開。Dockerの当初の目的であるシンプルなコンテナーを目指すプロトタイプだ。 - Docker、そしてCloud FoundryとPaaSの価値とは
Docker人気を踏まえたとき、Cloud Foundryはどのように位置付けられるのか。PaaSの最終的な価値とは何なのか。AWSとの競合とは。Cloud Foundryの責任者である米PivotalのJames Watters氏に聞いた。 - レッドハットが発表したOpenShift Enterprise 3は「Dockerを知らなくても使える」基盤
レッドハットが2015年7月22日に国内発表したPaaS製品「OpenShift Enterprise 3」の最大の狙いは、Dockerを知らなくてもアプリケーションの開発・運用ができるようにすることだという。ここでは、レッドハットの日本法人の説明に基づき、OpenShift Enterprise 3を紹介する。 - 米グーグルのDockerコンテナ管理サービスが一般提供開始
米グーグルがGoogle Cloud Platform上で提供しているDockerコンテナオーケストレーション/管理サービス、Google Container Engineが2015年8月26日、ベータ段階を終了、一般提供が開始された。毎週20億以上のコンテナを立ち上げているグーグルの経験に基づくサービスだとしている。