ホーム Topics kubernetes Kubernetesとは
IBMのKubernetesソリューションの詳細はこちら クラウド関連の最新情報を購読する
コンピューターのモニター、サーバー、雲、ドットの絵文字のコラージュの図

公開日:2024年3月11日
寄稿者:Stephanie Susnjara、Ian Smalley

Kubernetesとは

Kubernetes(k8sまたはkubeとも呼ばれます)は、コンテナ化されたアプリケーションの導入、管理、スケーリングをスケジュールおよび自動化するためのオープンソースのコンテナ・オーケストレーション・プラットフォームです。

現在、Kubernetesがコンテナ関連テクノロジーのより広範なエコシステムに統合され、最新のクラウド・インフラストラクチャーの構成要素が形成されています。このエコシステムにより、組織はインフラストラクチャーと運用に関する複雑なタスクを実行するための、生産性の高いハイブリッドのマルチクラウド・コンピューティング環境を提供できるようになります。また、アプリケーションを構築する際に、一度開発すれば、どこにでもデプロイできるアプローチを可能にすることで、クラウドネイティブ開発もサポートしています。

舵取りまたはパイロットというギリシャ語に語源を持つKubernetesのロゴには(ibm.com外部へのリンク)舵が描かれています。

DaaSで柔軟な職場を叶える

Desktop as a Service(DaaS)を活用して企業がどのようにアプリケーションをオンプレミスにデプロイするのと同じレベルのパフォーマンスとセキュリティーを達成できるかをご覧ください。

関連コンテンツ

ハイブリッドクラウドのためのガイドに登録する

バックグラウンド:コンテナ、Docker、Kubernetes
コンテナとは何ですか?

コンテナ とは、ソース・コードと、そのコードをあらゆる環境で実行するために必要なすべてのオペレーティング・システム(OS)ライブラリや依存関係を組み合わせた、軽量で実行可能なアプリケーション・コンポーネントです。

コンテナは、プロセスを分離し、プロセスがアクセスできるCPU、メモリー、そしてディスクの容量を制御することにより、複数のアプリケーションがOSの単一インスタンスを共有できるようにするオペレーティング・システム(OS)の仮想化の形態を利用します。コンテナは 仮想マシン(VM)よりも小さく、リソース効率が高く、移植性が高いため、最新のクラウドネイティブ・アプリケーションの事実上のコンピュート・ユニットとなっています。コンテナはリソース効率も高いことが特徴です。これらにより、より少ないOSインスタンスを使用して、より少ないマシン(仮想サーバーおよび物理サーバー)でより多くのアプリケーションを実行できるようになります。

コンテナはどこでも一貫した実行が可能であるため、オンプレミス、プライベートクラウドパブリッククラウド、さらには複数のクラウド・ベンダーが提供する複数のクラウド・サービスの組み合わせであるハイブリッド・マルチクラウド環境をサポートする基盤アーキテクチャーにとって欠かせない存在となっています。

Dockerとは

Dockerは、Linux®コンテナの作成と実行に利用される最も人気の高いツールです。コンテナの初期形態は(FreeBSD JailsやAIX Workload Partitionsのような技術)数十年前に導入されましたが、2013年にDockerが開発者向けに、クラウドに適した新たな実装でコンテナを一般に提供したことで、コンテナは民主化されました。

Dockerはオープンソース・プロジェクトとして始まりましたが、現在では Docker Inc.も指します。Docker社は、オープンソース・プロジェクトに基づいて構築された商用コンテナ・ツールキットを製造し、それによるメリットをオープンソース・コミュニティーに還元しています。

Dockerは従来のLinuxコンテナ・テクノロジーに基づいて構築されていますが、Linuxカーネル・プロセスのよりきめ細かい仮想化を実現し、開発者がコンテナを容易に構築、デプロイ、管理、保護できる機能を追加しています。

今日では、Open Container Initiative(OCI)、CoreOS、Canonical(Ubuntu)LXDなどの代替コンテナ・ランタイム・プラットフォームも存在しますが、最も広く使用されているのはDockerです。実際、Dockerはコンテナの代名詞となるほどで、Kubernetesなどの補完的なテクノロジーの競合ブランドと誤解されることもあります

