Azure Kubernetes Service とは

完了

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

コンテナーとは

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

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

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

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

  • 追跡対象の資産に関するマップと情報を含む追跡 Web サイト

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

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

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

仮想マシン (VM)

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

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

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

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

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

  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 はモノリシックではありません。 インストールされているアプリケーションは 1 つではありません。 デプロイ、スケーリング、負荷分散、ログ記録、監視などの側面はすべてオプションです。

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

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

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

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

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

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 のメリットを享受できます。