コンテナ化されたアプリケーションを自動的にデプロイ、管理するサービスがKubernetes(K8s)で、Microsoft Azureでその機能をサポートしているサービスがAzure Kubernetes Service(AKS)です。

 本記事では、Kubernetesの概要、Azure Kubernetes Serviceの概要、利用シナリオ、料金・価格、使い方を解説します。

Kubernetesとは?

 Kubernetesは世界的に人気の高いオープンソースのコンテナオーケストレーションツールです。コンテナオーケストレーションツールとは、コンテナ化されたアプリケーションのデプロイ、管理、スケーリング、監視を自動化するためのソフトウエアです。コンテナオーケストレーションツールを用いることで、複数のコンテナが協調して動作できるようになり、リソースの効率的な利用や障害時の回復が簡単にできます。

 Kubernetesは他のコンテナオーケストレーションツールと比較して下記のような特徴を持つため、大規模なコンテナ化されたアプリケーションの管理に適しており、多くの企業に採用されています。

  • 強力なスケーラビリティ:Kubernetesはトラフィックやリソースの使用状況に応じて、自動でコンテナをスケールイン・スケールアウトできます。
  • 豊富なプラグインとツール:Kubernetesはオープンソースであるため、さまざまなツールやプラグイン(CI/CD、監視、ロギングなど)が豊富に揃っています。
  • ポータビリティ:Kubernetesはオンプレミス、パブリッククラウド、プライベートクラウドなど、さまざまな環境で動作します。これにより、マルチクラウド戦略を採用する際に便利です。
  • 自己修復機能:Kubernetesには、異常が発生したコンテナを自動で再起動したり、正常なノードに再スケジュールしたりする機能があります。
  • マルチベンダー対応:AWS、Azure、Google Cloudなど、主要なクラウドプロバイダーがKubernetesをサポートしています。

Azure Kubernetes Serviceとは?

 Microsoft AzureにおいてKubernetesをサポートしているフルマネージドなプラットフォームサービス(PaaS)がAzure Kubernetes Serviceです。ノードのプロビジョニング、パッチ適用、スケーリングなどの管理作業をMicrosoft Azureが担当するため、開発者や運用チームにとって非常に便利なサービスとなっています。
 Azure PortalやCLIを使って簡単にKubernetesクラスターを作成し、デプロイできます。

 Microsoft Azureのサービスであるため、オンプレミスのKubernetesと比較してAzure Kubernetes Serviceには下記の面で利点があります。

可用性

 Azure Kubernetes Serviceには、Kubernetesが持つ自己修復機能のほかにも以下のような可用性を高めるためのさまざまな仕組みがあります。

 Azureの可用性ゾーンを利用してノードを異なるゾーンに分散配置することで、ハードウエア障害からの耐障害性を向上させる、ゾーン冗長の仕組みがあります。

 クラスターのアップグレードをローリングアップグレード方式(稼働中のインスタンスを少しずつ段階的に更新する方式)で実施できるため、ダウンタイムを最小限に抑えつつ、最新の機能やセキュリティパッチを適用できます。

 Azure Monitorと統合されており、クラスターやアプリケーションのパフォーマンスをリアルタイムで監視できるため、異常が検出された場合はアラートを設定して、迅速な対応が可能です。

セキュリティ

 Azure Kubernetes Serviceは、Azureのほかのさまざまなサービスと統合できます。Azureのサービスを利用することで、セキュリティの面においてはオンプレミスの環境と比較してKubernetesをさまざまな手段で保護できます。

 Microsoft Entra IDの機能やRBAC(ロールベースのアクセス制御)を利用したアクセス制御が可能です。

 Azure Firewallやネットワークセキュリティグループ(NSG)を利用して、外部からの不正アクセスを防止できます。

 Azure Container Registry(ACR)と統合することで、デプロイするコンテナイメージを自動的にスキャンし、脆弱性を検出できます。

 Azure Policyを利用して、クラスター全体にわたるセキュリティポリシーを適用し、コンプライアンスを維持できます。