現在、DockerとKubernetesは主要なコンテナ化ツールで、2024年のそれぞれの市場シェアの内訳は、Dockerが82%、Kubernetesが11.52% (ibm.com外部へのリンク)となっています。

Kubernetesを使用したコンテナ・オーケストレーション

コンテナが急増するにつれて、今日、1つの組織が数百個から数千個のコンテナを持つことすら珍しくなくなっており、運用チームは、コンテナのデプロイメントネットワーク、拡張性、可用性をスケジュールおよび自動化する必要があります。そこで役に立つのが、コンテナ・オーケストレーション・ツールです。

Google社の社内用コンテナ・オーケストレーション・プラットフォームであった「Borg」をベースに開発されたKubernetesは、2014年にオープン・ソース・ツールとして一般公開され、Microsoft、Red Hat、IBMなどの大手テクノロジー企業がKubernetesコミュニティーの初期メンバーとして参加しました。2015年、Google社は、クラウド・ネイティブ・コンピューティングのオープン・ソースかつベンダー中立のハブであるCloud Native Computing財団(CNCF)(ibm.com外部へのリンク)にKubernetesを寄贈しました。

2016年3月、KubernetesはCNCFがホストするプロジェクト第一号になりました。以来、Kubernetesは、コンテナベースのワークロードの実行に世界で最も広く使用されるコンテナ・オーケストレーション・ツールになりました。CNCFのレポート(ibm.com外部へのリンク)によると、Kubernetesは、世界で2番目に大きなオープン・ソース・プロジェクト(首位はLinux)で、Fortune誌が選ぶ世界の上位企業100社の実に71%により主要コンテナ・オーケストレーション・ツールとして選ばれています。

2018年、KubernetesはCNCFの最初の卒業プロジェクトとなり、史上最も急速に成長したオープンソース・プロジェクトの 1 つとなりました。Docker SwarmやApache Mesosなど、他のコンテナ・オーケストレーション・オプションの中には早い段階で注目を集めたものもありましたが、急速に成長し、その後最も広く採用されるようになったのはKubernetesでした。

Kubernetesが2016年にCNCFに寄贈されて以来、コントリビューターの数は8,012人と、実に996%も増加しました(ibm.com外部へのリンク)。この記事を執筆している時点で、コントリビューターによって123,000件を超えるコミットがGitHubのKubernetesリポジトリー(ibm.com外部へのリンク)に追加されています。

Kubernetesの機能

Kubernetesは、アプリケーションのライフサイクル全体を通じて、以下のようなコンテナ関連のタスクをスケジュールし、自動化する。

デプロイメント

指定された数のコンテナを指定されたホストにデプロイし、それらを望ましい状態で実行し続けます。

ロールアウト

ロールアウトとは、デプロイに対する変更です。Kubernetesを使用すると、ロールアウトを開始、一時停止、再開、ロールバックすることができます。

サービスの発見

Kubernetesは、DNS名やIPアドレスを使用して、コンテナをインターネットや他のコンテナに自動的に公開することができます。

ストレージのプロビジョニング

必要に応じてコンテナの永続的なローカル・ストレージまたはクラウド・ストレージを追加するようにKubernetesを設定できます。

ロード・バランシング

Kubernetesのロード・バランシングは、CPU使用率またはカスタム・メトリクスを基にネットワーク全体でワークロードを分散し、パフォーマンスと安定性を維持できます。

オートスケーリング

トラフィックが急増すると、Kubernetes自動スケーリングは、追加のワークロードを処理するために、必要に応じて新しいクラスターを起動できます。

自己修復により高可用性を実現

コンテナに障害が発生した場合、Kubernetesはコンテナを自動的に再起動または交換して、ダウンタイムを防ぎます。また、ヘルスチェック要件を満たさないコンテナを削除することもできます。

Kubernetesのアーキテクチャーとコンポーネント

