Kubernetesとは

By: IBM Services

あらゆる環境におけるコンテナ化されたアプリケーションのオーケストレーションとデプロイ

Kubernetesは、コンテナ化されたアプリケーションのデプロイメント、スケーリング、モニタリングを自動化するオープン・ソースのソリューションです。

コンテナは、基礎となるインフラストラクチャーから分離されたソフトウェアです。コンテナによって、すべてオペレーティング・システム・レベルに仮想化されます。つまり、アプリケーションは、実行する場所を問わず、同じように機能します。

現在、ほとんどのコンテナはKubernetesプラットフォーム上で動作しています。ある組織は次のように述べています。「Kubernetesはコンテナ中心の管理環境を提供し、ユーザー・ワークロードのために、コンピューティング、ネットワーキング、ストレージ・インフラストラクチャーを連携させて、インフラストラクチャー・プロバイダー間でのポータビリティーを実現します。」⁽¹⁾

Kubernetesの基本

KubernetesはGoogleから始まりました。Googleでは、エンジニアのチームがBorgというクラスター管理システムを開発していました。2014年、同社はBorgのオープン・ソース・バージョンを公開し、これをKubernetesと名付けました。⁽²⁾

Kubernetesの最初のバージョンは、分散アプリケーション用のコンテナ・オーケストレーションを提供するものとして2015年にリリースされました。このリリースと同時に、GoogleはLinux Foundationとパートナーを組んでCloud Native Computing Foundationを設立し、Kubernetesをシード技術として提供しました。⁽³⁾

Kubernetesは、開発部門がコンテナ技術に基づいてシステム間のポータビリティーを実現するのに役立つため、登場以来ますます人気が高まっています。コントリビューターは1,400社を超え、Kubernetesのオープン・ソース・コミュニティーは、今や世界最大水準の規模になっています。

最も一般的に使用されているコンテナ技術はDockerですが、Kubernetesは他のコンテナ技術もサポートしています。Dockerは、アプリケーションを実行するための要素をすべて含む標準化されたユニットにソフトウェアをパッケージするためのテンプレートを定義しました。

Kubernetesは、サーバーの使用量とスペースを最適化しながら、コンテナ環境のオーケストレーションを行います。 また、インテリジェント・スケジューリング、ロード・バランシング、スケーラビリティー、ストレージ管理、バッチ実行などの機能を使用して、コンテナをデプロイする場所と方法を管理します。

主な概念

  • Kubernetesの基本的な管理ユニットは、コンテナのポッドまたはグループです。ポッド内のコンテナは、同じストレージ、リソース、IPアドレスを共有します。
  • Kubernetesクラスターは、マスター・ノードとワーカー・ノードで構成されます(ノードは、コンテナが実行されるホストまたはサーバーで、仮想マシンの場合と物理マシンの場合があります)。
  • マスター・ノードはコンテナのワークロードを管理し、システム全体の通信を指示します。これには、パフォーマンス、容量、可用性を制御するスケジューラーが含まれています。
  • ワーカー・ノードは、マスター・ノードの指示に沿ってポッドを実行します。
  • 構成ファイルによって、チームは一度に実行できるポッド数などの稼働パラメーターを指定できます。Kubernetesを使用すると、データセンター全体のリソースを、あたかも単一のシステムであるかのように管理できます。 

KubernetesとDocker: 二者択一の関係ではありません

Kubernetesが重要である理由

大規模なエンタープライズ・アプリケーションには、多数のコンテナが含まれる場合があります。このようなアーキテクチャーは、すぐに複雑になりがちです。

組織では、できれば一元的に、コンテナ環境内にあるすべての可動部分のオーケストレーションを実行できる必要があります。多くの場合、そのソリューションとしてKubernetesが選択されます。

Kubernetesは、エコシステムの管理、およびコンピューティングとストレージの調整を通じて、コンテナを効率よくデプロイして使用できるようにします。開発部門では、任意の時点で、あらゆるものがどこにあるのかを常に把握できます。

Kubernetesは、組織内における新規アプリケーションのデプロイメントの簡素化、コンテナ管理とリソース管理の合理化、アップグレード・リスクの軽減、ダウン時間の回避に役立ちます。また、アプリケーション・コンポーネントを、個々に、あるいはグループ単位で拡張できるだけでなく、ポータブルなクラウド・ネイティブ・アプリケーションもサポートされています。 

