マスターでは、コンテナを管理する役割が備わっています。こういった役割を持つコンポーネントは一般的に「コントロールプレーン」と呼ばれています。
Kubernetesでは最低1台からマスターを構成できますが、3台以上のサーバでマスターを構成することを推奨しています。もし、マスターを構築したサーバが1台の環境でマシンが落ちた場合、コンテナを管理できなくなってしまうためです。
ノードは、マスターの下で指示されたコンテナを実行する役割が備わっています。こういった機能を持つコンポーネントを一般的に「データプレーン」といいます。
ノードもマスターと同様、最低1台から構成できますが、Kubernetesでは2台以上のサーバでノードを構成することを推奨しています。
マスターとノードをまとめると、推奨要件でKubernetesを運用するには5台以上のサーバが必要です。サービスを運用するためには、さらに多くのサーバが必要になります。検証段階で、5台以上の物理サーバを用意することは難しいため、利用している企業は仮想マシンで実行したり、下記のような工夫を行ったりしているようです。
この部分については、次回以降解説します。
Kubernetes内部の役割分担について説明しましたが、Kubernetesの基本的な機能は、マスターにあるサービスで説明できます。連載第2回で紹介したKubernetesを活用した場合のサーバ機能についての図を再度掲載します。
Kubernetesを利用する際に必要な上記の基本機能は、下記4つのサービスコンポーネントで構成されています。
それ以外の機能は、別途その機能を持つコンテナを実行したり、上記の各サービスで呼び出される定義やコントローラーを実装したりすることで提供されています。なるべく基本要素を増やさず、シンプルな構成でさまざまな要素に機能しようとしているわけです。
サービスコンポーネントが提供しているKubernetesの各種機能とLinuxでの機能を比べてみましょう。さらに、Webサービスを提供するサーバの管理には以下のような機能が必要です。Kubernetesにはどのような機能が用意されているかも含めて説明します。
Kubernetesでは「プロセスの管理=コンテナの管理」になります。Linuxがプロセスを終了するまで管理するように、Kubernetesはコンテナが起動してから終了するまでを管理できます。
Kubernetesでは、コンテナをどこのホストでいつ実行するか、実行優先度をどうするかなどを管理できます。
Kubernetesでは、コンテナ1つに割り当てるCPUやメモリの上限と下限を指定して管理できます。
Kubernetesの場合、コンテナが永続的なものではないため、OSに付いている「ディスク」のような概念はありません。しかし、それではサービスを運用する際の永続データ領域や一時保存領域などがなくなってしまうため、「Volume」「PersistentVolume」といった機構を用意して、永続データや一次保存領域を確保できます。
Linuxのログインとは異なり、Kubernetesでは、コンテナを操作できるかどうかの権限を用意しています。もっと詳細に説明したいところですが、ここでは割愛します。
Kubernetesでは、コンテナを「Pod」というオブジェクトで管理します。各Podに対してIPアドレスを割り当て、Linuxの「iptables」のように接続許可、拒否ができます。
Kubernetesでは、Linuxの「Cron」のように定期的な起動を行う「CronJob」とタスクの実行回数と並列数を指定して実行する「Job」があります。
Kubernetesでは、コンテナ自体がパッケージです。そのコンテナを起動するマニフェストを汎用化して利用しやすくする「Helm」というパッケージマネージャーがスタンダードとなっています。
Kubernetesでは、コンテナから出力されるログを集約する仕組みがあります。基本的に標準出力と標準エラー出力を収集するため、コンテナが稼働しているときに出力された標準出力と標準エラー出力のログしか収集できません。そのため、ログ集約ツールの「Fluentd」を活用したり、エージェントを立ち上げてログファイルを転送したりするなど、コンテナの状態と関係なくログを収集する仕組みを各自で構築することが多いようです。
先述した主要機能をどのように動作させるかを示す設定ファイルは、Kubernetesの場合、Dockerコンテナイメージではなく「ConfigMap」で外部に持つことができます。
以上のように、KubernetesはLinuxと似たような機構を持っています。続いて、サービスを提供するために必要な機能は、どのようなものかを見ていきましょう。
Copyright © ITmedia, Inc. All Rights Reserved.