Kubernetes の検出

Explaining the Basic Concepts of Kubernetes

Objectives

After completing this lesson, you will be able to:
  • Kubernetes の定義
  • Kubernetes が対処して解決する課題の説明
  • Kubernetes の 6 つの主要機能の列挙

使用シナリオ: Kubernetes の基本コンセプト

会社は、独自の自己管理システムでさまざまなアプリケーションを運用しています。彼らが抱えている問題は、リソースを効率的に活用することなく、大量のアプリケーションを実行していることです。同社は、スケーラブルで信頼性の高いプラットフォームでアプリケーションとリソースをより効率的に管理するためのソリューションを探しています。

会社は、SAP 管理の Kubernetes 製品である SAP BTP, Kyma ランタイムを、その問題の解決策として検討しています。この Learning Journey に従って、ソリューションとその機能の詳細を確認することができます。チームが Kyma の導入を選択した場合、チームに参加する新規開発者のオンボーディングにも推奨できます。

Kubernetes の概要

Kyma を探索する前に、Kubernetes (Kyma が構築されている基礎となるテクノロジ) を見てみましょう。基本的に、Kyma は Kubernetes の拡張のコレクションです。

"Kubernetes (別名 K8s) は、コンテナ化されたアプリケーション ("Kubernetes. io) のデプロイメント、スケーリング、および管理を自動化するためのオープンソースシステムです。Kubernetes は移植性が高く、パブリッククラウド、プライベートクラウド、オンプレミスなど、ほぼどこでも実行できます。すべての主要なクラウドプロバイダは、Kubernetes を管理対象サービス (Kubernetes as a Service (KaaS)) として提供しています。SAP BTP, Kyma ランタイムは、これらの管理対象 Kubernetes サービスの 1 つです。

Kubernetes は、運用コンテナの大規模なワークロードを本稼働で処理するために 2014 年に Google によって最初に開発され、本稼働ワークロードを内部的に実行する長年の経験に基づいて構築されました。2年後、クラウドネイティブコンピューティング財団(CNCF)に寄贈された。クラウドネイティブコンピューティング基盤は、クラウドネイティブテクノロジーの開発を進めるために 2015 年に設立されたベンダーに依存しない組織です。このコンソーシアムとそのメンバー (SAP、Google、IBM、Red Hat、Docker、Microsoft など) はすべて、Kubernetes などのクラウドネイティブテクノロジーの将来を定義するために連携しています。

Kubernetes が対処する課題

Kubernetes が対処する重要な課題の 1 つは、アプリケーションワークロードの効率的な管理です。

多くの組織は、通常、本稼働サーバ (ベアメタルまたは仮想マシン) で幅広いアプリケーションを実行します。これらのアプリケーションは多くの場合、基盤となるインフラストラクチャに密結合されており、さまざまな環境 (たとえば、特別に設定された Linux サーバへのソフトウェアインストール) では移植できません。そのため、テスト環境から本稼働環境へ、または障害が発生したサーバから健全な環境など、環境間でのアプリケーションの移動が困難になります。

コンテナを使用してアプリケーションを出荷および運用することで、よりポータブルで効率的な方法でアプリケーションを管理できます。アプリケーションと、そのすべての依存関係をポータブルで実行可能なユニット (コンテナイメージ) としてパッケージ化します。アプリケーションは、コンテナランタイムまたはエンジンがインストールされたほぼすべての環境で出荷および実行することができます。

また、経済的な観点からは、ほとんどのサーバーはオーバープロビジョニングされていることが多い。したがって、企業は完全に利用されていない永続的に割り当てられた能力 (計算能力、保管容量など) に対して固定価格を支払います。これは通常、アイドルコストまたは未使用能力コストとも呼ばれ、常に (夜間や週末などに) フルキャパシティで実行されないサーバ運用ワークロードに特に当てはまります。

特に、生産で数百または数千のコンテナを同時に運用する場合は、それらを効率的に管理する方法が必要です。

ただし、IT ランドスケープ内の複数のホストにわたってワークロードを効率的に管理することは、困難で複雑な場合があります。