Kubernetesのデプロイには、Kubernetes アーキテクチャの構成要素である クラスター が含まれます。クラスターはノードで構成され、各ノードは単一のコンピューティング・ホスト(物理マシン(Bare Metal Servers)またはVM)を表します。

Kubernetesアーキテクチャーは、コントロール・パネル・コンポーネントと個々のノードを管理するコンポーネントという2つの主要な部分で構成されます。

ノードはポッドで構成されます。これらは、同じコンピューティング・リソースと同じネットワークを共有するコンテナのグループであると同時に、Kubernetesの拡張性の単位でもあります。ポッド内のコンテナが、処理できる量を超えるトラフィックを取得している場合、Kubernetesはそのポッドをクラスタ内の他のノードに複製します。

コントロール・プレーンは、クラスタ内のノード全体でポッドのスケジュールを自動的に処理します。

コントロール・プレーンのコンポーネント

各クラスターには、クラスターのコントロール・プレーンを処理するマスター・ノードがあります。マスター・ノードは、開発者が設定したデプロイメント要件と利用可能なコンピューティング容量に基づいて、コンテナがいつどこにデプロイされるかを自動化するスケジューラー・サービスを実行します。

Kubernetesクラスターの主なコンポーネントは、kube-apiserver、etcd、kube-scheduler、kube-controller-manager、cloud-controller-manager です。

API server:Kubernetesのアプリケーション・プログラミング・インターフェースAPI)Serverは、Kubernetes API(Kubernetesクラスターの管理、作成、構成に使用されるインターフェース)を公開し、すべてのコマンドとクエリのエントリー・ポイントとして機能します。
etcdetcdは、分散システムが実行し続けるために必要な情報を保持および管理するために使用される、オープン・ソースの分散キー値ストアです。Kubernetesでは、etcdが構成データ、状態データ、メタデータを管理します。

Scheduler:
 このコンポーネントは、新しく作成されたポッドを追跡し、ポッドを実行するノードを選択します。Schedulerは、リソースの可用性、割り当てにおける制約、ハードウェア要件、ソフトウェア要件などを考慮します。

Controller-manager:
組み込みコントローラーを一式まとめたKubernetes Controller-managerは、クラスターの共有状態を監視し、APIサーバーと通信してリソース、ポッド、またはサービスのエンドポイントを管理する制御ループを実行します。Controller-managerは、複雑な手順を簡素化し、1つのプロセスで実行できるようまとめられた個別のプロセスで構成されています。
Cloud-controller-manager: このコンポーネントは、controller-managerリンクと機能が似ています。 クラウド・プロバイダーのAPIにリンクし、そのクラウド・プラットフォームと対話するコンポーネントを、クラスター内でのみ対話するコンポーネントから分離します。

ノード・コンポーネント

Worker nodesは、コンテナ化されたアプリケーションのデプロイ、実行、管理を担当します。
Kubelet:
Kubeletは、マスター・ノードからの命令を受信して​​実行し、コンテナがポッド内で確実に実行されるようにするソフトウェア・エージェントです。
Kube-proxy:
クラスター内のすべてのノードにインストールされたkube-proxyは、ホスト上のネットワーク・ルールを維持し、サービスとポッドの変更を監視します。

その他のKubernetesの概念と用語
  • ReplicaSet:ReplicaSetは、特定のワークロードのレプリカ・ポッドの安定したセットを維持します。

  • デプロイメント:デプロイメントにより、コンテナ化されたアプリケーションの作成と状態が制御され、実行が維持されます。デプロイメントにより、クラスタ上で稼働すべきポッドのレプリカの数が特定されます。あるポッドが機能を停止すると、デプロイメントによって新しいポッドが作成されます。

  • Kubectl:開発者は、Kubernetes APIと直接通信するコマンドライン・インターフェース(CLI)で構成される開発者ツールであるkubectlを使用して、クラスター・オペレーションを管理します

  • DaemonSets: DaemonSetsは、クラスター内のすべてのノードにポッドが確実に作成されるようにするためのものです。

  • アドオン: Kubernetes アドオンは機能を拡張し、Cluster DNS(KubernetesにDNSレコードを提供するDNSサーバー)、Web UI(クラスターを管理するためのKubernetesダッシュボード)などが含まれます。

  • サービス:Kubernetesサービスは、ポッドの論理セットとそれらへのアクセス方法を定義する抽象化レイヤーです。サービスにより、クラスター内の 1 つ以上のポッドで実行されるネットワーク・アプリケーションが明らかになるほか、ポッドの負荷分散を確保する抽象的な方法がわかります。
