GKE での DNS のトラブルシューティング


このページでは、Google Kubernetes Engine(GKE)クラスタ内の DNS プロバイダに関連する問題を解決する方法について説明します。

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。

GKE 向け Cloud DNS のイベント

このセクションでは、GKE における Cloud DNS の一般的な問題について詳しく説明します。

Cloud DNS が無効になっている

Cloud DNS API が無効になっていると、次のイベントが発生します。

Warning   FailedPrecondition        service/default-http-backend
Failed to send requests to Cloud DNS: Cloud DNS API Disabled. Please enable the Cloud DNS API in your project PROJECT_NAME: Cloud DNS API has not been used in project PROJECT_NUMBER before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/dns.googleapis.com/overview?project=PROJECT_NUMBER then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

このエラーは、Cloud DNS API がデフォルトで有効になっていないために発生します。Cloud DNS API は手動で有効にする必要があります。

この問題を解決するには、Cloud DNS API を有効にします

Cloud DNS にリクエストを送信できませんでした: API レート制限を超えています。

プロジェクトが Cloud DNS の割り当てまたは上限を超えると、次のイベントが発生します。

kube-system   27s         Warning   InsufficientQuota
managedzone/gke-cluster-quota-ee1bd2ca-dns     Failed to send requests to Cloud DNS: API rate limit exceeded. Contact Google Cloud support team to request a quota increase for your project PROJECT_NAME: Quota exceeded for quota metric 'Write requests' and limit 'Write limit for a minute for a region' of service 'dns.googleapis.com' for consumer 'project_number:PROJECT_NUMBER.

この問題を解決するには、Cloud DNS の割り当てCompute Engine の割り当てと上限を確認します。Google Cloud コンソールを使用して割り当てを増やすことができます。

以前のエラーにより、Cloud DNS にリクエストを送信できませんでした

エラーが原因でカスケード障害が発生すると、次のイベントが発生します。

kube-system   27s         Warning   InsufficientQuota
managedzone/gke-cluster-quota-ee1bd2ca-dns     Failed to send requests to Cloud DNS: API rate limit exceeded. Contact Google Cloud support team to request a quota increase for your project PROJECT_NAME: Quota exceeded for quota metric 'Write requests' and limit 'Write limit for a minute for a region' of service 'dns.googleapis.com' for consumer 'project_number:PROJECT_NUMBER.
kube-system   27s         Warning   FailedPrecondition               service/default-http-backend                         Failed to send requests to Cloud DNS due to a previous error. Please check the cluster events.

この問題を解決するには、クラスタ イベントを確認して元のエラーの原因を特定し、手順に沿って根本的な問題を解決します。

上記の例では、マネージド ゾーンの InsufficientQuota エラーによってカスケード障害がトリガーされました。FailedPrecondition の 2 番目のエラーは、最初に発生した割り当て不足の問題を示しています。この例の問題を解決するには、Cloud DNS 割り当てエラーのガイダンスに従ってください。

レスポンス ポリシーをバインドできない

レスポンス ポリシーがクラスタのネットワークにバインドされ、Cloud DNS for GKE がレスポンス ポリシーをネットワークにバインドしようとすると、次のイベントが発生します。

kube-system   9s          Warning   FailedPrecondition               responsepolicy/gke-2949673445-rp
Failed to bind response policy gke-2949673445-rp to test. Please verify that another Response Policy is not already associated with the network: Network 'https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/NETWORK_NAME' cannot be bound to this response policy because it is already bound to another response policy.
kube-system   9s          Warning   FailedPrecondition               service/kube-dns
Failed to send requests to Cloud DNS due to a previous error. Please check the cluster events.

この問題を解決するには、次の操作を行います。

  1. ネットワークにバインドされているレスポンス ポリシーを取得します。

    gcloud dns response-policies list --filter='networks.networkUrl: NETWORK_URL'
    

    NETWORK_URL は、エラーのネットワーク URL(https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME など)に置き換えます。

    出力が空の場合、レスポンス ポリシーが同じプロジェクトにない可能性があります。次のステップに進んでレスポンス ポリシーを検索します。

    出力が次のようになったら、ステップ 4 に進んでレスポンス ポリシーを削除します。

    [
       {
          "description": "Response Policy for GKE cluster \"CLUSTER_NAME\" with cluster suffix \"cluster.local.\" in project \"PROJECT_ID\" with scope \"CLUSTER_SCOPE\".",
          ...
          "kind": "dns#responsePolicy",
          "responsePolicyName": "gke-CLUSTER_NAME-POLICY_ID-rp"
       }
    ]
    
  2. IAM Policy Analyzer を使用して、dns.networks.bindDNSResponsePolicy 権限を持つプロジェクトのリストを取得します。

  3. 各プロジェクトに、ネットワークにバインドされているレスポンス ポリシーがあるかどうかを確認します。

    gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \
        --project=PROJECT_NAME
    
  4. レスポンス ポリシーを削除します

kube-dns で指定された構成が無効

Cloud DNS for GKE に有効でないカスタム kube-dns ConfigMap を適用すると、次のイベントが発生します。

kube-system   49s         Warning   FailedValidation                 configmap/kube-dns
Invalid configuration specified in kube-dns: error parsing stubDomains for ConfigMap kube-dns: dnsServer [8.8.8.256] validation: IP address "8.8.8.256" invalid

この問題を解決するには、ConfigMap で無効な部分に関するエラーの詳細を確認します。上記の例では、8.8.8.256 は有効な IP アドレスではありません。

次のステップ