Azure Kubernetes Service とは

完了

まず、いくつかの定義と、Azure Kubernetes Service (AKS) のクイック ツアーを見ていきましょう。 この概要は、AKS がコンテナー化管理戦略に適している可能性があるかどうかを判断するのに役立ちます。

コンテナーとは

"コンテナー" は、特定のアプリケーションのコード、依存関係、および構成をパッケージ化するソフトウェアのアトミック単位です。 コンテナーを使用すると、モノリシック アプリケーションを、ソリューションを構成する個々のサービスに分割できます。 このアプリケーションの再設計により、コンテナーを使用してこれらの個別のサービスをデプロイできるようになります。

クラウドにデプロイするためのコンテナーとしてレプリケートされたサーバーまたはアプリケーションの画像。

コンテナーを使用する理由

たとえば、フリート管理ソリューションに次の 3 つの主要なアプリケーションが含まれているとします。

  • 地図と、追跡されている資産に関する情報を含む、フリート追跡 Web サイト。

  • 追跡車両から送信された情報を収集して処理するデータ処理サービス。

  • Web サイトからキャプチャされた追跡情報とユーザー情報を格納するための MSSQL データベース。

あなたは、顧客の需要に合わせてソリューションをスケールアウトする必要があることに気付いています。 1 つのオプションとして、アプリケーションごとに新しい仮想マシン (VM) をデプロイし、そのアプリケーションを VM にデプロイする方法があります。 しかし、そのようにすると、追加の各 VM の管理が必要になります。 たとえば、各アプリケーションのオペレーティング システム (OS) の正しいバージョンと依存関係がインストールされ、構成されていることを確認する必要があります。 また、正しいバージョンのアプリケーションをインストールしてアップグレードしていることを確認する必要もあります。 エラーが発生した場合は、ソリューションの中断を最小限に抑えて、インストールをロールバックできるようにする必要があります。

クラウドに VM としてレプリケートされたサーバーと、この問題によって移行の問題がどのように生じるかを示す画像。

上記のデプロイは煩雑で、エラーが発生しやすくなる場合があり、単一のサービスが簡単にスケーリングされません。 たとえば、Web アプリケーションで使用されているキャッシュ サービスだけを簡単にスケーリングできないことに気付く場合があります。 コンテナーは、この種の問題を解決するのに役立ちます。

コンテナーの概念には、次の 3 つの主な利点があります。

  1. コンテナーは変更できない - 不変であるというコンテナーの性質により、1 つのコンピューティング環境から別のコンピューティング環境に、同じ動作を備えたコンテナーを確実にデプロイして実行することができます。 QA 環境でテストされたコンテナー イメージは、運用環境にデプロイされたコンテナー イメージと同じです。

  2. コンテナーが軽量である - コンテナーを VM イメージ (ただし、より小さい) と考えることができます。 VM イメージは通常、物理ホストにインストールされます。 イメージには、実行する OS とアプリケーションの両方が含まれています。 これに対して、コンテナーには OS は不要で、アプリケーションのみが必要です。 コンテナーは常に、カーネル固有のサービスに対してホストでインストールされた OS に依存します。 コンテナーではリソースの消費量がより少なくなり、複数のコンテナーを同じコンピューティング環境にインストールできます。

  3. コンテナーの起動が高速である - VM のように、数分ではなく数秒でコンテナーを起動できます。

上記の利点により、コンテナーは開発者や IT 運用にもよく使用されます。

コンテナー管理とは

クラウドに複数のコンテナーとしてレプリケートされたサーバーの画像。

コンテナーは VM と考えることができますが、そうではないことに注意する必要があります。 コンテナーには個別のライフ サイクルがあります。 要求に応じて、デプロイ、開始、停止、および破棄されます。 このライフ サイクルにより、コンテナーが破棄可能となり、開発者と IT 運用で大きなコンテナー デプロイの管理についてどのように考えるかに影響を与えます。

コンテナーのデプロイ、更新、監視、および削除のプロセスには、多くの課題が伴います。

たとえば、フリート追跡 Web サイトをスケーリングするとします。 1 日の特定の時点で、パフォーマンスを管理するためにサイトのキャッシュ サービスのインスタンスがさらに必要であることがわかりました。 さらにキャッシュ サービス コンテナーを追加することで、この問題を解決できます。

