ジャンプ先

Kubernetes とは

組織内でのコンテナの普及に伴い、コンテナ中心の管理ソフトウェアである Kubernetes は、コンテナ化アプリケーションのデプロイと運用における事実上の標準になっています。Google Cloud は Kubernetes が生まれた場所です。元々 Google で開発され、2014 年にオープンソースとしてリリースされました。Kubernetes は、15 年間にわたって Google のコンテナ化されたワークロードを実行してきた経験と、オープンソース コミュニティによる価値ある貢献のもと、構築されています。Google の内部クラスタ管理システムである Borg にインスパイアされた Kubernetes を利用すると、アプリケーションのデプロイと管理に関連するすべてが容易になります。自動化されたコンテナのオーケストレーションを提供することで、Kubernetes は信頼性を向上させ、日々の運用作業にかかる時間とリソースを削減します。

GKE、Google Cloud のマネージド Kubernetes の詳細をご覧ください。

Kubernetes の定義

Kubernetes(「K」と「s」の間にある 8 文字と合わせて「K8s」と短縮されることもあります)は、コンテナ化されたアプリケーションをどこでもデプロイ、スケール、管理できるオープンソース システムです。

Kubernetes はコンテナ管理の運用タスクを自動化し、アプリケーションのデプロイ、アプリケーションへの変更の展開、変化するニーズに合わせたアプリケーションのスケールアップやスケールダウン、アプリケーションのモニタリングなどの組み込みコマンドが含まれているため、アプリケーションの管理が容易になります。

Kubernetes のメリット

自動化された運用

Kubernetes にはアプリケーション管理に関係する多くの手間のかかる作業を処理するためのコマンドが組み込まれており、日々の運用作業を自動化できます。アプリケーションの実行がどんなときでも確実に意図したとおりに行われるようにすることができます。

インフラストラクチャの抽象化

Kubernetes をインストールすると、ワークロードに代わってコンピューティング、ネットワーキング、ストレージを処理します。これにより、デベロッパーはアプリケーションに集中することができ、基盤となる環境を気にする必要がありません。

サービス正常性のモニタリング

Kubernetes は、サービスに対して継続的にヘルスチェックを実行し、障害のあるコンテナまたは停滞しているコンテナを再起動します。コンテナが実行されていることが確認できた場合のみ、ユーザーにサービスを提供します。

Kubernetes か Docker か

Kubernetes と Docker は、どちらか一方だけを選択するものと誤解されることが多いですが、コンテナ化されたアプリケーションを実行するための、異なりながらもお互いに補い合うテクノロジーです。

Docker を使用することで、アプリケーションを実行するために必要なすべてのものを、必要なときに必要な場所に保存して開くことができるボックスに入れておくことができます。アプリケーションをボックスに入れ始めると、それらを管理する方法が必要になります。それが Kubernetes の役割です。

Kubernetes はギリシャ語で、「船長」を意味します。船長が海上で船を安全に航行する責任があるように、Kubernetes はこれらのボックスを使用できる場所に安全に運んで届ける責任があります。

  • Kubernetes は Docker の有無にかかわらず利用できます。
  • Docker は Kubernetes の代替品ではないので、「Kubernetes か Docker か」はあまり問題ではありません。Docker で Kubernetes を使用してアプリケーションをコンテナ化し、大規模に実行することが重要といえます。
  • Docker と Kubernetes の違いは、アプリケーションをコンテナ化して実行する際にそれぞれが果たす役割に関係しています。
  • Docker は、アプリケーションをコンテナでパッケージして配信するためのオープンな業界標準です。
  • Kubernetes は Docker を使用してコンテナ化されたアプリケーションをデプロイ、管理、スケールします。

Kubernetes の用途

Kubernetes は、どこでも簡単に管理してデプロイできるアプリケーションを作成するのに使用されます。マネージド サービスとして利用できる場合、Kubernetes は必要に応じて幅広いソリューションを提供します。一般的なユースケースを次に示します。

開発速度の向上

Kubernetes は、クラウドネイティブのマイクロサービス ベースのアプリを構築するのに役立ちます。また、既存アプリのコンテナ化もサポートしており、アプリケーションのモダナイゼーションの基盤となり、アプリをすばやく開発できます。

どこでもアプリケーションをデプロイ

Kubernetes はどこでも使用できるように構築されており、オンサイト デプロイとパブリック クラウド、そしてその間のハイブリッド デプロイにまたがるアプリケーションの実行が可能になります。そのため、必要な場所でアプリケーションを実行できます。

効率的なサービスの実行

Kubernetes は、サービスを実行するために必要なクラスタのサイズを自動的に調整できます。これにより、需要に応じてアプリケーションを自動的にスケールアップまたはスケールダウンし、効率的に運用できます。

Kubernetes と同じデベロッパーによって作成された Google Kubernetes Engine(GKE)は、コンテナ化されたアプリケーションを実行するための、使いやすいクラウドベースの Kubernetes Service です。GKE は、クラウド上のアプリケーションの Kubernetes 戦略を成功させるのに役立ちます。Anthos によって、Google はオンプレミスと複数のクラウドにまたがるアプリケーションで一貫した Kubernetes エクスペリエンスを提供します。Anthos を使用すると、Kubernetes クラスタをどこでも、効率的かつ信頼性の高い方法で確実に実行できます。