Kubernetes とは

URL をコピー

Kubernetes (k8s または「kube」とも呼ばれる) はオープンソースのコンテナ・オーケストレーション・プラットフォームで、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングに伴う多くの手動プロセスを自動化します。

Kubernetes は当初、Google のエンジニアによって Borg プロジェクトとして開発および設計され、2015 年に Cloud Native Computing Foundation (CNCF) に寄付されました。Red Hat® は Kubernetes に関して Google と最初に連携した会社の 1 つです。Kubernetes 発表前から関わってきた Red Hat は、Kubernetes アップストリーム・プロジェクトにおける第 2 位のコントリビューターになっています。 

エンタープライズ向け Kubernetes の基礎を読む

動作している Kubernetes のデプロイメントはクラスタと呼ばれます。クラスタは、実行中の Linux® コンテナのグループです。Kubernetes クラスタは 2 つのパーツとして視覚化できます。コントロールプレーンと、コンピュートマシンつまりノードです。

A diagram showing the infrastructure of a Kubernetes cluster

各ノードは独立した Linux 環境であり、物理マシンでも仮想マシンでもかまいません。各ノードは、コンテナで構成される Pod を実行します。 

コントロールプレーンの役割は、どのアプリケーションが実行されているか、どのコンテナイメージが使用されているかといった、クラスタの望ましい状態を維持することです。コンピュートマシンは実際にアプリケーションとワークロードを実行します。コントロールプレーンは、管理者 (または DevOps チーム) からコマンドを受けると、従属するコンピュートマシンにそれを伝えます。

このハンドオフは多数のサービスと連携して、タスクに最適なノードを自動的に決定します。サービスは Pod から作業の定義を切り離し、適切な Pod に自動的にサービスリクエストを提供します。クラスタ内のどこにあろうと、たとえ置き換えられていても問題ありません。次にリソースを割り当て、そのノードに Pod を割り当てて、要求された作業を実行します。

Kubernetes は Red Hat Enterprise Linux などのオペレーティングシステム上で稼働し、ノード上で実行されるコンテナの Pod とやり取りします。

Kubernetes クラスタの望ましい状態は、どのアプリケーションまたは他のどのワークロードを実行する必要があるか、どのイメージを使用するか、どのリソースを利用できるようにするべきかといった構成の詳細を定義します。

このタイプのインフラストラクチャを使用するコンテナの管理方法と大きな違いはありません。ユーザーによる制御は高いレベルでのみ発生し、個別のコンテナやノードのミクロな管理を行う必要なく、より優れた制御性が実現します。 

Kubernetes の実行場所はユーザーが選択できます。ベアメタルサーバー、仮想マシン (VM)、パブリッククラウドプロバイダー、プライベートクラウドハイブリッドクラウド環境を使用できます。Kubernetes の主な利点の 1 つは、さまざまな種類のインフラストラクチャで動作することです。

Red Hat のリーダーが紹介する、コンテナでオープン・ハイブリッドクラウドを革新する方法をご覧ください。

Docker は、Kubernetes がオーケストレーションするコンテナランタイムとして使用できます。Kubernetes が Pod をノードに割り当てると、そのノードの kubelet (各コンテナを実行させるサービス) は指定されたコンテナを起動するように Docker に指示を出します。

次に kubelet が Docker からそれらのコンテナのステータスを継続的に収集し、その情報をまとめてコントロールプレーンに伝えます。Docker はコンテナをそのノードに pull し、これらのコンテナの開始や停止を行います。

Docker で Kubernetes を使用する場合の異なる点は、管理者がこれらのことを手動ですべてのノードのすべてのコンテナに行う代わりに、自動化されたシステムが Docker に依頼するという点です。

Kubernetes を使い始める準備ができたら、このオンデマンドコースで、アプリケーションやサービスのコンテナ化、Docker を使用したテスト方法、および Red Hat OpenShift® を使用して Kubernetes クラスタにデプロイする方法について学習できます。

