この記事では、Azure Kubernetes Service (AKS) でコスト分析を有効にして、クラスター リソースの詳細なコスト データを表示する方法について説明します。
AKS コスト分析の概要
AKS クラスターは、仮想マシン (VM)、仮想ディスク、ロード バランサー、パブリック IP アドレスなどの Azure リソースに依存します。 複数のアプリケーションでこれらのリソースを使用できます。 多くの場合、リソース消費パターンはアプリケーションごとに異なるため、クラスター リソース コストの合計に占める割合も異なる場合があります。 一部のアプリケーションでは、複数のクラスターにわたって占有領域が存在する場合があります。これは、コストの属性およびコスト管理を実行するときに課題になる可能性があります。
AKS クラスターでコスト分析を有効にすると、クラスターや名前空間などの Kubernetes 構成、Azure Compute、ネットワーク、ストレージ リソースに絞った詳細なコスト配分を表示できます。 アドオンは、OpenCost (使用状況データ収集のためのオープンソース Cloud Native Computing Foundation Incubating プロジェクト) に基づいて構築されています。 使用状況データは、Azure ポータルで直接 AKS クラスターコストの包括的なビューを提供するために、Azure請求書データと調整されます。
Microsoft Cost Management の詳細については、「Azure でコストの分析を開始する」を参照してください。
コスト分析アドオンを有効にし、データの収集に最大 24 時間を許可した後は、「 AKS の使用状況とコストを理解 する」の情報を使用して、データを理解できます。
前提条件
- クラスターでは、
Standardレベルではなく、PremiumレベルまたはFreeレベルが使用される必要があります。 - コスト分析情報を表示するには、クラスターをホストするサブスクリプションに対して、
Owner、Contributor、Reader、Cost Management Contributor、またはCost Management Readerのいずれかのロールが必要です。 - マネージド ID クラスターで構成されます。
- クラスターで有効になっている Azure Disk Container Storage Interface (CSI) ドライバー。
- Azure CLI を使用する場合は、バージョン
2.61.0以降がインストールされている必要があります。 - コスト分析を有効にした後は、最初にコスト分析を無効にしないと、クラスターを
Freeレベルにダウングレードすることはできません。 - Azure Resource Manager (ARM) API を含む Azure API へのアクセス。 必要となる完全修飾ドメイン名 (FQDN) の一覧については、「AKS コスト分析で必要な FQDN」を参照してください。
制限事項
- Kubernetes のコスト ビューは、Enterprise Agreement および Microsoft 顧客契約の Microsoft Azure の提供タイプでのみ使用できます。 詳細については、「サポートされている Microsoft Azure オファー」を参照してください。
- 現在、仮想ノードはサポートされていません。
- アドオンは、
usnateast、usnatwest、usseceast、またはussecwestリージョンでは使用できません。 詳細については、 AKS コスト分析アドオンの問題とトラブルシューティングに関する説明を参照してください。 - AKS コスト分析アドオンは、現在の 4 GB のメモリ制限に基づいて、クラスターあたり約 7,000 個のコンテナーをサポートしており、変更される可能性があります。
AKS クラスターでコスト分析を有効にします
次のいずれかの操作中に、--enable-cost-analysis フラグを使用してコスト分析を有効にできます。
-
StandardレベルまたはPremiumレベル AKS クラスターの作成。 - 既存の
Standardレベル またはPremiumレベル AKS クラスターの更新。 -
FreeクラスターのStandardまたはPremiumへのアップグレード。 -
StandardクラスターのPremiumへのアップグレード。 -
PremiumクラスターのStandardレベルへのダウングレード。
新しいクラスターでコスト分析を有効にする
az aks create フラグ付きの --enable-cost-analysis コマンドを使用して、新しいクラスターのコスト分析を有効にします。 次の例は、コスト分析が有効になっている Standard レベルの新しい AKS クラスターを作成します。
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="AKSCostRG$RANDOM_SUFFIX"
export CLUSTER_NAME="AKSCostCluster$RANDOM_SUFFIX"
export LOCATION="WestUS2"
az group create --resource-group $RESOURCE_GROUP --location $LOCATION
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --location $LOCATION --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis
結果:
{
"id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
"location": "WestUS2",
"name": "AKSCostClusterxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.ContainerService/managedClusters"
}
既存のクラスターでコスト分析を有効にする
az aks update フラグ付きの --enable-cost-analysis コマンドを使用して、既存のクラスターのコスト分析を有効にします。 次の例では、コスト分析を有効にするために、 Standard 層の既存の AKS クラスターを更新します。
$RESOURCE_GROUPと$CLUSTER_NAMEをリソース グループとクラスター名に置き換えるか、環境変数として設定します。
az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-cost-analysis
結果:
{
"id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
"name": "AKSCostClusterxxxx",
"properties": {
"provisioningState": "Succeeded"
}
}
注
アドオンを有効にすると、ひとつのエージェントがクラスターにデプロイされます。 このエージェントは、少量の CPU リソースとメモリ リソースを消費します。
警告
AKS コスト分析アドオンのメモリ使用量は、デプロイされるコンテナーの数によって異なります。 200 MB + 0.5 MB/コンテナーを使用して、メモリ消費量を概算できます。 現在のメモリ制限は 4 GB に設定されており、 クラスターあたり約 7,000 個のコンテナーがサポートされています。 これらの見積もりは変わる可能性があります。
注
コスト分析を有効にすると、クラスターのノード リソース グループへの読み取りアクセス権を持つ という名前のcost-analysis-identity も作成され、クラスター内のノード プールに割り当てられます。
これは、レポート用のクラスター資産の ARM 識別子を収集するために使用されます。
ノード プールには既にマネージド ID があるため、マネージド ID を使用するノード上のすべてのコマンドでは、ノード プールのマネージド ID に依存するのではなく、使用する ID を指定 する必要があります。
たとえば、az login --identity --resource-id <resource ID of identity> のようにします。
AKS クラスターでコスト分析を無効にする
az aks update フラグ付きの --disable-cost-analysis コマンドを使用してコスト分析を無効にします。
az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --disable-cost-analysis
結果:
{
"id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
"name": "AKSCostClusterxxxx",
"properties": {
"provisioningState": "Succeeded"
}
}
注
コスト分析が有効になっているときにクラスターを Standard レベルまたは Premium レベルから Free レベルにダウングレードする場合は、まずコスト分析を無効にする必要があります。
コスト データを表示する
Azure portal では、コストの割り当てデータを表示できます。
Azure ポータルで、AKS クラスターをホストするAzure サブスクリプションに移動します。 [コスト管理] で、[ コスト分析] を選択します。 [表示] ボックスの一覧で、一覧のドロップダウン 項目を選択し、[Kubernetes クラスター] を選択します。
詳細については、「Microsoft Cost Management での AKS コストの表示」を参照してください。
コストの定義
Kubernetes 名前空間と資産ビューでは、次のいずれかの料金が表示される場合があります。
| 料金タイプ | Description |
|---|---|
| アイドル状態料金 | ワークロードで使用されない使用可能なリソース容量のコスト。 |
| サービス料金 | Uptime SLA、Microsoft Defender for Containers など、サービスに関連する料金。 |
| システム料金 | kubelet やコンテナー ランタイムなど、クラスターで必要なシステム プロセスを実行するために各ノードの AKS によって予約された容量のコスト。 詳細については、こちらを参照してください。 |
| 未割り当て料金 | 名前空間に割り当てられなかったリソースのコスト。 |
注
通常、システムは最終処理を行い、コストと使用状況のデータを 8 ~ 24 時間以内に使用できるようにします。
トラブルシューティング
cost-agent ポッドでの OOMKilled の発生や、Pending 状態でのスタックなど、問題が発生する場合は、AKS コスト分析アドオンの問題のトラブルシューティングに関する記事をご覧ください。
次のステップ
AKS のコストの詳細については、「Azure Kubernetes Service (AKS) の使用状況とコストについて」を参照してください。