繰り返しますが、KubernetesではDocker、etcd、flannelと連携して複数ホスト間のコンテナー管理を行います。ここでは上記のそれぞれの役割について記載します。
Dockerを使用することにより単一ホスト間で複数のコンテナーを動かすことが可能になります。Dockerでは仮想ブリッジ「docker0」をゲートウェイに持つIPアドレス空間を作成し、その中でコンテナーを動かします。コンテナーは、「veth」と呼ばれる、仮想インターフェースにひも付けられるIPアドレスを付与されます。
etcdとflannelを使用することにより、複数ホスト間でのコンテナー連携が可能になります。flannelの機能は下記の2点です。
docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}
etcdとflannelは下記の段取りで使えます。
KubernetesはPodの配備、レプリケーション、Podへのリクエストのロードバランシングを行います。etcdにMinionの情報を保存して、レプリケーション機能の多重度に合わせてホストにPodの配備を行います。flannelと連携することにより複数ホストに対してPodの配備が可能になります。
また、Podの死活監視を行い、Podが異常終了した場合はPodの削除や再配備を行います。
flannelと連携しない場合は単一ホストでPodの配備を行うため、Podの多重度は常に「1」になります。そのため、flannelと連携しないKubernetesは単一ホストでのPodのオートヒーリングを行うものになります。
Kubernetesは下記の機能を持っています。GUIを持たず、CLIで各設定を行い、各機能を実行します。
複数のコンテナーをPodという単位でグルーピングし、配備/削除、起動/停止を行います。セットアップ時は、Pod作成時にPodで使用するコンテナーイメージやCPU、メモリディスクスペースを指定できます。
また、Podがどこに配備されたかを自動追尾したり、Pod単位で多重度の設定、スケールアウトを行ったりします。
kubectlコマンドを実行すると、徐々にPodが新しいイメージに入れ替わっていくように自動アップデートします。
Podの状態を監視し、異常終了した場合は再配備を行います。Kubernetesのヘルスチェックは下記の3通りがあります。
コンテナーごとのリソース値を取得する際は、cAdvisorを使用してGUI上から監視可能です。cAdvisorの詳細は、後述します。
内部的な処理ならばServiceを使用してリクエストのロードバランシングが可能です。ただし、Serviceは内部的なIPしか持たないため外部からのリクエストをロードバランシングできません。
flannelを使用してホスト間同士の連携が可能です。
Kubernetes APIの実行にユーザー認証/TSL認証を持たせることが可能です。Kubernetes API実行ログ「kube-apiserver.log」にアクセスされたAPIの履歴が残ります。ただし、誰がアクセスしたかの情報は出力されません。
Copyright © ITmedia, Inc. All Rights Reserved.