Azure Kubernetes Services (AKS) の中心概念

この記事では、コンテナ化されたアプリケーションを Azure に大規模にデプロイして運用するために使用できるマネージド Kubernetes サービスである Azure Kubernetes Service (AKS) の主要な概念について説明します。

Kubernetes とは

Kubernetes は、コンテナー化されたアプリケーションのデプロイ、スケーリング、管理を自動化するための、オープンソースのコンテナー オーケストレーション プラットフォームです。 詳細については、公式の Kubernetes のドキュメントを参照してください。

AKS とは

AKS は、Kubernetes を使ってコンテナー化されたアプリケーションのデプロイ、管理、スケーリングを簡略化するマネージド Kubernetes サービスです。 詳細については、「Azure Kubernetes Service (AKS) とは」を参照してください。

クラスターのコンポーネント

AKS クラスターは、次の 2 つの主要コンポーネントに分割されています。

  • コントロール プレーン: コントロール プレーンは、Kubernetes の主要サービスと、アプリケーション ワークロードのオーケストレーションを提供します。
  • ノード: ノードは、お使いのアプリケーションを実行する基になる仮想マシン (VM) です。

Kubernetes のコントロール プレーンとノードのコンポーネントのスクリーンショット

コントロール プレーン

Azure マネージド コントロール プレーンは、クラスターの管理に役立ついくつかのコンポーネントで構成されています。

コンポーネント 説明
kube-apiserver API サーバー (kube-apiserver) は、Kubernetes API を公開して、クラスターの内外からクラスターへの要求を有効にします。
etcd etcd は、Kubernetes クラスターと構成の状態を維持するのに役立つ、可用性の高いキー値ストアです。
kube-scheduler スケジューラ (kube-scheduler) は、スケジューリングに関する決定を支援し、ノードが割り当てられていない新しいポッドを監視し、それらを実行するノードを選択します。
kube-controller-manager コントローラー マネージャー (kube-controller-manager) は、ノードがダウンしたときに検知して応答するといったコントローラー プロセスを実行します。
cloud-controller-manager クラウド コントローラー マネージャー (cloud-controller-manager) には、クラウド プロバイダー固有のコントローラーを実行するためのクラウド固有の制御ロジックが組み込まれています。

Nodes

各 AKS クラスターには少なくとも 1 つのノードがあり、これは Kubernetes ノードのコンポーネントを実行する Azure 仮想マシン (VM) です。 以下のコンポーネントが各ノードで実行されます。

コンポーネント 説明
kubelet kubelet は、コンテナーが確実にポッド内で実行されるようにします。
kube-proxy kube-proxy は、ノード上にネットワーク規則を保持するネットワーク プロキシです。
コンテナー ランタイム container runtime は、コンテナーの実行とライフサイクルを管理します。

Kubernetes ノードの Azure 仮想マシンとサポート リソースのスクリーンショット

ノード構成

VM のサイズとイメージ

ノードの Azure VM サイズにより、CPU、メモリ、サイズ、使用可能なストレージの種類 (高性能の SSD や通常の HDD など) が定義されます。 選択する VM サイズは、ワークロードの要件と、各ノードで実行する予定のポッドの数によって異なります。 詳しくは、Azure Kubernetes Service (AKS) でサポートされている VM サイズに関する記事をご覧ください。

AKS では、クラスターのノードの VM イメージは、Ubuntu Linux、Azure Linux、または Windows Server 2022 に基づいています。 AKS クラスターを作成したり、ノード数をスケールアウトしたりすると、Azure プラットフォームによって、要求された数の VM が作成され構成されます。 エージェント ノードは標準の VM として課金されるので、VM サイズの割引 (Azure の予約など) はすべて自動的に適用されます。

OS ディスク

既定の OS ディスクのサイズ設定は、新しいクラスターまたはノード プールで、エフェメラル OS ディスクがサポートされておらず、既定の OS ディスク サイズが指定されていない場合にのみ使われます。 詳細については、「既定の OS ディスクのサイズ設定」と「エフェメラル OS ディスク」を参照してください。

リソース予約

AKS では、ノード リソースを使用して、クラスターの一部としてノードを機能させることができます。 このような使い方では、ノードの合計リソースと AKS での割り当て可能リソースが一致しなくなることがあります。 ノードのパフォーマンスと機能を維持するために、AKS では各ノード上で 2 つのタイプのリソース (CPUメモリ) を予約します。 詳しくは、AKS でのリソース予約に関する記事を参照してください。

OS