無料のトレーニングコースを始める

Kubernetes は、コンテナ化されたレガシーアプリケーションやクラウドネイティブ・アプリケーション、およびマイクロサービスにリファクタリングされたアプリケーションの提供と管理を支援します。 

変化するビジネスニーズに対応するためには、開発チームが新しいアプリケーションとサービスを迅速に構築できることが必要です。クラウドネイティブ開発は、コンテナ内のマイクロサービスから始まります。これにより、開発が迅速になり、既存のアプリケーションの転換と最適化が容易になります。 

Kubernetes によるアプリケーション開発

本番アプリケーションは複数のコンテナにまたがっており、これらのコンテナは複数のサーバーホストにデプロイされる必要があります。Kubernetes を活用すれば、これらのワークロード用にコンテナを大規模にデプロイするうえで必要なオーケストレーションと管理機能を手に入れることができます。

Kubernetes オーケストレーションによって、複数のコンテナにまたがるアプリケーションサービスを構築し、それらのコンテナをクラスタにスケジュールして、コンテナのスケーリングを行い、コンテナの正常性を継続的に管理できるようになります。Kubernetes を使用すると、IT セキュリティの改善に向けて効果的な措置を講じることができます。

Kubernetes で総合的なコンテナ・インフラストラクチャを提供するには、ネットワーク、ストレージ、セキュリティ、テレメトリーなど他のサービスと統合する必要もあります。

Kubernetes explained - diagram

これをプロダクション環境と複数のアプリケーションに拡張した場合、複数の共同の場所に設置されたコンテナは、個々のサービスを提供するために連携して動作する必要があります。 

Linux コンテナは、マイクロサービスベースのアプリにとって、理想的なアプリケーションデプロイ単位であり、自己完結型の実行環境です。また、コンテナ内でマイクロサービスを使用すると、ストレージ、ネットワーク、セキュリティなどのサービスのオーケストレーションが容易になります。

そのため環境内のコンテナの数がかなり増加し、コンテナが蓄積されるにつれて、複雑さも増していきます。

Kubernetes はいくつかのコンテナを「Pod」にまとめることで、コンテナの急激な増加に伴って発生する問題の多くを解決します。Pod はグループ化されたコンテナに抽象的なレイヤーを追加します。これはワークロードをスケジューリングしたり、必要なサービス (ネットワークやストレージ) をそれらのコンテナに提供したりする際に役立ちます。 

さらに Kubernetes は、これらの Pod 間でロードバランスを保ち、ワークロードを処理するのに適切な数のコンテナを確実に維持するようサポートします。

Kubernetes を正しく実装し、他のオープンソース・プロジェクト (Open vSwitchOAuthSELinux など) を活用することで、コンテナ・インフラストラクチャのすべての部分をオーケストレーションすることができます。

Kubernetes クラスタを構築するための 16 のステップ

Kubernetes はオープンソースであるため、確立された公式サポート体制があるわけではありません。実働環境で Kubernetes の実装に問題が発生した場合、苛立つことでしょう。そして、あなたの顧客も苛立つでしょう。

Kubernetes は車のエンジンのようなものだと考えてください。エンジンは単独でも稼働できますが、トランスミッション、車軸、車輪に接続すれば、自動車の一部として機能します。Kubernetes をインストールするだけでは、プロダクショングレードのプラットフォームを使用するのに十分ではありません。Kubernetes をフルに機能させるには、追加のコンポーネントが必要です。認証、ネットワーク、セキュリティ、監視、ログ管理、その他のツールを追加する必要があります。そこで Red Hat OpenShift が登場します。これは必要な部品をすべて備えた自動車にあたります。 