コスト管理

 Azure Kubernetes Serviceには、Kubernetesと同様に自動スケーリング機能があり、トラフィックや負荷に応じて自動的にノードを追加・削除できるためコストの最適化が図れます。

 アプリケーションごとに異なるノードプールを設定し、異なるVMサイズや価格帯を選べるため、無駄のない構成にすることでコストが削減できます。

 Azureのスポットインスタンスを利用することで、可用性は損ないますが大幅なコスト削減も可能です。

 Azureのサービスを利用したコスト分析も可能で、例えばAzure Cost Managementを使用して、クラスターのコストを分析し、リソースの利用状況やコストトレンドを把握できます。

Azure Kubernetes Serviceの利用シナリオ

 Azure Kubernetes Serviceの具体的な利用シナリオは以下の通りです。

マイクロサービスアーキテクチャの実装マイクロサービスをサービスごとにコンテナ化し、各サービスを管理
CI/CDパイプラインの構築コンテナアプリケーションを自動的にビルド、テスト、デプロイするCI/CDパイプラインを構築
データ処理アプリケーションビッグデータやリアルタイムデータ処理のためのアプリケーションを運用
機械学習モデルのデプロイ機械学習モデルをコンテナ化してデプロイし、モデルのバージョン管理やスケーリングを行う
ウェブアプリケーションのホスティング高可用性を要求されるウェブアプリケーションをホスティングし、トラフィックの増加に応じて自動的にスケールする
IoTアプリケーションのバックエンドIoTデバイスからのデータを処理・分析するバックエンドを構築
クラウドネイティブアプリケーションの開発環境間での移動も容易なコンテナ化されたクラウドネイティブなアプリケーションを開発

 このように、Azure Kubernetes Serviceを利用することで、さまざまなアプリケーションのニーズに対応し、開発や運用の効率を向上させることができます。

Azure Kubernetes Serviceの価格・料金

 Azure Kubernetes Serviceの価格はSLA(Service Level Agreement)とLTS(Long Term Support)の有無によって決定されます。本記事では2024年11月の東日本リージョンにおける料金を公式サイトより引用して記載しています。詳細については公式サイトにて最新の情報をご確認ください。Azure Kubernetes Service – Automaticを利用した場合はStandardレベルの価格が適用されます。

価格レベル料金
Free(SLA、LTSなし)無料
Standard(SLAあり、LTSなし)1クラスターあたり$0.10/時間
Premium(SLAあり、LTSあり)1クラスターあたり$0.60/時間

Azure Kubernetes Serviceの使い方

 Azure Kubernetes Serviceの基本的な使い方を以下に示します。

リソースグループの作成

Azure Portalにログインします。「リソースグループ」を検索し、「+作成」をクリックして任意の名前のリソースグループを作成します。

Kubernetesクラスターの作成

「Kubernetesサービス」を検索します。「+作成」>「Kubernetesクラスター」をクリックします。リソースグループ、クラスター名、リージョン、クラスターに使用するノードの数やサイズなど必要な情報を入力し、「確認および作成」をクリックしてKubernetesクラスターを作成します。

Kubernetesクラスターの管理

Azure Portalの「Kubernetes クラスター」セクションから、手順2で作成したKubernetesクラスターにアクセスして下記の操作が実施できます。

  • ポッド、サービス、ノードなどのリソースの確認
  • マニフェストファイルを使ったアプリケーションのデプロイ
  • ノードやポッドのスケーリング
  • Azure Monitor や Log Analytics などのツールによるクラスターのパフォーマンスの監視

Kubernetesクラスターの削除

手順1で作成したリソースグループを削除することで、Kubernetesクラスターごと作成したリソースを削除できます。

 以上がAzure Kubernetes Serviceの基本的な使い方です。実際にアプリケーションをデプロイしたい場合は公式のクイックスタートも参考にしてみてください。

まとめ

 本記事では、Kubernetesが高いスケーラビリティ、ポータビリティ、自己修復機能を持つオープンソースのコンテナオーケストレーションツールであることを説明しました。そして、そのKubernetesをMicrosoft AzureでサポートしているフルマネージドなプラットフォームサービスがAzure Kubernetes Serviceであることを説明しました。続けて、Azure Kubernetes Serviceが利用されるシナリオ、Azure Kubernetes Serviceの価格、Azure Kubernetes Serviceの簡単な使い方について説明しました。

 本記事が皆様の仕事や学習に役立ちますと幸いです。