Kubernetesエコシステム

現在、90種類を超えるKubernetes認定製品(ibm.com外部へのリンク)があり、その中には、コンテナ化されたアプリケーションの開発と提供を加速するツール、アップグレード、アドオン機能を提供するエンタープライズ・グレードの管理プラットフォームが含まれています。

Kubernetesマネージド・サービス

Kubernetesはコンテナベースのクラウド・アプリケーションをオーケストレーションするための最適なテクノロジーですが、完全に機能するには、ネットワークIngress、負荷分散、ストレージ、継続的インテグレーション継続的デリバリー(CI/CD)など、他のコンポーネントに依存します。

クラウドベースの環境でKubernetesクラスターをセルフ・ホスティングすることは可能ですが、企業のセットアップと管理が複雑になる可能性があります。ここでKubernetesマネージト・サービスが役に立ちます。

Kubernetesマネージト・サービスでは通常、プロバイダーがKubernetesのコントロール・プレーン・コンポーネントを管理します。マネージド・サービス・プロバイダーは、更新、負荷分散、スケーリング、監視の日常的なプロセスの自動化を支援します。例えば、Red Hat OpenShiftは、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud、IBM Cloudなど、あらゆる環境やすべての主要なパブリッククラウドに導入できるKubernetesサービスです。多くのクラウド・プロバイダーは、独自のKubernetesマネージト・サービスも提供しています。

Kubernetes監視ツール

Kubernetes監視とは、Kubernetesクラスター内で実行されているコンテナ化されたアプリケーションの健全性、パフォーマンス、コスト特性に関連するデータを収集して分析することを指します。

Kubernetesクラスターを監視することで、管理者とユーザーは稼働時間、クラスター・リソースの使用状況、クラスター・コンポーネント間の相互作用を追跡できます。監視は、リソース不足、障害、クラスターに参加できないノードなどの問題を迅速に特定するのに役立ちます。今日のKubernetes監視ソリューションには、アプリケーション・パフォーマンス管理(APM)可観測性、アプリケーション・リソース管理(ARM)などの自動化ツールが含まれています。

Istioサービス・メッシュ

Kubernetesはポッドをデプロイおよびスケーリングできますが、ポッド間のルーティングを管理または自動化することはできず、これらの接続を監視、保護、またはデバッグするためのツールも提供していません。クラスター内のコンテナ数が増えると、コンテナ間の接続パスの数が激増します。例えば、2つのコンテナには2種類の接続方法がありますが、10個のポッドを作成するには90種類の接続方法があるため、構成と管理が困難になる可能性があります。

構成可能なオープンソースのサービス・メッシュ・レイヤーである Istioは、Kubernetesクラスター内のコンテナを接続、監視、保護するソリューションを提供します。その他の重要な利点としては、デバッグ機能の向上や、DevOps チームと管理者がコンテナ間の接続の遅延、サービス時間エラー、その他の特性を監視するために使用できるダッシュボードなどがあります。

Knativeとサーバーレス・コンピューティング

Knative(「ケイネイティブ」と読みます)は、サーバーレス・コンピューティングへの容易な導入を提供するオープン・ソース・プラットフォームです。サーバーレス・コンピューティングは、開発者がサーバーやバックエンド・インフラストラクチャーをプロビジョニングまたは管理する必要がなく、アプリケーション・コードを構築して実行できるクラウド・コンピューティング・アプリケーションの開発および実行モデルです。

