Kubernetes(K8s)は、コンテナ化されたアプリケーションのデプロイと運用における事実上の標準となっているオープンソースのコンテナオーケストレーションシステムです。ソフトウェアのデプロイ、スケーリング、管理を自動化するよう設計されており、コンテナオーケストレーションを自動化することで、ビジネスの信頼性を高め、時間とリソースを削減します。
Kubernetesは、2014年にGoogleのJoe Bred、Brendan Burns、Craig McLuckieによって当初設計され、最初のバージョンであるKubernetes 1.0は2015年7月21日にリリースされました。現在はCloud Native Computing Foundationが保守しています。
Kubernetesの全体像と、コンテナ化分野における位置付けについて、以下で詳しく説明します。
Kubernetesとコンテナオーケストレーション市場
世界のコンテナオーケストレーション市場の価値は、2021年に4億5,400万ドルと推定され、2022年から2027年にかけて年平均成長率(CAGR)16.62%で成長し、2027年には17.8億ドルに達すると予測されています。
Kubernetesは、コンテナオーケストレーションプラットフォーム向けサービスの市場リーダーであり、広く受け入れられています。Google Kubernetes Engine(GKE)は、世界のコンテナオーケストレーション市場で重要な役割を果たしており、市場シェアは12.82%です。
Kubernetesの主な機能
Kubernetesは、豊富な機能を備えたコンテナ中心の管理ソフトウェアです。主な機能は以下のとおりです。
ロールアウトと運用の自動化
Kubernetesの自動運用により、アプリケーションをユーザーの意図どおりに常時稼働させることができます。アプリケーションの健全性を監視しながら、ユーザーのアプリケーションや設定への変更を段階的に適用します。問題が発生した場合、Kubernetesは変更をロールバックします。Kubernetesには、アプリケーション管理に伴う多くの煩雑な作業を処理するための組み込みコマンドも用意されています。
インフラストラクチャとストレージのオーケストレーション
Kubernetesはコンピューティング、ネットワーク、ストレージを処理することで、開発者がアプリケーションに集中できるようにします。ローカルストレージ、GCPやAWSなどのパブリッククラウドプロバイダー、NFS、iSCSI、Gluster、Ceph、Cinder、Flockerなどのネットワークストレージシステムを問わず、ユーザーが選択したストレージシステムを自動的にマウントできます。Kubernetesの永続ボリュームは、ストレージの利用方法に基づいてストレージの提供方法の詳細を抽象化し、ストレージ管理を支援するAPIをユーザーと管理者に提供します。
リソース管理
Podとコンテナのリソース管理は、CPUやメモリなど複数の主要リソースを管理する重要なタスクです。このプロセスでは、ユーザーがPodと、コンテナに必要なリソース量を指定します。するとKube-schedulerはこの情報に基づいてPodを配置するノードを決定し、制限を適用します。そのため、実行中のコンテナは制限内でリソースを使用できます。
Kubernetesのユースケース
Kubernetesは、規模を問わずさまざまな組織の多様なユーザーにコンテナオーケストレーションを提供する、広く利用されているソフトウェアプラットフォームです。
「Kubernetesは、必要なスケジューリング機能とスケーラビリティをすべて備えているため、機械学習に最適なプラットフォームです。私たちはKubernetesのコアサーバーを構築し、Kubeflowをデプロイして、実験全体をオーケストレーションしました。その結果、本当に素晴らしい成功を収めることができました」—Jérémie Vallée、AI infrastructure lead、Babylon
「多くの部門で利用されており、毎日のように利用部門が増えています。私のチームは、マイクロサービスのデプロイにKubernetes 8を利用した最初期のチームの1つでした。HDHAアプリケーションの問題や、アジャイル開発、ダウンタイムのないローリングデプロイに対応できます。また、spring boot adminと組み合わせたサービスディスカバリーも利用し、クラスター内の全ノードについてノードレベルの詳細情報を提供しています」—Jake Luby、lead engineer、Target
「今後数年のうちに、コンテナを実行したいと思ったとき、誰もKubernetesについてそれほど考えなくなるでしょう。Kubernetesが第一の選択肢になります。TicketmasterやGoogleのような非常に大きな企業は正しく活用していますし、スタートアップも正しく活用しています。スタートアップのほうが動きが速いからです」—Martin Danielsson、solution architect、Haufe Group
Kubernetesの差別化要因
Kubernetesの中核機能により、組織はデプロイを自動化し、コンテナのライフサイクルを管理し、開発者はクラスター間でコンテナを作成・監視できるようになります。Kubernetesの主な差別化要因は以下のとおりです。
水平スケーリングと自己修復
HorizontalPodAutoscalerはワークロードリソースを自動的に更新します。水平スケーリングは、負荷の増加に応じてPodを追加でデプロイするための仕組みです。Kubernetesでは、単純なコマンドでアプリケーションをスケールアップおよびスケールダウンできます。Kubernetesの自己修復機能は、障害が発生したコンテナを再起動し、ノードが停止した際にはコンテナを置き換えて再スケジュールします。また、ユーザー定義のヘルスチェックに応答しないコンテナを停止し、準備が整うまで障害コンテナをクライアントに通知しません。
サービスディスカバリーとロードバランシング
Kubernetesは、サービスディスカバリーとロードバランシングによって追加作業を削減します。ユーザーは、なじみのないサービスディスカバリー機構を利用するためにアプリケーションを変更する必要がありません。KubernetesはPodにIPアドレスを割り当て、Podの集合に単一のDNS名を付与し、それらの間で負荷分散を行えます。さらに、Podは永続的なリソースではなく、ユーザーがクラスターに望む状態に合わせて作成・破棄できます。
Kubernetes Secret
Kubernetes SecretはConfigMapに似ていますが、機密データを保持することを目的としています。Secretには、パスワード、トークン、キーなど少量の機密データが含まれます。ユーザーは、イメージを再ビルドしたり、スタック設定でSecretを公開したりすることなく、Secretとアプリケーション設定をデプロイおよび更新できます。また、Secretは独立して作成でき、クラスターで実行されるアプリケーションもSecretに対して追加の対策を講じることができます。
Kubernetesのユーザーレビュー
Kubernetesは、複数のユーザーレビューサイトでおおむね肯定的な評価と推奨を受けています。G2ではKubernetesの評価は5点満点中4.5点、TrustRadiusでは10点満点中8.9点です。さらに、PeerSpotでは5点満点中4.2点となっています。
また、Gartner Peer Insightsによるユーザー評価は以下のとおりです。
- Platform9 Managed Kubernetes:5点満点中4.5点、91%が推奨する意向
- VMware Tanzu Kubernetes Grid:5点満点中4.5点、75%が推奨する意向
- IBM Cloud Kubernetes Service:5点満点中3.5点、50%が推奨する意向
Kubernetesプロバイダー
Kubernetesはオープンソースのコンテナオーケストレーションシステムです。以下のように、Kubernetesベースのプラットフォームや、KubernetesをデプロイするInfrastructure as a Service(IaaS)を提供している企業が複数あります。
- Google Cloud
- AWS
- IBM
- Microsoft
- Oracle
- Red Hat
- Platform9
- SUSE
- VMware
まとめ
適切なコンテナオーケストレーションサービスは、アプリケーションの機能を強化し、組織がビジネス目標を達成するのを支援します。ユーザーは、自組織にどのようなコンテナ化機能が必要なのか、またそのためにいくら支払うつもりなのかを理解する必要があります。
Kubernetesは、スケーラブルな方法でアプリケーションを管理・デプロイでき、ワークロードをクラウドへ簡単かつ迅速に移行できます。デプロイ設定は、記述と理解が容易なコードとして定義されます。運用コストを抑えながら高いセキュリティを実現し、便利なツールによって小規模から大規模までの開発チームのパフォーマンスを向上させます。Kubernetesは、あらゆる企業にとって有力な選択肢となり得ます。