Red Hat OpenShift は、企業向けの Kubernetes です。Kubernetes を企業向けに強化するためのさまざまなテクノロジーを提供します。これには、レジストリ、ネットワーキング、テレメトリー、セキュリティ、自動化、サービスが含まれます。Red Hat OpenShift は、プラットフォームの中心コンポーネントとして Kubernetes を備えています。また、CNCF が提供する認定済み Kubernetes です。

Red Hat OpenShift Container Platform を活用することで、開発者はコンテナ化された新しいアプリを作り、ホストし、クラウドでデプロイできるようになります。さらに、スケーラビリティ、制御性、オーケストレーションを提供することで、優れたアイデアを迅速かつ簡単にビジネスへつなげるための助けとなります。Kubernetes ワークロードのマネージド・クラウドサービスへのデプロイまたは移行を検討しているなら、Amazon Web Services (AWS)、Microsoft AzureGoogle CloudIBM Cloud、およびその他のプロバイダーで、OpenShift をクラウドネイティブ Kubernetes プラットフォームとして使用することもできます。 

OpenShift を基盤として構築された Red Hat Advanced Cluster Management と Red Hat Ansible® Automation Platform を併用することで、パブリッククラウド、オンプレミス、エッジ環境など、複数のリージョンにまたがる複数の Kubernetes クラスタを効率的にデプロイし、管理できます。

Red Hat がハイブリッド環境の構築と自動化をサポートする方法についての詳細はこちら

ユースケース:クラウド・プラットフォームを構築して革新的なバンキングサービスを提供

アラブ首長国連邦 (UAE) の大手銀行の 1 つである Emirates NBD は、デジタルイノベーションのためのスケーラブルで回復力のある基盤を必要としていました。当時の Emirates NBD では、プロビジョニングには延々と時間がかかり、IT 環境は複雑に入り組んでいました。サーバーのセットアップに 2 カ月を要し、大規模なモノリシック・アプリケーションへの変更適用には 6 カ月以上かかりました。

Emirates NBD は、Red Hat OpenShift Container Platform を使用してコンテナのオーケストレーション、統合、管理を行い、Sahab を作成しました。これは、中東の銀行が大規模に実行する最初のプライベートクラウドでした。Sahab は、as-a-Service モデルを通じて、プロビジョニングからプロダクションまでエンドツーエンドの開発のためのアプリケーション、システム、その他のリソースを提供します。 

新プラットフォームに移行した Emirates NBD では、アプリケーション・プログラミング・インタフェース (API) とマイクロサービスの活用により、社内チームとパートナーとのコラボレーションがより円滑になりました。また、アジャイルおよび DevOps 手法を取り入れた開発により、アプリケーションの提供と更新のサイクルも短縮されました。

ハブ

Red Hat 公式ブログ

Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。

すべての Red Hat 製品のトライアル

Red Hat の無料トライアルは、Red Hat 製品をハンズオンでお試しいただける無料体験版です。認定の取得に向けた準備をしたり、製品が組織に適しているかどうかを評価したりするのに役立ちます。

関連情報

開発者が Red Hat OpenShift を選ぶ理由 | Red Hat

Red Hat OpenShift は、アプリ開発の複雑さを軽減するアプリケーション・プラットフォームです。開発者はどこでも、使い慣れたツールでアプリを構築し、デプロイできます。

サンドボックスコンテナとは?をわかりやすく解説 | Red Hat

サンドボックスコンテナは、アプリケーションの保護のために未テストのコード等を分離して実行する環境。コンテナを起動する仮想マシンを使用してプログラムを分離します。

ホスト型コントロールプレーンとは | Red Hat

ホスト型コントロールプレーンは、その主要コンポーネントの統合された制御と管理を行う分離された管理プレーン。小さなノードで実行でき、クラスタのコストを削減します。

コンテナリソース

注目の製品

  • Red Hat OpenShift

    任意のハイブリッドクラウド・インフラストラクチャでアプリケーションの大規模な構築、モダナイ​ズ、デプロイを行うことを可能にする統合アプリケーション開発プラットフォーム。

関連記事