そこで Kubernetes が登場します。Kubernetes では、ワークロードを適切なホストに自動的にスケジュールし、必要に応じてスケーリングし、新しいバージョンのアプリケーションをロールアウトすることで、ワークロードを効率的に管理および調整できます。

たとえば、現在の高い需要に基づいて、Kubernetes はアプリケーションを水平方向に (つまり、インスタンスを追加することで) 自動的にスケーリングし、それらのインスタンス間で受信トラフィックのバランスを取ることができます。また、現在のホストが使用できなくなった場合、またはホストがオーバープロビジョニングされている場合は、Kubernetes によってホスト間でアプリケーションを自動的に移動することもできます。Kubernetes では、アプリケーションが常に実行され、可能な限り効率的な方法で実行されるように、コンテナを使用して Tetris® が再生されます。

これらの理由から、Kubernetes はコンテナオーケストレータとも呼ばれます。

Kubernetes の機能

Kubernetes には、コンテナ化されたアプリケーションをスケーラブルで信頼性の高い方法で管理できる複数の機能があります。最も重要な機能は以下のとおりです。

サービスの発見と負荷分散

コンテナは、DNS 名または IP アドレスを使用して公開できます。負荷分散アプローチを採用することで、Kubernetes ではネットワークトラフィックを分散して、コンテナトラフィックが高すぎる場合にデプロイメントを安定させることができます。

ストレージオーケストレーション

ストレージは、任意のストレージシステム (オンプレミスストレージ、パブリッククラウドプロバイダ、ネットワークストレージシステムなど) を使用して Kubernetes と自動的に統合できます。

自動ロールアウトとロールバック

Kubernetes では、ローリング更新を使用してコンテナを更新することができます。Kubernetes は新しいコンテナを起動し、古いコンテナを強制終了します。この機能により、デプロイメント中のダウンタイムもゼロになります。ロールアウトプロセス中に何らかの問題が発生した場合、Kubernetes によって変更がロールバックされます。

不変性と自己回復

Kubernetes のすべてのものは宣言的に定義されます。アプリケーションまたはインフラストラクチャの希望するステータスを指定すると、Kubernetes では常に現在のステータスが目的のステータスと一致することが確認されます。コンテナがクラッシュすると、Kubernetes によってそれが再起動されます。ノード全体がダウンすると、Kubernetes によってコンテナが健全なノードに移動され、カスタムヘルスチェックに応答しないコンテナが停止されます。

シークレットおよび設定管理

Kubernetes を使用して、パスワード、トークン、SSH キーなどの機密情報を保存および管理できます。コンテナイメージを再構築したり、アプリケーションで機密情報を公開したりしなくても、アプリケーション設定とともにシークレットをデプロイおよび更新できます。

注記

秘密鍵は、バージョン管理システムまたはソースコードに保存しないでください。Kubernetes Secrets の代わりに、SAP BTP 宛先または認証情報ストアを使用することもできます。
拡張性とエコシステム

Kubernetes API には、実装およびオブジェクトの標準セットが付属しています。多くの場合、Kubernetes では API が定義されますが、具体的な実装は定義されていません。これにより、同じ API の異なる実装を使用および切り替えることができます。たとえば、永続ボリュームに対して異なるストレージシステムを使用することができます。Docker、rkt、Rocket などのさまざまなコンテナランタイムを使用することもできます。時間の経過とともに、Kubernetes エコシステムの規模は拡大し、ほぼすべての問題に対するソリューションを見つけることができます。たとえば、ロギング、監視、サービスメッシュ、イングレスなどのソリューションがあります。これらのいくつかについては、このコースの後半で説明します。

Kubernetes のすべての機能の完全な一覧を確認するには、Kubernetes 文書を参照してください。

サマリ

このレッスンでは、Kubernetes とは何か、それが解決する課題、およびそれらの解決方法について説明します。また、Kubernetes の主な機能の一部について説明できるようになりました。

Kubernetes の基本コンセプトに関する追加の参照

詳細については、以下のサイトを参照してください。