Kubernetes(「K8s」とも示されます)は、オープンソースのソフトウェア プラットフォームで、コンテナの管理に使用されます。Kubernetes の自動化機能を利用することで、大規模なコンテナベースのアプリケーションをデプロイする際に、手動のエンジニアリング作業を軽減できます。
Kubernetes は、アプリケーションとインフラストラクチャの両方の要件に対応しながら場所に依存しないため、利用することで運用がシンプルになります。
コンテナ化されたアプリケーションが必ず Kubernetes を利用しなければならないわけではありませんが、Kubernetes の一元化されたコントロールプレーンにより、コンテナと関連するインフラストラクチャ サービスを個別に管理する必要がなくなるため、運用がシンプルになって時間を短縮できます。
最新のアプリケーションが数十または数百のコンテナで構成される可能性があることを考えると、オーケストレータなしで大規模に展開することの問題は明らかです。
Kubernetes は、アプリケーションのライフサイクル全体で一貫した共有環境を維持できるため、DevOps チームと IT 運用チームにとって大きなメリットがあります。
Kubernetes のもう 1 つのメリットは、アプリケーションを移植しやすいという点です。コンテナ化されたアプリケーションは、オンプレミスのデータセンター、エッジ、パブリッククラウドのいずれの Kubernetes プラットフォームでも実行できます。そのためユーザーは、パフォーマンス、データの重要度、コンプライアンス要件などのビジネスニーズに基づいて、アプリケーションを実行するのに最適な場所を選択できます。
Kubernetes は、複数のノードで構成されたクラスタとして設計されていて、ノード上のコンテナは Pod にデプロイされます。
各 Pod には、1 つ以上のコンテナを含めることができます。Pod には、イメージ参照先、メモリ、CPU、ストレージ、ネットワークに関する要件など、コンテナの実行方法が定義されています。
各クラスタには、マスターノードとワーカーノードが含まれています。マスターノード(複数の場合もあり)は、どのワーカーノードでどの Pod を実行するかを決定したり、アプリケーションの望ましい状態を維持したりするなど、すべてのアクティビティを計画します。スケーリングや新しい更新のロールアウトなどのスケジュールも策定します。
アプリケーションはワーカーノードにデプロイされます。各クラスタ内には複数のワーカーノードが存在する場合があります。ワーカーノードを自動的に拡大/縮小することで、クラスタ内のキャパシティを追加/削除することができます。
マスターノードとワーカーノードのいずれも、仮想マシンまたはベアメタルサーバーとして展開できます。
Kubernetes は、さまざまな場所の異なるインフラストラクチャを利用することが多い多層分散システムを考慮しているため、ネットワーキングは、アーキテクチャの重要な機能の 1 つです。
ノード、Pod、コンテナ、アプリケーションなど、Kubernetes のさまざまなコンストラクトには、それぞれ独自の通信要件があります。
Kubernetes では、Container Network Interface(CNI)仕様に基づいてこのネットワークモデルを実装しています。CNI では、サードパーティがインターフェイスを開発することで、Kubernetes のネットワーキング機能にベンダー固有の機能を追加できます。
シスコの製品/ソリューションおよび Kubernetes の詳細をご確認ください。