AKS では、Linux ノード プールのノード OS として Ubuntu 22.04 と Azure Linux 2.0 がサポートされています。 Windows ノード プールでは、AKS の既定の OS として Windows Server 2022 がサポートされています。 Windows Server 2019 は、Kubernetes バージョン 1.32 がサポート終了に達した後に廃止され、将来のリリースではサポートされません。 Windows OS のバージョンをアップグレードする必要がある場合は、「Windows Server 2019 から Windows Server 2022 へのアップグレード」を参照してください。 AKS での Windows Server の使用の詳細については、「Azure Kubernetes Service での Windows コンテナーに関する考慮事項」を参照してください。

コンテナー ランタイム

コンテナー ランタイムは、ノードでコンテナーを実行し、コンテナー イメージを管理するソフトウェアです。 ランタイムにより、Linux または Windows 上でコンテナーを実行するためのシステム コールや OS 固有の機能の抽象化が容易になります。 Linux ノード プールの場合、containerd は Kubernetes バージョン 1.19 以降で使用されます。 Windows Server 2019 および 2022 ノード プールで、containerd は一般提供されており、Kubernetes バージョン 1.23 以降で唯一のコンテナー ランタイム オプションです。

ポッド

"ポッド" は、同じネットワークとストレージ リソースを共有する 1 つ以上のコンテナーのグループであり、コンテナーを実行する方法を示す仕様です。 通常、ポッドにはコンテナーとの 1 対 1 のマッピングがありますが、複数のコンテナーを 1 つのポッドで実行することもできます。

ノード プール

AKS では、同じ構成のノードは "ノード プール" にグループ化されます。 これらのノード プールには、お使いのアプリケーションを実行する基になる仮想マシン スケール セットと仮想マシン (VM) が含まれています。 AKS クラスターを作成するときは、ノードの初期数とそのサイズ (SKU) を定義し、システム ノード プールを作成します。 システム ノード プールの主な目的は、CoreDNS や konnectivity などの重要なシステム ポッドをホストすることです。 コンピューティングまたは記憶域の要件が異なるアプリケーションをサポートするには、ユーザー ノード プールを作成します。 ユーザー ノード プールは、アプリケーション ポッドをホストするという主要な目的を果たします。

詳細については、AKS でのノード プールの作成に関する記事と AKS でのノード プールの管理に関する記事を参照してください。

ノード リソース グループ

Azure リソース グループ内に AKS クラスターを作成すると、AKS リソース プロバイダーにより "ノード リソース グループ" と呼ばれる 2 つ目のリソース グループが自動的に作成されます。 このリソース グループには、仮想マシン (VM)、仮想マシン スケール セット、ストレージなど、クラスターに関連付けられているすべてのインフラストラクチャ リソースが含まれます。

詳細については、次のリソースを参照してください。

名前空間

AKS クラスターを分割し、リソースへのアクセス権の作成、表示、管理を制限するために、ポッドやデプロイなどの Kubernetes リソースは、論理的に 1 つの "名前空間" にグループ化されます。

AKS クラスターでは、以下の名前空間が既定で作成されます。

名前空間 説明
default default 名前空間を使用すると、新しい名前空間を作成せずにクラスター リソースの使用を開始できます。
kube-node-lease kube-node-lease 名前空間を使用すると、ノードがその可用性をコントロール プレーンに通信できるようになります。
kube-public kube-public 名前空間は通常は使用されませんが、あらゆるユーザーがクラスター全体でリソースを表示できるようにするために使用できます。
kube-system kube-system 名前空間は、corednskonnectivity-agentmetrics-server などのクラスター リソースを管理するために Kubernetes によって使用されます。

リソースとアプリケーションを論理的に分割する Kubernetes の名前空間のスクリーンショット

クラスター モード

AKS では、Automatic (プレビュー) モードまたは Standard モードでクラスターを作成できます。 AKS Automatic は、ノード、スケーリング、セキュリティ、その他の事前構成済み設定などのクラスター構成を管理し、より完全に管理されたエクスペリエンスを提供します。 AKS Standard では、ノード プールの管理機能、スケーリング、その他の設定など、クラスター構成をより詳細に制御できます。

詳細については、「AKS の Automatic と Standard の機能比較」を参照してください。

価格レベル

AKSでは、クラスター管理用に FreeStandardPremium の 3 つの価格レベルが用意されています。 選択する価格レベルによって、クラスターの管理に利用可能な機能が決まります。

詳細については、AKS クラスター管理のための価格レベルに関するページをご覧ください。

サポートされている Kubernetes のバージョン

詳細については、「AKS でサポートされる Kubernetes のバージョン」を参照してください。

次のステップ

AKS の中心概念の詳細については、以下のリソースを参照してください。