ここで、キャッシュ サービスの新しいバージョンをロールアウトする必要があるとします。 どのようにしてすべてのコンテナーを確実に更新しますか。 より古い、バージョン管理されたコンテナーをすべて削除するにはどのようにしますか。

この種の質問により、コンテナーのデプロイを管理するのに役立つ、何らかのシステムが正当化されます。

Kubernetes とは

Kubernetes クラスターに複数のコンテナーとしてレプリケートされたサーバーの画像。

Kubernetes は、コンテナー化されたワークロードのデプロイ、スケーリング、管理を自動化するための、移植可能で拡張可能なオープンソース プラットフォームです。 Kubernetes では複雑なコンテナー管理が抽象化され、さまざまなコンピューティング環境でコンテナーを調整するための宣言型の構成が提供されます。 このオーケストレーション プラットフォームにより、サービスとしてのプラットフォーム (PaaS) とサービスとしてのインフラストラクチャ (IaaS) 型サービスと同様の使いやすさと柔軟性が実現します。

Kubernetes を使用すると、データ センターを 1 つの大規模なコンピューターとして表示できます。 ここでは、コンテナーをデプロイする方法や場所については気にせず、必要に応じてアプリケーションのデプロイとスケーリングについてのみ気にすることにします。

しかし、注意すべきいくつかの側面があるため、このビューでは若干の誤解を招く可能性があります。

  • Kubernetes は完全な PaaS 型サービスではありません。 コンテナー レベルで動作し、PaaS 機能の共通セットのみが提供されます。

  • Kubernetes はモノリシックではありません。 インストールされている単一のアプリケーションではありません。 デプロイ、スケーリング、負荷分散、ログ記録、監視などの側面はすべてオプションです。 これらの側面に対処するために、ニーズに合った最適なソリューションを見つける必要があります。

  • Kubernetes では、実行できるアプリケーションの種類が制限されません。 アプリケーションをコンテナー内で実行できる場合は、Kubernetes で実行できます。 コンテナー ソリューションを最適に利用するには、開発者がマイクロサービス アーキテクチャなどの概念を理解する必要があります。

  • Kubernetes では、ミドルウェア、データ処理フレームワーク、データベース、キャッシュ、およびクラスター ストレージ システムは提供されません。 これらの項目はすべて、コンテナーとして、または別のサービス オファリングの一部として実行されます。

  • Kubernetes デプロイはクラスターとして構成されます。 クラスターは、少なくとも 1 台のマスター マシンと、1 台以上のワーカー マシンで構成されます。 運用環境のデプロイの場合、優先マスター構成は、3 個から 5 個のレプリケートされたマスターを持つマルチマスターの高可用性デプロイです。 これらのマシンは物理ハードウェアまたは VM である場合があります。 これらのワーカー マシンは、ノードまたはエージェント ノードと呼ばれます。

Kubernetes によって得られる利点があるとはいえ、Kubernetes クラスターを管理する必要があることに注意してください。 たとえば、OS のアップグレードと Kubernetes のインストールとアップグレードを管理する必要があります。 また、ネットワーク、メモリ、ストレージなど、ホスト コンピューターのハードウェア構成も管理します。

Note

Kubernetes は K8s と省略されることがあります。 8 は、K[ubernete]s という単語の K と s の間の 8 文字を表します。

Azure Kubernetes Service とは

AKS Kubernetes クラスターに複数のコンテナーとしてレプリケートされたサーバーの画像。

Azure Kubernetes Service (AKS) では、ホストされている Kubernetes 環境が管理され、Azure でコンテナー化されたアプリケーションを簡単にデプロイおよび管理できるようにします。 AKS 環境では、自動更新、自己復旧、簡単なスケーリングなどの機能が有効になっています。 Kubernetes クラスター マスターは Azure によって管理されており、無料です。 クラスター内のエージェント ノードを管理し、ノードが実行されている VM に対してのみ料金を支払います。

Azure portal でクラスターを作成するか、Azure CLI を使用することができます。 クラスターを作成するときに、Resource Manager テンプレートを使用してクラスターの作成を自動化できます。 これらのテンプレートを使用して、高度なネットワーク、Azure Active Directory (AD) の統合、監視などの機能を指定します。 その後、この情報は、ユーザーに代わってクラスターのデプロイを自動化するために使用されます。

AKS を使用すると、独自のカスタム Kubernetes クラスターを実行する場合と比較して、複雑さや運用上のオーバーヘッドを発生させることなく、オープンソースの Kubernetes の利点を得ることができます。