Matt Johnsenは、自身のIBMブログに、利点の概要を以下のように記述しています。

  • コストを節減: Kubernetesクラスターは、維持するのに手間がかからないことで知られています。チームは、独自のコンテナ自動化スクリプトを書く必要はありません。共有インフラストラクチャーを活用できます。現行ハードウェアをより効果的に使用することで、ハードウェア・コストを削減できます。
  • 市場に投入するまでの時間を短縮: KubernetesはDevOpsに最適です。コンテナ管理が優れているということは、ソフトウェアが稼働している限り、デプロイメントにほとんど苦労しないことを意味します。
  • ITの柔軟性: 現代の企業では、任意の数のプライベート・インフラストラクチャーおよび共有インフラストラクチャーでソフトウェアが実行されます。コンテナ管理ソリューションを使用すれば、チームがパフォーマンスを犠牲にすることもなく、アプリケーションの移動時に大きな調整を行う必要もありません。業務で必要なあらゆる場所で、ソフトウェアを実行できます。

Kubernetesのもう1つの利点は水平スケーリングであり、変化し続けるパフォーマンス需要への対応に寄与します。

「既にアプリケーションでDockerとコンテナを活用している場合は、それらをKubernetesに移行すると、アプリケーションを拡張する際に大半のアプリケーションで発生する稼働オーバーヘッドへの対処にとても役立ちます」とIBM開発者アドボケートのSai Vennamは述べています。

Kubernetes as a service

組織は社内のKubernetesシステムを使用して、コンテナ・デプロイメントのオーケストレーションを行うことができます。一方、サービス・プロバイダーは、KubernetesベースのプラットフォームまたはInfrastructure as a Serviceを提供できます。

お客様は、同じ機能を利用できますが、複雑さとオーバーヘッドは少なくなります。IBM Cloudのバイス・プレジデント兼IBMフェローであるJason McGeeは、次のように述べています。

「機能しているコンテナ・クラスターにリソースのコレクションをインストール、接続、構成するためのメカニズムは簡単ではありません。労力だけでなく、知識が必要です。コンテナ環境に容量の追加や削除が必要な場合は、どうしますか。障害が発生した場合は、どうやって復旧させますか。コンテナとKubernetesもまた、激しく変化しています。」

「自社で対処する場合、変化についていくのは困難です。マネージド・サービスの利点の1つとして、先に述べたすべての作業がお客様に代わって実行され、お客様は自社アプリケーションだけに集中できます。」⁽⁴⁾

IBMなどのマネージド・サービス・プロバイダーは、ノード・クラスターごとに、コンピューティング、ネットワーク、ストレージの各リソースを処理します。IBMサービスは、インテリジェント・スケジューリング、簡素化されたクラスター管理、コンテナ・セキュリティーと分離ポリシー、インフラストラクチャーのアップグレードを提供します。

IBMのお客様は、ベアメタル・クラウド・インフラストラクチャーでKubernetesサービスを使用することもできます。これにより、機械学習やAIのワークロードなど、非常に高度なコンピューティング・パフォーマンスを必要とするアプリケーションに俊敏性とスピードがもたらされます。

「開発者は、ニーズがどのようなものであっても(分離、処理能力の強化、大容量のローカル・ディスク・ストレージなど)、ニーズに合ったベアメタル・マシン構成を選択できるようになりました。もちろん、システム間でのデータの容易な移動や、複数のチーム・メンバーが1つのアプリケーションのさまざまな部分を同時に作業できるといったコンテナの利点を活かせます」とMcGeeは語ります。

The Weather Company社はWebサービスを拡大して人々の安全を維持

 

Kubernetesの参考資料

コンテナとは何か、コンテナを必要とする理由

コンテナとは何か、なぜ組織がコンテナを使用するのかについて説明します。

Kubernetesの採用とアプリケーション・パフォーマンス管理の重要性

Kubernetesベースのクラウド環境が多くの企業にとって革新的である理由をご覧ください。

Kubernetesと Docker: 双方の利点

KubernetesとDockerの違いについて説明します。

IBMはベアメタル上で管理されたマネージドKubernetesを使用して、複雑なワークロードにコンテナの容易さを提供

ベアメタル・クラウド・インフラストラクチャー上でのマネージド・サービスとしてKubernetesコンテナを実行することのメリットを探ります。

Watsonから学ぶ: コンテナによるAIワークロードのスケーリング

AIワークロードには違いがあり、クラウドが適している理由をご覧ください。

Outlyerを用いたIBMクラウド・サービスのモニタリング

IBM Cloud KubernetesサービスでOutlyerのセルフサービス・モニタリングを使用することの利点について説明します。

主なサービス

IBM Kubernetesクラウド・サービス

 

1. https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

2. https://blog.risingstack.com/the-history-of-kubernetes/

3. https://en.wikipedia.org/wiki/Kubernetes

4. https://softwareengineeringdaily.com/2017/11/29/how-ibm-runs-its-cloud-with-jason-mcgee/