次の方法で共有


Azure Kubernetes Fleet Manager DNS 負荷分散のトラブルシューティング

この記事では、Azure Kubernetes Fleet Manager DNS ベースの負荷分散のトラブルシューティング情報を提供します。 Fleet Manager DNS 負荷分散では、Azure Traffic Manager を使用して、複数の Azure Kubernetes Service (AKS) メンバー クラスターからのパブリック エンドポイント間のトラフィックのバランスを取ります。

Fleet Manager ハブ クラスターを使用したトラブルシューティング

  1. ユーザーは、Azure Traffic Manager プロファイルが作成される Azure サブスクリプションとリソース グループにアクセスできる必要があります。

  2. Azure CLI バージョン 2.72.0 以降のバージョンをインストールまたはアップグレードします。

  3. Kubernetes kubectl コマンド ライン ツールがインストールされていることを確認します。 az aks install-cli コマンドを実行して kubectl をインストールできます。

  4. az extension addcommand を使用して、fleet Azure CLI 拡張機能をインストールします。 インストールされているバージョンが 1.5.2 以上であることを確認します。

    az extension add --name fleet
    
  5. Fleet Manager ハブ クラスター Kubernetes API にアクセスします。 詳細については、「 Fleet Manager ハブ クラスター API へのアクセス」を参照してください。

シナリオ 1: TrafficManagerProfile または Traffic Manager を作成できない

このセクションでは、 TrafficManagerProfile Kubernetes オブジェクトとそれに関連付けられている Azure Traffic Manager リソースが作成されないシナリオの一般的な理由と解決策について説明します。

適切な解決を決定するには、次のコマンドを使用して、Fleet Manager ハブ クラスター上の TrafficManagerProfile オブジェクトの状態を確認します。

kubectl get trafficmanagerprofile -n <namespace> <profile-name> -o yaml

エラー 1: クライアントにアクションを実行するための承認がありません

この問題は、次のいずれかの条件が満たされた場合に発生する可能性があります。

  • 存在しない Azure リソース グループは、 TrafficManagerProfile マニフェストで指定されます。
  • リソース グループが Fleet Manager リソースと同じ Azure サブスクリプションにありません。
  • Fleet Manager ハブ クラスター ID には、指定されたリソース グループ内で Azure Traffic Manager プロファイルを作成および管理するためのアクセス許可がありません。

エラーの詳細については、 TrafficManagerProfile の状態を確認できます。 次の TrafficManagerProfile の状態の例では、アクセス許可が不十分です。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T02:57:33Z"
    message: |
      Invalid profile: GET https://management.azure.com/subscriptions/xxx/resourceGroups/your-fleet-atm-rg/providers/Microsoft.Network/trafficmanagerprofiles/fleet-yyyy
      --------------------------------------------------------------------------------
      RESPONSE 403: 403 Forbidden
      ERROR CODE: AuthorizationFailed
      --------------------------------------------------------------------------------
      {
        "error": {
          "code": "AuthorizationFailed",
          "message": "The client 'xxx' with object id 'xxx' does not have authorization to perform action 
          'Microsoft.Network/trafficmanagerprofiles/read' over scope 
          '/subscriptions/xxx/resourceGroups/your-fleet-atm-rg/providers/Microsoft.Network/trafficmanagerprofiles/fleet-yyyy' or the 
          scope is invalid. If access was recently granted, please refresh your credentials."
        }
      }
      --------------------------------------------------------------------------------
    observedGeneration: 1
    reason: Invalid
    status: "False"
    type: Programmed

解決策

この問題を解決するには、次の手順に従ってください。

  1. Azure リソース グループが存在し、Fleet Manager と同じ Azure サブスクリプション値を持っていることを確認します。
  2. Fleet Manager ハブ クラスター ID に、リソース グループをスコープとする Traffic Manager Contributor ロールが付与されていることを確認します。 詳細については、「 Fleet Manager のアクセス許可を構成する」を参照してください。

エラー 2: ドメイン名を使用できません

この問題は、生成された DNS プレフィックスが別の Azure Traffic Manager プロファイルによって既に使用されている場合に発生する可能性があります。 DNS プレフィックスは、TrafficManagerProfile マニフェストの名前空間とmetadata.name フィールドで構成されます。 たとえば、名前空間が team-a され、 metadata.namewebappされている場合、DNS プレフィックスは team-a-webapp

次の TrafficManagerProfile 状態の例は、ドメイン名が使用できないことを示しています。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T06:39:10Z"
    message: Domain name is not available. Please choose a different profile name or namespace
    observedGeneration: 2
    reason: DNSNameNotAvailable
    status: "False"
    type: Programmed

