世界で最も人気のあるオープンソースのコンテナ・オーケストレーション・プラットフォームであるKubernetes は、クラウドネイティブ・テクノロジーの歴史における大きなマイルストーンであると考えられています。Google社内で開発され、2014年に一般公開されたKubernetesにより、組織は従来のITインフラストラクチャーから脱却し、コンテナ化されたアプリケーション(またはマイクロサービス)の導入、スケーリング、管理に関連する運用タスクの自動化に移行できるようになりました。Kubernetesはコンテナ管理の事実上の標準となっていますが、多くの企業がこのテクノロジーをより広範なユースケースに活用しています。
コンテナは、コードとそのすべての依存関係をパッケージ化してあらゆる環境で実行できる軽量のソフトウェア・ユニットであり、Kubernetesの基盤を形成し、最新のマイクロサービス、クラウドネイティブ・ソフトウェア、DevOpsのワークフローにとって極めて重要な要素です。
Dockerは、コンテナ化されたアプリケーションの構築、展開、管理を普及させた最初のオープンソース・ソフトウェア・ツールです。しかし、Dockerには自動化された「オーケストレーション」ツールがないため、データサイエンスチームがアプリケーションを拡張するのに時間がかかり、複雑な作業となっていました。Kubernetes(K8sとも呼ばれます)は、コンテナ化されたアプリケーションの管理を自動化することで、これらの課題に対処するために特別に開発されたものです。
大きく言うと、Kubernetesオーケストレーション・プラットフォームは、ポッドとノードを備えたコンテナを介して実行されます。ポッドは1つ以上のLinuxコンテナを操作し、スケーリングと障害耐性のために複数で実行できます。ノードはポッドを実行し、通常はKubernetesクラスターにグループ化され、基盤となる物理ハードウェアリソースを抽象化します。
Kubernetesの宣言型でAPI駆動型のインフラストラクチャーにより、DevOpsやその他のチームは手動でのプロセスから解放され、より独立して効率的に作業して目標を達成できるようになりました。2015年、Google社は、クラウド・ネイティブ・コンピューティングのオープン・ソースかつベンダー中立のハブであるCloud Native Computing Foundation(CNCF)にKubernetesを寄贈しました。
今日、Kubernetesは、Dockerや基本的に他の種類のコンテナ・ランタイムを管理するために本番環境で広く使用されています。Dockerには独自のオーケストレーション・ツールが含まれていますが、ほとんどの開発者はKubernetesコンテナ・オーケストレーションを選択しています。
オープンソース・システムであるKubernetes Serviceは、IBM、Microsoft Azure、Googleなど、すべての主要パブリッククラウド・プロバイダーによってサポートされています。Kubernetesは、プライベートクラウド、ハイブリッドクラウド、エッジ環境において、ホストOSがLinuxまたはWindowsのバージョンであれば、Bare Metal Serverや仮想マシン上でも実行できます。
KubernetesがITインフラストラクチャーをどのように変革しているかを明らかにする、上位6のKubernetesユースケースの概要をご覧ください。
トラフィック量の多いWebサイトやクラウド・コンピューティング・アプリケーションは、毎日何百万ものユーザー・リクエストを受け取っています。大規模なクラウド・アプリのデプロイメントにKubernetesを活用する主なメリットは、自動スケーリングです。このプロセスにより、アプリケーションは自動的にニーズの変化に応じて調整し、スピードと効率性を維持し、ダウンタイムを最小限に抑えることができます。たとえば、ニーズが変動しても、Kubernetesを使用することで、アプリケーションを継続的に稼働させて、Webトラフィック・パターンの変化に対応できます。これにより、オーバー・プロビジョニングやアンダー・プロビジョニングを回避して、適切な量のワークロード・リソースを維持できます。
Kubernetesは、 ポッドの水平自動スケーリング(HPA)を採用して、特定のデプロイメントに関連するポッド・レプリカ(自己修復を容易にするクローン)の数をスケーリングすることにより、 ロード・バランシング(CPU使用率またはカスタム・メトリクス)を実行します。これにより、トラフィックの急増、ハードウェアの問題、ネットワークの中断などの潜在的な問題が軽減されます。
注:HPAをKubernetesの垂直ポッド自動スケーリング(VPA)と混同しないでください。VPAは、ワークロード用にすでに実行されているポッドにメモリやCPUなどの追加リソースを割り当てます。
政府、科学、金融、エンジニアリングなどの分野は、ビッグデータを処理して複雑な計算を実行するテクノロジーであるハイパフォーマンス・コンピューティング(HPC)に大きく依存しています。HPCは、強力なプロセッサーを高速で使用して、データに基づいた意思決定を瞬時に行います。HPCの実際の活用例には、株式取引の自動化、天気予報、DNAシーケンシング、航空機の飛行シミュレーションなどがあります。
HPCの負荷が高い業界ではKubernetesを使用して、ハイブリッド環境やマルチクラウド環境全体でのHPC計算の分散を管理しています。Kubernetesは、高性能コンピューティング・ワークロードに関連するバッチ・ジョブ処理をサポートする柔軟なツールとしても機能し、データとコードの移植性を向上させます。
人工知能(AI)および機械学習(ML)システムの構築と展開には、膨大な量のデータと、高性能コンピューティングやビッグデータ分析などの複雑なプロセスが必要です。Kubernetesに機械学習をデプロイすると、組織はMLライフサイクルの管理とスケーリングを自動化しやすくなり、手動介入の必要性が減ります。
例えば、Kubernetesでコンテナ化されたオーケストレーション・プラットフォームは、正常性チェックやリソース・プランニングなど、AIとMLの予知保全ワークフローの一部を自動化できます。また、Kubernetesは、ユーザーのニーズに合わせてMLワークロードをスケールアップまたはスケールダウンし、リソース使用量を調整し、コストを制御できます。
機械学習は、テキスト分類、感情分析、機械翻訳などの高レベルの自然言語処理(NLP)を実行するために大規模な言語モデルに依存しており、Kubernetesは大規模な言語モデルの展開を高速化してNLPプロセスを自動化するのに役立ちます。ますます多くの組織が生成AIに注目するにつれて、Kubernetesを活用して生成AIモデルを実行および拡張し、高可用性とフォールト・トレランスを実現しています。
全体として、Kubernetesは、MLおよび生成AIモデルのトレーニング、テスト、スケジュール、デプロイに必要な柔軟性、移植性、拡張性を提供します。
マイクロサービス(またはマイクロサービス・アーキテクチャー)は、各アプリケーションが多数の疎結合された、個別にデプロイ可能な小さなコンポーネントまたはサービスで構成される、最新のクラウドネイティブ・アーキテクチャー・アプローチを提供します。たとえば、大規模な小売EコマースWebサイトは、多くのマイクロサービスで構成されています。これらには通常、注文サービス、決済サービス、配送サービス、カスタマー・サービスが含まれます。各サービスには独自のREST APIがあり、他のサービスはそれを使用して通信します。
Kubernetesは、マイクロサービス・アーキテクチャー内で同時に実行されるすべての独立したコンポーネントを管理する際の複雑さに対処できるように設計されています。たとえば、Kubernetes に組み込まれている高可用性(HA)により、障害が発生した場合でも継続的な運用が保証されます。また、コンテナ化されたアプリまたはアプリケーション・コンポーネントがダウンすると、Kubernetesの自己修復機能が起動します。自己修復機能は、望ましい状態に合わせてアプリまたはアプリケーション・コンポーネントを即座に再デプロイできるため、稼働時間と信頼性を維持できます。
Kubernetes はどこでも使用できるように構築されているため、組織はオンプレミスからハイブリッドクラウドやマルチクラウド環境にアプリケーションを簡単に移行できます。Kubernetesは、効果的なアプリのデプロイメントのための組み込みコマンドをソフトウェア開発者に提供し、移行を標準化します。Kubernetesは、アプリへの変更をロールアウトし、環境要件に応じてスケールアップおよびスケールダウンすることもできます。
Kubernetesは、アプリケーションからインフラストラクチャーの詳細を抽象化するため、オンプレミス環境とクラウド環境間での移植性を提供します。これにより、プラットフォーム固有のアプリの依存関係の必要がなくなり、最小限の労力で、異なるクラウド・プロバイダーまたはデータセンター間でアプリケーションを簡単に移動できるようになります。
DevOpsチームにとって、アプリケーションを迅速に更新してデプロイできることは、ビジネスの成功に不可欠です。Kubernetesは、全体的なアジリティーを向上させるためのソフトウェア・システム開発とメンテナンスの両方を提供します。また、KubernetesのAPIインターフェースにより、ソフトウェア開発者やその他のDevOps関係者は、コンテナ・エコシステムを簡単に表示、アクセス、デプロイ、更新、最適化できます。
CI/CD(継続的インテグレーション(CI)と継続的デリバリー(CD)の略)は、ソフトウェア開発の重要な要素となっています。DevOpsでは、CI/CDはチームに作業を保存するための単一リポジトリと自動化ツールを提供することで、アプリケーションのコーディング、テスト、デプロイを最適化します。これにより、コードを一貫して組み合わせてテストし、機能することを確認することができます。Kubernetesは、クラウド・インフラストラクチャー環境全体でのコンテナのデプロイを自動化し、リソースを効率的に使用することで、クラウドネイティブのCI/CDパイプラインで重要な役割を果たします。
コンテナのオーケストレーションを超えた多くの価値主導のユースケースに見られるように、Kubernetesは重要なITインフラストラクチャーの役割を果たしています。これが、多くの企業がKubernetesを実装し続けている理由です。2021年にCNCFが実施した「クラウドネイティブ調査」によると、Kubernetesの使用率は過去最高に達しており、組織の96%がコンテナ化されたプラットフォームを使用または評価していることが示されています。同調査によると、アフリカなどの新興テクノロジー地域では、Kubernetesの使用率が増加し続けており、調査回答者の73%が本番環境でKubernetesを活用しています。
Kubernetesは、コンテナのデプロイメント、更新、サービスの検出、ストレージのプロビジョニング、負荷分散、ヘルス・モニタリングなど、コンテナ・ベースのアーキテクチャーの管理に不可欠なタスクをスケジュールし、自動化します。IBMでは、Kubernetesやその他のクラウドネイティブ・ソリューションを使用して、お客様がアプリケーションをモダナイズし、ITインフラストラクチャーを最適化できるように支援しています。
IBM Cloud Kubernetes Serviceを使用して、安全で可用性の高いクラスターをネイティブKubernetesエクスペリエンスでデプロイします。
Red Hat OpenShift on IBM Cloudを使用して、コンテナ型プラットフォーム用のKubernetesクラスターをコンテナ化してデプロイします。