Trending keywords: security, cloud, container,

Kubernetes クラスターとは? 仕組みとインストール・管理方法を解説

SHARE:

一般的にKubernetes クラスターは、最新のクラウド環境の数々で基本要素となっています。簡単に言えば、各クラスターで一連のマシンを連携させて、ワークロードをの利用を実現する要素です。

この記事では 初心者向けに、Kubernetes クラスターの仕組み、インストール方法、管理方法を詳しく説明します。

関 連 記 事

Kubernetesとは?Kubernetesセキュリティ
の基礎
Kubernetesアーキテクチャの
設計方法
AWSのEKS
(Elastic Kubernetes Service)
Kubernetesの
クラスターとは?
 
Kubernetes のノードとは?
KubernetesのPodとは?KubernetesのHelmとは?クラウドセキュリティと
ランタイムインサイト

Kubernetes クラスターとは

Kubernetesクラスターとは、ワークロードをホストする一連のノードで構成されるグループのことです。クラスターでは Kubernetes自体もホストします。つまり、Kubernetesのコントロールプレーンソフトウェアを実行している形です。

各ノードは独立した物理マシンまたは仮想マシンとなります。クラスターは物理マシンと仮想マシンの組み合わせで構成されている場合もありますが、VM のみ、あるいは物理サーバーのみを使用する方が一般的です。

クラスターの一部のノードはマスターとして稼働し、その他のノードやそこにデプロイされたワークロードを管理する Kubernetes コントロールプレーンソフトウェアをホストします。その他のノードとはワーカーノードであり、ここで管理者が Kubernetes 経由で実行するアプリケーションをホストします。

Kubernetes クラスターが重要な理由

Kubernetes ではクラスターを中心に機能が構築されています。その目的は、Kubernetes の中核として、複数のサーバーにデプロイされているアプリケーションを一度に管理するための、ほぼ自動化された信頼性の高い手段を提供することにあります。したがって、Kubernetes を単一のサーバー、つまりノードを 1 つだけ構成したクラスターで実行することもできますが、Kubernetes の機能をフル活用するにはクラスターで複数のノードを構成する必要があります。

クラスターで複数のノードを構成すると、使用するリソースをサーバー間で分散させる形でワークロードを割り当てることができます。また、あるノードで障害が生じたりノードが利用不可となったりしても、ワークロードを別のノードに移動させることができます。

クラスターに配置できるノード数

クラスター内で実行できるノードの合計は、1 つから最大 5,000 です。これは現時点で公表されているノード数の上限ですが、実際には合計が 500 を超えるとノードを信頼できる状態で管理するのが難しくなる可能性があります。

単一ノードのクラスターは、一般に試験的な用途にのみ使用されます。たとえば、Kubernetes の使用を開始したばかりで、Minikube などの軽量のディストリビューションを使用している場合、通常はまず単一ノードのクラスターを作成します。

ただし、本番環境の場合はほぼ確実に、クラスターに最低でも複数、場合によっては数百や数千のノードが必要になります。1 つのクラスターで作成するノードの合計数は、実行するワークロードの数によって異なります。また、これらのワークロードで必要なリソースの数や、各ノードの信頼性も考慮する必要があります。

Kubernetes クラスターの設定方法

Kubernetes クラスターを適切に構成するプロセスは、使用している Kubernetes のディストリビューションと、デプロイする場所に応じて異なりますが、一般的な手順は以下のとおりです。

  • ノードを作成する:  まず、ノードとして使用する物理サーバーまたは仮想マシンを設定します。
    • 各ノードのプロビジョニングにはオペレーティングシステムを使用する必要があり、大半の場合、いずれかの Linux ディストリビューションになります。
    • ノードごとにコンテナランタイムも必要です。コンテナランタイムは、コンテナを実行するソフトウェアであり、Pod を実行できます。
  • Kubernetes のコントロールプレーンをデプロイする:  マスターノードに、Kubernetes のコントロールプレーンのコンポーネント(APIサーバー、スケジューラ、etcd のキー/値ストアなど)をデプロイします。
  • クラスターにワーカーノードを追加する:  マスターノードにワーカーノードを接続して、クラスターにワーカーノードを追加します。一般的に、接続対象のノードに対して kubeadm join コマンドを実行して追加します。

Kubernetes クラスターのインストール方法

クラスターのインストールと聞くと尻込みしてしまいますが、実際難しいので仕方ありません。経験を積んだ管理者であっても、本番環境グレードの Kubernetes クラスターを設定するには手間取ります。

ですが、クラスターの設定を簡素化する方法はいくつかあります。ノードやクラスターの設定タスクの大半を自動化できる軽量のディストリビューションを使用することも、クラスターを自動的に構築するクラウドのマネージドサービスを利用して Kubernetes を実行することもできます。
ここでは、Kubernetesクラスターをインストールする最も簡単な方法として、この両方のアプローチを見ていきましょう。

