Kubernetes とは
マイクロサービスの分離設計とコンテナーの原子性とを組み合わせると、需要に対応するアプリをスケールアウトできます。 ドローン追跡アプリのような複雑なソリューションでは、コンテナーのデプロイ、更新、監視、削除のプロセスで課題が生じます。
Kubernetes の内容を確認する前に、まず理解すべき概念として、コンテナー管理とオーケストレーターがあります。
コンテナー管理とは
コンテナー管理とは、多数のコンテナーを整理、追加、削除、または更新するプロセスです。
ドローン追跡アプリは、キャッシュ、キュー、データ処理などのタスクを担当する複数のマイクロサービスで構成されています。 これらの各サービスはコンテナー内でホストされ、相互に独立してデプロイ、更新、スケーリングされます。
たとえば、ドローン追跡アプリの Web サイトで、日中の特定の時間中のパフォーマンスを維持するために、サイトのキャッシュ サービスのインスタンスを増やす必要があることがわかったため、キャッシュ サービス コンテナー インスタンスをさらに追加するということが考えられます。
次に、キャッシュ インスタンスの数を増やし終え、マイクロサービスの新しいバージョンをロールアウトする必要が生じたとします。 新しいバージョンを使用するには、アクティブな "すべての" コンテナーを更新する必要があります。
コンテナー管理は、このような繰り返しの手動タスクに役立ちます。
コンテナー オーケストレーターとは
コンテナー オーケストレーターは、コンテナー化されたアプリを自動的にデプロイおよび管理するシステムです。 オーケストレーターは、管理の一環として、環境内の動的変更のスケーリングを処理して、アプリのデプロイ済みインスタンスの数を増減します。 また、新しいバージョンのサービスがリリースされたときに、デプロイ済みのすべてのコンテナー インスタンスが確実に更新されるようにします。
Kubernetes の定義
Kubernetes は、コンテナー化されたワークロードを管理および調整するための、移植可能で拡張可能なオープンソース プラットフォームです。 Kubernetes は複雑なコンテナー管理タスクを単純化し、さまざまなコンピューティング環境でコンテナーを調整するための宣言型の構成を提供します。 このオーケストレーション プラットフォームは、あなたがサービスとしてのプラットフォーム (PaaS) やサービスとしてのインフラストラクチャ (IaaS) オファリングで既に知っているのと同じ使いやすさと柔軟性をもたらします。
Kubernetes の利点
Kubernetes を使用する利点は、タスクの抽象化に基づいています。
次のようなタスクがあります。
コンテナーの自己修復。たとえば、障害が発生したコンテナーの再起動や、コンテナーの置き換えなどです
需要に基づく、デプロイ コンテナー数の動的なスケールアップまたはスケールダウン
コンテナーの自動的なローリング アップデートとロールバック
ストレージの管理
ネットワーク トラフィックの管理
ユーザー名やパスワードなどの機密情報の保管と管理
重要
上記の Kubernetes のすべての側面を構成し、基盤のテクノロジをよく理解している必要があることに留意してください。 たとえば、Kubernetes ネットワークを構成するには、仮想ネットワーク、ロード バランサー、リバース プロキシなどの概念を理解しておく必要があります。
Kubernetes に関する考慮事項
Kubernetes を使用すると、データセンターを 1 つの大規模なコンピューティング リソースとして表示できます。 コンテナーをデプロイする方法や場所について気にする必要はなく、必要に応じてアプリのデプロイとスケーリングを行うことだけを考えます。
ただし、Kubernetes は、単一でインストールされるアプリではなく、コンテナー化されたソリューションの管理と調整に必要となる可能性のある、すべてのコンポーネントに付属します。この点を理解することが重要です。
デプロイ、スケーリング、負荷分散、ログ記録、監視などの側面はすべてオプションです。 これらの側面に対処するために、ニーズに合った最適なソリューションを見つける必要があります。
Kubernetes によって、プラットフォーム上で実行できるアプリの種類は制限されません。 アプリをコンテナー内で実行できる場合は、Kubernetes で実行できます。 コンテナー化されたソリューションを最適に利用するには、開発者がマイクロサービス アーキテクチャなどの概念を理解する必要があります。
Kubernetes は、ミドルウェア、データ処理フレームワーク、データベース、キャッシュ、またはクラスターストレージ システムは提供しません。 これらの項目はすべて、コンテナーとして、または別のサービス オファリングの一部として実行されます。
Kubernetes がコンテナーを実行するには、Docker や containerd などのコンテナー ランタイムが必要です。 コンテナー ランタイムとは、コンテナーの管理を担当するオブジェクトです。 たとえば、コンテナー ランタイムによって、起動、停止、およびコンテナーの状態に関するレポートが行われます。
自身の Kubernetes 環境は自分で維持する必要があります。 たとえば、OS のアップグレードと Kubernetes のインストールとアップグレードを管理する必要があります。 また、ネットワーク、メモリ、ストレージなど、ホスト コンピューターのハードウェア構成も管理します。
Azure Kubernetes Service (AKS) などのクラウド サービスを利用すると、ホストされた Kubernetes 環境が得られ、これらの課題が軽減されます。 これらのサービスにより、コンテナー化されたアプリの Azure でのデプロイと管理も簡略化されます。 AKS を使用すると、独自のカスタム Kubernetes クラスターを実行する複雑さや運用上のオーバーヘッドを発生させることなく、オープンソースの Kubernetes の利点を得ることができます。
Note
Kubernetes は K8s と省略されることがあります。 8 は、K[ubernete]s という単語の K と s の間の 8 文字を表します。