解決策

この問題を解決するには、 nslookup または同様のツールを使用して、完全な DNS 名 ( team-a-webapp.trafficmanager.net など) が既に終了しているかどうかを判断します。 名前が使用できない場合は、次のいずれかの代替解決策を検討してください。

  • TrafficManagerProfile マニフェストのmetadata.name フィールドを一意の名前に変更します。
  • TrafficManagerProfile マニフェストには別の名前空間を使用します。 この選択は、 TrafficManagerBackend オブジェクトと ServiceExport オブジェクトに影響します。 これらのオブジェクトは、同じ名前空間に存在する必要があります。

エラー 3: Azure Traffic Manager サブスクリプションの制限に達しました

この問題は、1 つの Azure サブスクリプション内に 200 を超える Traffic Manager プロファイルまたはエンドポイントが存在する場合に発生する可能性があります。

次の TrafficManagerProfile 状態の例は、Azure Traffic Manager プロファイルの制限に達したことを示しています。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T06:39:10Z"
    message: Azure Traffic Manager profile limits reached.
    observedGeneration: 2
    reason: Invalid
    status: "False"
    type: Programmed

解決策

未使用のプロファイルを削除するか、制限の引き上げを要求することを検討してください。 詳細については、「 Azure Traffic Manager の制限」を参照してください。

エラー 4: Azure Traffic Manager からエラーが返される

この問題は、Azure Traffic Manager サービスがプロファイルの作成時にエラーを返した場合に発生する可能性があります。

次の TrafficManagerProfile の状態の例は、このエラーを示しています。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T06:39:10Z"
    message: Azure Traffic Manager error message is displayed here.
    observedGeneration: 2
    reason: Invalid
    status: "False"
    type: Programmed

解決策

エラーが解決しない場合は、Azure Traffic Manager サービスの正常性を確認します。

シナリオ 2: TrafficManagerBackend を作成できない

このセクションでは、 TrafficManagerBackend Kubernetes オブジェクトを作成できないシナリオの一般的な原因と推奨される解決策について説明します。

適切な解決を決定するには、次のコマンドを使用して、Fleet Manager ハブ クラスター上の TrafficManagerBackend オブジェクトの状態を確認します。

kubectl get trafficmanagerbackend -n <namespace> <backend-name> -o yaml

エラー 1: TrafficManagerProfile が見つからないか、trafficManagerProfile が無効です

この問題は、次のいずれかの条件が満たされた場合に発生する可能性があります。

  • TrafficManagerBackendは、TrafficManagerProfileとは異なる名前空間に作成されました。
  • TrafficManagerProfile オブジェクトは存在しますが、関連付けられている Azure Traffic Manager リソースが見つかりませんでした。

エラーを示す TrafficManagerBackend 状態の例を次に示します。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T06:43:57Z"
  message: TrafficManagerProfile "nginx-nginx-profile" is not found
  observedGeneration: 1
  reason: Invalid
  status: "False"
  type: Accepted

Azure Traffic Manager リソースがありません。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T07:00:04Z"
  message: 'Invalid trafficManagerProfile "nginx-nginx-profile": Domain name is not available. 
  Please choose a different profile name or namespace'
  observedGeneration: 1
  reason: Invalid
  status: "False"
  type: Accepted

解決策

この問題を解決するには、次の手順に従ってください。

  1. TrafficManagerProfileと同じ名前空間にTrafficManagerBackendを作成してください。
  2. TrafficManagerProfileProgrammed条件がAcceptedされていることを確認します。 有効でない場合は、プロファイル定義の有効性を確認し、再送信します。
  3. Azure Traffic Manager リソースが存在することを確認します。 リソースを再作成するには、Fleet Manager ハブ クラスターから TrafficManagerProfile を削除します。 そして、それを再適用します。

エラー 2: 無効なサービスまたは ServiceExport

この問題は、次のいずれかの条件が満たされた場合に発生する可能性があります。

  • Serviceは、TrafficManagerBackend オブジェクトとは異なる名前空間に作成されました。
  • Serviceは存在しますが、ServiceExport オブジェクトはTrafficManagerBackendと同じ名前空間に作成されませんでした。
  • ServiceLoadBalancer型として定義されていません。
  • Serviceは、Azure パブリック IP アドレスを介して公開されていないか、DNS 名が割り当てられません。

TrafficManagerBackend状態の次の例は、エラーを示しています。

status:
conditions:
- lastTransitionTime: "2025-04-29T07:50:49Z"
  message: ServiceImport "invalid-service" is not found
  observedGeneration: 1
  reason: Invalid
  status: "False"
  type: Accepted