サーバーレスは、リクエストを待っている間、アイドル状態のコードの進行中のインスタンスをデプロイする代わりに、必要に応じてコードを起動し、需要の変動に応じてスケールアップまたはスケールダウンし、使用していないときはコードを停止します。サーバーレスでは、コードを実際に実行するときにのみ料金を支払うため、コンピューティング能力と電力の無駄が防止され、コストが削減されます。

Tekton

Tektonは、継続的統合とデリバリー(CI/CD)システムを作成するためのオープンソースでベンダーニュートラルなフレームワークであり、継続的デリバリー・ファウンデーション(CDF)によって管理されている(ibm.com外部へのリンク)。KubernetesネイティブのフレームワークであるTektonは、パイプライン、ワークフロー、その他のビルディング・ブロックの業界仕様を提供することで、継続的デリバリーのモダナイズを支援し、複数のクラウド・プロバイダーやハイブリッド環境へのデプロイメントをより迅速かつ容易に行います。

Tektonは、一部のKnativeディストリビューションで引き続きサポートされているKnative Buildの後続フレームワークです。Tektonパイプラインは、コンテナ・イメージを構築し、Kubernetes 環境のコンテナ・レジストリーにデプロイするための標準となっています。

Kubernetesのユースケース

企業は、Kubernetesを使用して、最新のITインフラストラクチャーを構成する上で重要な役割を果たす次のようなユースケースをサポートします。

マイクロサービス・アーキテクチャーまたはクラウドネイティブ開発

クラウドネイティブは、クラウドベースのアプリケーションを構築、展開、管理するためのソフトウェア開発アプローチです。クラウドネイティブの主な利点は、DevOpsやその他のチームが一度コーディングすれば、任意のクラウド・サービス・プロバイダーの任意のクラウド・インフラストラクチャーにデプロイできることです。

この最新の開発プロセスは、マイクロサービスに依存しています。これは、単一のアプリケーションが、Kubernetesによって管理されるコンテナーにデプロイされる、疎結合で独立してデプロイ可能な多数の小さなコンポーネントまたはサービスで構成されるアプローチです。

Kubernetesは、各マイクロサービスが効率的に実行するために必要なリソースを確保すると同時に、複数のコンテナを手動で管理することに伴う運用諸経費を最小限に抑えるのに役立ちます。

ハイブリッド・マルチクラウド環境

ハイブリッドクラウドは、パブリッククラウド、プライベートクラウド、オンプレミスの データセンター・インフラストラクチャーを組み合わせ、柔軟性が高くコストが最適化された単一のITインフラストラクチャーを構成します。

現在、ハイブリッドクラウドは、複数のクラウド・ベンダーのマルチクラウド・パブリッククラウド・サービスと統合され、ハイブリッド・マルチクラウド環境が構築されています。

ハイブリッド・マルチクラウド・アプローチにより柔軟性が向上し、組織の単一ベンダーへの依存度が軽減され、ベンダー・ロックインを回避できます。Kubernetesはクラウドネイティブ開発の基盤を構築するため、ハイブリッド・マルチクラウドの導入の鍵となります。

大規模なアプリケーション

Kubernetesは、自動スケーリングによる大規模なクラウド・アプリのデプロイメントをサポートします。このプロセスにより、アプリケーションはスケールアップまたはスケールダウンして、需要の変化に自動的に適応し、スピードと効率性を維持し、ダウンタイムを最小限に抑えることができます。

Kubernetes デプロイメントの柔軟な拡張性により、小売店Webサイトでのフラッシュ・セールなど、ユーザー・トラフィックの変化に基づいてリソースを追加または削除できます。

アプリケーションのモダナイゼーション

Kubernetesは、アプリケーションの最新化をサポートし、モノリシックなレガシー・アプリケーションをマイクロサービス・アーキテクチャー上に構築されたクラウド・アプリケーションに移行および変換するために必要な最新のクラウド・プラットフォームを提供します。

DevOpsプラクティス

オートメーションはDevOpsに書かせません。ソフトウェア開発チームとIT運用チームの作業を連携させて自動化することで、より高品質なソフトウェアの開発速度を短縮します。

