Azure Kubernetes Service (AKS) における Network Observability のセットアップ - BYO Prometheus と Grafana

AKS Network Observability は、AKS クラスターのネットワーク トラフィック データを収集するために使用されます。 Network Observability 機能により、アプリケーションとネットワークの正常性を監視する一元化されたプラットフォームが実現します。 Prometheus が収集した AKS Network Observability メトリックは、Grafana によって視覚化されます。 Cilium データ プレーンと非 Cilium データ プレーンの両方がサポートされています。 この記事では、Network Observability アドオンを有効にし、BYO Prometheus と Grafana を使用して、スクレイピングされたメトリックを視覚化する方法について説明します。

Note

Kubernetes バージョン 1.29 以降、ネットワーク監視機能では Bring Your Own (BYO) Prometheus と Grafana がサポートされなくなりました。 ただし、Azure Managed Prometheus と Grafana オファリングを使用して有効にすることはできます

重要

AKS Network Observability は現在プレビューの段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

AKS Network Observability について詳しくは、「Azure Kubernetes Service (AKS) Network Observability とは」をご覧ください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事の手順に必要な Azure CLI の最小バージョンは 2.44.0 です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

aks-preview Azure CLI 拡張機能をインストールする

重要

AKS のプレビュー機能は、セルフサービスのオプトイン単位で利用できます。 プレビューは、"現状有姿のまま" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 AKS プレビューは、ベストエフォート ベースでカスタマー サポートによって部分的にカバーされます。 そのため、これらの機能は、運用環境での使用を意図していません。 詳細については、次のサポート記事を参照してください。

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

NetworkObservabilityPreview 機能フラグを登録する

az feature register --namespace "Microsoft.ContainerService" --name "NetworkObservabilityPreview"

az feature show を使用して、機能フラグの登録状態をチェックします。

az feature show --namespace "Microsoft.ContainerService" --name "NetworkObservabilityPreview"

記事を読み進める前に、機能が "Registered" (登録済み) と表示されるまで待ちます。

{
  "id": "/subscriptions/23250d6d-28f0-41dd-9776-61fc80805b6e/providers/Microsoft.Features/providers/Microsoft.ContainerService/features/NetworkObservabilityPreview",
  "name": "Microsoft.ContainerService/NetworkObservabilityPreview",
  "properties": {
    "state": "Registering"
  },
  "type": "Microsoft.Features/providers/features"
}

機能が登録されたら、az provider register を使用して Microsoft.ContainerService リソース プロバイダーの登録を最新の情報に更新します。

az provider register -n Microsoft.ContainerService

リソース グループを作成する

リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 az group create コマンドを使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create \
    --name myResourceGroup \
    --location eastus

AKS クラスターの作成

az aks create コマンドを使用して AKS クラスターを作成します。 次の例では、myResourceGroup という名前のリソース グループに myAKSCluster という名前の AKS クラスターを作成しています。

非 Cilium のクラスターでは、既存のクラスターまたは新しいクラスターの作成時に、Network Observability の有効化がサポートされています。

新しいクラスター

次の例では、az aks create を使用して、Network Observability と非 Cilium の AKS クラスターを作成します。

az aks create \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --location eastus \
    --generate-ssh-keys \
    --network-plugin azure \
    --network-plugin-mode overlay \
    --pod-cidr 192.168.0.0/16 \
    --enable-network-observability

既存のクラスター

既存のクラスター上で Network Observability を有効にするには、az aks update を使用します。

az aks update \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --enable-network-observability 

クラスターの資格情報を取得する

az aks get-credentials --name myAKSCluster --resource-group myResourceGroup

Grafana の視覚化を有効にする

次の例を使用して、Prometheus でスクレイピング ジョブを構成し、AKS クラスターに対し Grafana の視覚化を有効にします。

注意

次のセクションでは、Prometheus と Grafana のインストールが必要です。

  1. 既存の Prometheus 構成に次のスクレイピング ジョブを追加し、Prometheus サーバーを再起動します。

    scrape_configs:
      - job_name: "network-obs-pods"
        kubernetes_sd_configs:
          - role: pod
        relabel_configs:
          - source_labels: [__meta_kubernetes_pod_container_name]
            action: keep
            regex: kappie(.*)
          - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
            separator: ":"
            regex: ([^:]+)(?::\d+)?
            target_label: __address__
            replacement: ${1}:${2}
            action: replace
          - source_labels: [__meta_kubernetes_pod_node_name]
            action: replace
            target_label: instance
        metric_relabel_configs:
          - source_labels: [__name__]
            action: keep
            regex: (.*)
    
  2. Prometheus のターゲットに、network-obs-pods が存在することを確認します。

  3. Grafana にサインインし、ID 18814 を使用して Network Observability ダッシュボードをインポートします。

リソースをクリーンアップする

このアプリケーションを引き続き使用しない場合は、次の例を参考にして、この記事で作成した AKS クラスターとその他のリソースを削除します。

  az group delete \
    --name myResourceGroup

次の手順

このハウツー記事では、AKS クラスターに AKS Network Observability をインストールして有効にする方法について説明しました。