Serviceは、LoadBalancer型として定義されていません。

status:
conditions:
- lastTransitionTime: "2025-04-29T07:56:05Z"
  message: '1 service(s) exported from clusters cannot be exposed as the Azure
    Traffic Manager, for example, service exported from aks-member-5 is invalid:
    unsupported service type "ClusterIP"'
  observedGeneration: 1
  reason: Invalid
  status: "False"
  type: Accepted

解決策

この問題を解決するには、次の手順に従ってください。

  1. ServiceExportを作成して、メンバー クラスターの少なくとも 1 つのServiceが、TrafficManagerBackend オブジェクトの同じ名前空間にエクスポートされていることを確認します。
  2. エクスポートされた Service がロード バランサーの種類であり、Azure パブリック IP アドレスを介して公開されていることを確認します。 このアドレスには、Traffic Manager プロファイルで使用する DNS 名が割り当てられている必要があります。

エラー 3: Azure Traffic Manager プロファイルが見つかりません

この問題は、次のいずれかの条件が満たされた場合に発生する可能性があります。

  • TrafficManagerProfile オブジェクトは存在しますが、関連付けられている Azure Traffic Manager リソースが見つかりません。
  • Fleet Manager ハブ クラスター ID には、指定されたリソース グループ内の Azure Traffic Manager プロファイルまたはエンドポイントを作成および管理するためのアクセス許可がありません。

次の TrafficManagerBackend 状態の例は、エラーを示しています。

status:
conditions:
- lastTransitionTime: "2025-05-08T09:38:36Z"
  message: Azure Traffic Manager profile "fleet-6dd24764-0e46-4b52-b9c6-cc2a3f2535f9" under "your-fleet-atm-rg" is not found
  observedGeneration: 2
  reason: Invalid
  status: "False"
  type: Accepted

解決策

この問題を解決するには、次の手順に従ってください。

  1. Azure Traffic Manager リソースが存在することを確認します。 リソースを再作成するには、Fleet Manager ハブ クラスターから TrafficManagerProfile プロファイルを削除してから、再適用します。
  2. Fleet Manager ハブ クラスター ID に、リソース グループをスコープとする Traffic Manager Contributor ロールが付与されていることを確認します。 詳細については、「 Fleet Manager のアクセス許可を構成する」を参照してください。

エラー 4: Azure Traffic Manager プロファイルの制限に達しました

この問題は、1 つの Azure サブスクリプション内に 200 を超える Azure Traffic Manager エンドポイントが作成される場合に発生する可能性があります。

次の TrafficManagerBackend 状態の例は、エラーを示しています。

status:
  conditions:
  - lastTransitionTime: "2025-04-29T06:39:10Z"
    message: Azure Traffic Manager profile limits reached.
    observedGeneration: 2
    reason: Invalid
    status: "False"
    type: Programmed

解決策

未使用のエンドポイントを削除することを検討してください。 詳細については、「 Azure Traffic Manager の制限」を参照してください。

Azure Log Analytics を使用したトラブルシューティング

Fleet Manager ハブ クラスターのクエリに加えて、Azure Log Analytics を使用してトラブルシューティングを行うことができます。

トラフィックマネージャープロフィール

trafficmanagerprofile/controller.goを使用して、fleet-hub-net-controller-manager カテゴリのエントリをフィルター処理します。

AzureDiagnostics
| where Category == "fleet-hub-net-controller-manager"
| project TimeGenerated, ResourceId, log_s
| where ResourceId == "/subscriptions/xxx/resourceGroups/your-fleet-rg/providers/Microsoft.ContainerService/fleets/your-fleet"
| where log_s contains "trafficmanagerprofile/controller.go"
| limit 1000

トラフィックマネージャーバックエンド

trafficmanagerbackend/controller.goを使用して、fleet-hub-net-controller-manager カテゴリのエントリをフィルター処理します。

AzureDiagnostics
| where Category == "fleet-hub-net-controller-manager"
| project TimeGenerated, ResourceId, log_s
| where ResourceId == "/subscriptions/xxx/resourceGroups/your-fleet-rg/providers/Microsoft.ContainerService/fleets/your-fleet"
| where log_s contains "trafficmanagerbackend/controller.go"
| limit 1000

サードパーティのお問い合わせ窓口に関する免責事項

マイクロソフトは、このトピックについての追加情報を見つけるのに役立つよう、サードパーティの連絡先情報を提供しています。 この連絡先情報は予告なしに変更されることがあります。 マイクロソフトは、第三者の連絡先情報の正確性を保証しません。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、 サポートリクエストを作成するか、 Azure コミュニティ サポートに問い合わせてください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。