Azure Kubernetes Service とは

完了

まず、いくつかの定義と、Azure Kubernetes Service (AKS) のクイック ツアーを見ていきましょう。 この概要では、AKS がコンテナー化の管理戦略に適したプラットフォームであるかどうかを判断するのに役立つ情報を提供します。

コンテナーとは

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

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

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

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

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

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

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

あなたは、顧客の需要を満たすためにはソリューションをスケールアウトする必要があることに気付いています。

仮想マシン (VM)

選択肢の 1 つとしては、複数のリージョンにまたがってホストされているすべてのアプリケーションに新しい仮想マシンをデプロイすることがあります。 次に、新しい VM にアプリケーションをコピーします。 ただし、そのようにすると、使用する各 VM の管理が必要になります。

スケーリングすると、メンテナンスのオーバーヘッドが増加します。 各アプリケーションについての VM のオペレーティング システム (OS) のバージョンと依存関係をプロビジョニングし、一致するように構成する必要があります。 OS と大きな変更に影響を与えるアプリケーションにアップグレードを適用する場合は、予防措置があります。 アップグレード中にエラーが発生する場合は、インストールのロールバックが必要となり、ダウンタイムや遅延などの中断の原因となります。

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

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

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

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

  2. 小さいサイズ - コンテナーは VM に似ていますが、各マシンにカーネルはありません。 代わりに、ホスト カーネルを共有します。 VM は、大きなイメージ ファイルを使用して、実行する OS とアプリケーションの両方を格納します。 これに対して、コンテナーには OS は不要で、アプリケーションのみが必要です。

  3. 軽量 - コンテナーは常に、カーネル固有のサービスのために、ホストにインストールされた OS に依存します。 軽量プロパティによってコンテナーのリソースを削減できるため、同じコンピューティング環境内に複数のコンテナーをインストールできます。

  4. 起動が高速 - コンテナーは、起動に数分かかる可能性がある VM とは異なり、数秒で起動します。

このような利点により、コンテナーは開発者や IT 運用にもよく使用されており、VM からの多くの切り替えが行われています。

コンテナー管理とは

クラウド内の複数のコンテナーとしてレプリケートされたサーバーを示す図。

機能的には、コンテナーは VM に似ていますが、その目的は異なります。 コンテナーには、一時マシンとして存在する個別のライフ サイクルがあります。 その状態は、保留中、実行中、終了の各ステージを経過します。 このライフ サイクルにより、コンテナーはより破棄可能となり、開発者と IT 運用で、相互に接続された大きなアプリケーションの管理についてどのように考えるかに影響を与えます。 コンテナーの管理には、コンテナーのデプロイ、アップグレード、監視、削除が含まれます。

例として、あなたは正午にサイトのトラフィックが増大することに気付いたため、パフォーマンスを管理するためにサイトのキャッシュ サービスのインスタンスをさらに必要としているとしましょう。 この問題を、さらにキャッシュ サービス コンテナーを追加することで解消しようと計画します。

さて、キャッシュ サービスの新しいバージョンをロールアウトするタイミングとなりました。 どのようにしてすべてのコンテナーを更新しますか。 従前のバージョンをすべて削除するにはどのようにしますか。

この種の負荷分散の問題では、コンテナーのデプロイを管理するためのシステムが必要となります。

Kubernetes とは

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

Kubernetes クラスター内の複数のコンテナーとしてレプリケートされたサーバーを示す図。

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

Kubernetes について留意すべきその他の側面を次に示します。

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

  • Kubernetes はモノリシックではありません。 インストールされている単一のアプリケーションではありません。 デプロイ、スケーリング、負荷分散、ログ記録、監視などの側面はすべてオプションです。

  • Kubernetes では、実行するアプリケーションの種類に制限はありません。 アプリケーションがコンテナー内で実行可能ならば、そのアプリケーションは Kubernetes で実行できます。

  • コンテナー ソリューションを最適に利用するには、開発者がマイクロサービス アーキテクチャなどの概念を理解する必要があります。

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

  • Kubernetes デプロイはクラスターとして構成されます。 クラスターは、少なくとも 1 台のプライマリ マシンまたはコントロール プレーンと、1 台以上のワーカー マシンで構成されます。 運用環境のデプロイには、ノードまたはエージェントノードと呼ばれる 3 台から 5 台のレプリケートされたコントロール プレーン マシンがある高可用性構成が推奨されます。

Kubernetes によって得られるこれらすべてのメリットを考慮して、これらの側面に対処するために、ニーズに合った最適なソリューションを見つける必要があります。 Kubernetes クラスターのメンテナンスを行う責任があることに注意してください。 たとえば、OS のアップグレードと Kubernetes のインストールとアップグレードを管理する必要があります。 また、ネットワーク、メモリ、ストレージなど、ホスト コンピューターのハードウェア構成も管理します。

Note

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

Azure Kubernetes Service (AKS) とは

AKS Kubernetes クラスター内の複数のコンテナーとしてレプリケートされたサーバーを示す図。

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

Azure portal で、または Azure CLI を使用してクラスターを作成して管理できます。 クラスターを作成する際には、クラスターの作成を自動化する Resource Manager テンプレートがあります。 これらのテンプレートを使用すると、高度なネットワーク オプション、Microsoft Entra Identity、リソース監視などの機能にアクセスできます。 その後、トリガーとイベントを設定して、複数のシナリオでクラスターのデプロイを自動化できます。

AKS を使用すると、Kubernetes 単体の使用に伴う余分な複雑さや運用上のオーバーヘッドをなくして、オープンソースの Kubernetes のメリットを享受できます。