Kubernetesは、アプリケーションの構成とデプロイを自動化することで、DevOpsチームがアプリケーションを迅速に構築および更新できるようにします。

人工知能(AI)と機械学習

AIをサポートするML モデルと 大規模言語モデル(LLM)には、個別に管理するのが難しく時間のかかるコンポーネントが含まれています。Kubernetesは、クラウド環境全体の構成、デプロイメント、拡張を自動化することで、これらの複雑なモデルを迅速かつ柔軟にトレーニング、テスト、デプロイします。

Kubernetesのチュートリアル

Kubernetesの使用を開始したい場合、またはKubernetesおよびKubernetesエコシステム・ツールに関する既存のスキルを強化したい場合は、次のチュートリアルのいずれかをお試しください。

関連ソリューション
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloudは、エンタープライズ・ワークロードをKubernetesクラスターにコンテナ化してデプロイするための高速かつ安全な方法を開発者に提供します。

Red Hat OpenShiftの詳細はこちら
IBM® Cloud Kubernetes Service

ネイティブKubernetesエクスペリエンスで、セキュアーで可用性の高いアプリをデプロイ

IBM Cloud Kubernetes Serviceについて詳しく知る
IBM® Cloud Pak for Applications

ビジネスに合わせて変化するアプリケーション環境を提供します。IBM Cloud Pak for Applicationsは、新しいクラウドネイティブのサービスやアプリケーションを構築する場合でも、既存のアプリケーションをリファクタリングまたは再プラットフォーム化する場合でも、究極の柔軟性を提供します。

IBM Cloud Pak for Applicationsはこちら
IBM® Cloud Satellite

ツールチェーン、データベース、AI などの共通のクラウド・サービス・セットを使用して、あらゆるクラウド・ベンダーのオンプレミス、エッジコンピューティング、パブリッククラウド環境にわたってアプリを一貫してデプロイして実行できます。

IBM Cloud Satelliteソリューションの詳細はこちら
IBM® Cloud Code Engine

フルマネージドのサーバーレス・プラットフォームである IBM Cloud Code Engine を使用すると、フルマネージドのコンテナー・ランタイム上でコンテナー、アプリケーション・コード、またはバッチ・ジョブを実行できます。

Code Engineの詳細はこちら
参考情報 企業内のコンテナ

IBM® Researchの調査では、コンテナとKubernetes導入の勢いが急速に高まっていることが証明されています。

ハイブリッドクラウドに対応する柔軟で回復力のある安全なIT

コンテナは、どこからでもワークロードを構築および管理できるようにするハイブリッドクラウド戦略の一部です。

サーバーレスとは何ですか?

サーバーレスとは、サーバー管理が不要で、使用していないクラウド・インフラストラクチャーに対する料金を支払わずに、開発者がコードを構築および実行できるクラウド・アプリケーションの開発および実行モデルのことです。

KubernetesにおけるYAMLの基本

KubernetesでYAMLファイルがどのように使用されているか例を見てみましょう。

コンテナとは何ですか?

コンテナは、アプリケーションコードとそのライブラリや依存関係とともにパッケージ化されたソフトウェアの実行可能な単位であり、デスクトップ、従来のIT、クラウドなど、どこでもコードを実行できるように一般的な方法でパッケージ化されています。

Dockerとは

Dockerとは開発者が<em>コンテナ</em>をビルド、展開、実行、更新、管理できるオープンソース・プラットフォームです。コンテナとは、アプリケーションのソースコードと、そのコードを任意の環境で実行するために必要なオペレーティング・システムのライブラリや依存関係を組み合わせた標準化された実行可能なコンポーネントです。

次のステップ

Red Hat OpenShift on IBM Cloudは、エンタープライズ ワークロードをKubernetesクラスターにコンテナ化してデプロイするための高速かつ安全な方法を開発者に提供します。セキュリティ管理、コンプライアンス管理、展開管理、継続的なライフサイクル管理を含む、面倒で反復的なタスクの負荷を軽減します。

Red Hat OpenShift on IBM Cloudの詳細はこちら 無料で始める