(1/6)数多く台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する特集。台頭しているDockerの運用管理に関する製品/サービスの特長、使い方を徹底解説する本特集「Docker運用管理製品/サービス大全」。今回は、グーグルが主導で開発しているKubernetes、flannel、cAdvisorの概要と使い方を解説します。内容は、2015年6月の記事執筆時のもので、対象ソフトウエアのバージョンは下記です。前回も触れましたが、それぞれの役割と共に記載しておきます。全てOSS(オープンソースソフトウエア)です。環境構築手順の紹介で扱うDocker自体のバージョンは1.6を使っています。Kubernetes(バージョン0.17):Dockerコンテナー管理フレームワークflannel(バージョン0.41):Kubernetesを使うために作られた、それぞれのホストにサブネットを付与するオーバレイネットワーク。複数ホストのコンテナー間の連携を実現するcAdvisor(バージョン0.15.1):コンテナーリソースを監視するOSS。Engine(GKE)」はKubernetesの管理サービスです。Docker、Kubernetes、etcd、flannelの構成概要Kubernetesはグーグルが提供するDockerのコンテナー管理フレームワークです。Engineが動作するホストを用意する必要があり、そのホストにKubernetesをインストールしてDockerのクラスター環境を構築します。Kubernetesはデプロイメント、メンテナンス、アプリケーションのスケーリングの基本機能を提供します。内部的にはGo言語(golang)+シェルスクリプトでできているようです。Kubernetesの構成概要を下に記します。参考KubernetesはDocker、etcd、flannelと連携して複数ホスト間のコンテナーアプリケーション管理を実現します。etcdは設定情報共有とサービス検出のための分散KVSです。Master(後述)の情報を永続化するために使用されます。MasterもMinion(後述)も、このetcdに接続されており、「watch」機能を利用して設定情報が全ノードに速やかに反映されます。Kubernetesはetcdをノード(Minion)の管理に使用して、flannelは各ホストのDockerホストのIPアドレス帯の管理に使用します。etcdは、Go言語で書かれています。etcdを起動するとクライアント受付用のポート(-addr、default:4001)、etcd同士のコミュニケーション用のポート(-peer-addr、default:7001)の2種類を待ち受けます。後述の「Kubernetesの作成手順(ホスト間連携)」ではMinionがMasterのetcdに接続します。Kubernetesの構成を下記に整理します。PodKubernetesではDockerコンテナーを「Pod」という単位でまとめています。ストレージやIPアドレスなど、複数のコンテナーで共有しなければならないリソースがあるときに、1つのPodで定義します。Pod内のコンテナーは必ず同じホストにデプロイされます。MasterMasterはKubernetesクラスターをコントロールするプロセス群です。コンテナー数が増えればMinionを増やせばよく、APIが忙しくなってきたらMasterを増やすイメージです。Kubernetesの機能では、Masterの多重化はできません。情報の保存場所であるetcdは複数のMasterからアクセス可能なので、あらかじめMasterのホストを複数作っておくことは可能です。Serverkube-apiserver、kube-schedulerで構成されており、Kubernetesの3つのオブジェクト(Pod、Service、ReplicationController)に対するRESTでの操作を受け付けてetcdに保存します。それと、Minionに対するPodのスケジューリングと、Podの情報(PodがどのMinionにいるか、どのポートをEXPOSEしているか)とService設定を同期します。kubecfg/kubectlコマンドは、ここのRESTを実行するものです。Scheduler未スケジュールのPodをMinionに配置します。ReplicationControllerPodの多重度を設定し継続的に監視調節します。自動でPodの数を削除したたり立ち上げたりして調節します。APIを叩いてReplicationを発動させます。MinionMinionは、Dockerコンテナーが配置、実行されるWorkerノードです。Proxyが動いています。KubeletMinionをコントールするエージェントです。manifest(コンテナーマニフェスト)に従いコンテナーを起動します。ProxyServiceで設定された通りに、TCPとUDPをPodに転送するためのネットワークプロキシです。ServicePodの通信のエンドポイントを既定します。ServiceはDocker空間のIPとポートを持っており、PodはServiceにアクセスすることでPod間の通信を可能にします。Serviceはロードバランサーの機能を持っており、リクエストをレプリケーションされているPodに振り分けます。Serviceが持つIPはDockerのIP空間内のため外部(インターネットなど)からアクセスすることはできません。1.0ではServiceが外部のIPからの受け口を持つことができるようになるようです。「NodePort」と「LoadBalancer」の2種類の機能が提供されます。NodePortは、ホストのPortとリンクさせる方法です。Dockerのexpose設定と同じ振る舞いになります。LoadBalancerは外部のロードバランサーのIPアドレスを指定して、そこからの通信を受け取る設定になるようです。この場合は外部のロードバランサーが必須になります(Kubernetesでは、この外部のロードバランサーは提供しません)。Serviceの実行環境としては、各ホストで動作しています。Masterを停止させた状態でMinionの動作を見てみたところ、MinionのPodは正常に動作していました。MinionのPodはService経由でデータを渡しているため、各MinionにServiceが存在します。10分で「Docker」を体験しよう——Azureで始めるDocker入門2014年から急速に注目度が増しているコンテナー型仮想化技術「Docker」。Serverでもサポートされる予定です。Dockerとはどのようなものなのか、一度、実際に触って体験してみてはいかがでしょうか。WindowsでDockerを扱う際のポイント本連載第31回は「Azureで始めるDocker入門」を掲載しました。1.6」がリリースされたので、意図したわけではありませんが、タイムリーな記事になったと思います。Windows」をフォローアップします。Docker代替のコンテナーランタイム「Rocket」をCoreOSが公開CoreOSがDocker代替のシンプルなコンテナーランタイムを公開。Dockerの当初の目的であるシンプルなコンテナーを目指すプロトタイプだ。Foundryはどのように位置付けられるのか。PaaSの最終的な価値とは何なのか。Watters氏に聞いた。3」の最大の狙いは、Dockerを知らなくてもアプリケーションの開発・運用ができるようにすることだという。Engineが2015年8月26日、ベータ段階を終了、一般提供が開始された。毎週20億以上のコンテナを立ち上げているグーグルの経験に基づくサービスだとしている。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。