1.1.1.1 マスター・ノード

マスター・ノードはクラスタ管理の役割を果たし、Kubernetesクラスタ内のリソースの構成と管理に使用するAPIを提供します。Kubernetesマスター・ノードのコンポーネントは、専用ポッド内のコンテナのセットとしてKubernetes自体で実行されます。こうしたコンポーネントは、高可用性(HA)マスター・ノード機能を実現するためにレプリケートできます。

マスター・ノードに必要なコンポーネントは次のとおりです。

  • API Server (kube-apiserver): Kubernetes REST APIは、API Serverによって公開されます。このコンポーネントは、操作の処理と検証を実行し、ワーカー・ノードの操作をトリガーするためにCluster State Storeの情報を更新します。APIはクラスタへのゲートウェイでもあります。

  • Cluster State Store (etcd): クラスタ状態に関連する構成データはCluster State Storeに保存されます。ここから、調整コンポーネント(Controller ManagerやSchedulerなど)に変更をロールアウトできます。このクラスタ・コンポーネントに保存されたデータに適したバックアップ計画を用意することが重要です。

  • Cluster Controller Manager (kube-controller-manager): このマネージャは、Cluster State StoreとAPI Serverからの入力に基づいて、多数のクラスタレベルの機能とアプリケーション管理を実行するために使用します。

  • Scheduler (kube-scheduler): Schedulerは、リソースの可用性、サービスの品質およびアフィニティとアンチアフィニティの指定内容を監視することで、コンテナを実行する必要のある状況の自動的な決定を処理します。

通常、マスター・ノードはクラスタ内のワーカー・ノードとしても構成されています。そのため、マスター・ノードでは標準的なノードのサービス(kubeletサービス、コンテナ・ランタイム、kubeプロキシ・サービス)も実行されます。ワークロードが不適切なノードで実行されないように、ノードをテイント(taint)にすることが可能です。kubeadmユーティリティは、自動的にマスター・ノードをテイントにして、このノードでその他のワークロードやコンテナが実行されないようにします。これにより、マスター・ノードに不要な負荷がかからないようにします。また、クラスタのマスター・ノードのバックアップとリストアが簡素化されるようにもします。

一定の期間マスター・ノードが使用不能になると、クラスタ機能は一時停止しますが、ワーカー・ノードは中断することなくコンテナ・アプリケーションの実行を継続します。

単一ノードのクラスタでは、マスター・ノードがオフラインになるとAPIが使用できなくなります。そのため、環境はノードの障害に対応できなくなり、新しいリソースの作成や既存のリソースの編集または削除などの新規操作を実行する手段がなくなります。

複数のマスター・ノードを装備した高可用性クラスタでは、マスター・ノード機能に対するリクエストをより多く処理できます。また、マスター・レプリカ・ノードによる支援によって稼働時間が大幅に向上されます。