軽量の Kubernetes クラスターを設定する

Minikube MicroK8s など軽量の Kubernetes ディストリビューションの多くでは、ノードの作成とクラスターへの追加が自動的に行われます。

たとえば Minikube では、次のコマンドを使用してクラスターを作成できます。

minikube start

このコマンドを実行すると、クラスターの作成と起動が行われます。Minikube はデフォルトで、単一ノードのクラスターを作成します。使用する Minikube ドライバに応じて、ノードは VM として、または Minikube を実行している同じマシンとして実行されます。

クラウドで Kubernetes クラスターを設定する

クラウドベースの Kubernetes サービス(Amazon Elastic Kubernetes ServiceAzure Kubernetes ServiceGoogle Kubernetes Engine など)の多くでは、クラウドベースの VM インスタンスを使用してクラスターを自動的に設定できます。

たとえば、Amazonクラウドにクラスターを作成する場合は、AmazonのKubernetes CLI管理ツールであるEKSを使用して、次のコマンドを実行します。

eksctl create cluster

デフォルトでは、このコマンドで 2 つのノードからなるクラスターが作成されます。これらのノードは EC2 インスタンスであり、デフォルトで使用している AWS クラウドリージョンで実行されます。

クラウドベースの Kubernetes サービスでクラスターを自動設定する必要はありません。大抵の場合、必要であればノードを手動で作成、管理できます。ただし、クラウドでクラスターの設定を自動化すれば、とても簡単かつ速やかにクラスターの運用を始められます。その一方で、ノードで使用されるクラウドリソースのコストが高くなるというデメリットもあります。

マルチクラスターの Kubernetes

初期の Kubernetes は、「1 つの環境で運用するクラスターは 1 つのみ」という前提で設計されていました。

しかし現在では、Kubernetes のマルチクラスター構成に対する関心が高まっています。Kubernetes のマルチクラスター構成では、単一のコントロールプレーンで複数のクラスターを管理します。つまり、サーバー上の複数のクラスターを個別に、他のクラスターとは分けて稼働させながら、1 つのコントロールプレーンソフトウェアだけで、すべてのクラスターを管理できます。

マルチクラスター環境の利点は、ワークロードを可能な限り分離させた状態で運用できることです。これにより、1 つのクラスターで発生したセキュリティや安定性に関する問題が波及し、他のクラスターでホストされたワークロードを停止させるリスクを最小限にできます。

さらに、マルチクラスター構成の場合、サーバーで複数のクラスターを個々に稼働させて一元管理する必要がある環境で、管理の複雑さを軽減することができます。たとえば、複数の各データセンターでクラスターを個別に運用しながら、1 つのコントロールプレーンですべてのクラスターを管理するとします。マルチクラスターを適切に構成できれば、管理上の負荷が軽減され、データセンターごとにコントロールプレーンをデプロイして管理する必要がなくなります。

ただし、Kubernetes のマルチクラスター構成にはデメリットもあります。それは、設定と管理がシングルクラスター構成と比べて大幅に難しくなることです。特に、マルチクラスター環境では次の 2 つの大きな課題があります:

  • 各クラスター用のネットワークリソースを管理するための一貫した方法を確立する。物理的に複数の拠点にクラスターをデプロイしているため、IP アドレスやルーティングなどの構成が異なるさまざまなネットワークを運用しなければならない環境で特に難しい課題となります。
  • コントロールプレーンのデータを複数のクラスター間で同期する方法を見つける。これも物理的に複数の拠点にクラスターをデプロイしている場合は非常に難しい課題です。ネットワークで遅延が生じると、各クラスターを追跡するコントロールプレーンのコンポーネントを完全に同期することが難しくなります。わずか数秒のずれであっても、コントロールプレーンで環境全体の実際の状態を把握できなければ何かしらの問題につながる可能性があります。

こうした課題には、Virtual Kubelet のようなツールを使用することで、問題なく対処できます。とはいえ、Kubernetes が元々複雑であることに加えて、他にもさまざまな複雑な点が存在します。こうした理由から、マルチクラスター構成は気軽には取り組めないのです。

複数のクラスターを使用する具体的なニーズがなければ、ネームスペースをいくつか構成してワークロードを個別に運用するのが簡単なアプローチです。ネームスペースは、マルチクラスター構成よりも Kubernetes で簡単に設定、管理できます。

まとめ

Kubernetes でのクラスターの設定と管理には数々の方法があります。Kubernetes を使い始めたばかりで、試験的に使用してみたい場合は、自分の PC やノートパソコンに単一ノードのクラスターを作成することを検討してください。

ただし本番環境のワークロードの場合は、ワークロードの要件に応じて、クラスターのアーキテクチャとノードの合計数を慎重に計画する必要があります。適切な条件を見極めることが大切です。