このページでは、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.
この問題を解決するには、次の操作を行います。
ネットワークにバインドされているレスポンス ポリシーを取得します。
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" } ]
IAM Policy Analyzer を使用して、
dns.networks.bindDNSResponsePolicy
権限を持つプロジェクトのリストを取得します。各プロジェクトに、ネットワークにバインドされているレスポンス ポリシーがあるかどうかを確認します。
gcloud dns response-policies list --filter='networks.networkUrl:NETWORK_URL' \ --project=PROJECT_NAME
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 アドレスではありません。
次のステップ
Kubernetes DNS の問題の診断に関する一般的な情報については、Debugging DNS Resolution をご覧ください。
Cloud DNS の問題を診断するには、Cloud DNS Logging を有効にし、Cloud DNS トラブルシューティングのドキュメントをご覧ください。
- さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。