Config Controller のトラブルシューティング

このページでは、Config Controller に関する問題の解決方法について説明します。

デフォルト ネットワークを使用できない

Config Controller を作成する際に、デフォルト ネットワークを使用できないというエラーが表示される場合があります。

Error 400: Project \"PROJECT_ID\" has no network named \"default\"., badRequest\n\n  on main.tf line 35, in resource \"google_container_cluster\" \"acp_cluster\"

このエラーは、Config Controller が Google Cloud にデフォルト ネットワークがあることを前提としているため発生します。この問題を解決するには、新しいデフォルト ネットワークを作成する必要があります。

gcloud compute networks create default --subnet-mode=auto

または、gcloud anthos config controller create コマンドで --network フラグを使用して別のネットワークを選択することもできます。

MasterIpv4CidrBlock の値が無効

Config Controller の作成では、コントロール プレーンの IPv4 CIDR172.16.0.128/28 のデフォルト サブネットを使用します。IPv4 CIDR ブロックに競合があると、Config Controller の作成は失敗し、次のエラーが返されます。

Cloud SSA\n\nError: Error waiting for creating GKE cluster: Invalid value for field PrivateClusterConfig.MasterIpv4CidrBlock: 172.16.0.128/28 conflicts with an existing subnet in one of the peered VPCs.

このエラーが表示された場合は、別のプライベート IPv4 CIDR を選択し、gcloud config controller create コマンドで --master-ipv4-cidr-block フラグを指定して使用します。

すでに使用されている IPv4 CIDR ブロックを見つける手順は次のとおりです。

  1. ピアリングの名前を見つけます。

    gcloud compute networks peerings list --network=NETWORK
    

    NETWORK は、検索するネットワークの名前に置き換えます。

    出力は次のようになります。

    NAME                                     NETWORK  PEER_PROJECT               PEER_NETWORK                            PEER_MTU  IMPORT_CUSTOM_ROUTES  EXPORT_CUSTOM_ROUTES  STATE   STATE_DETAILS
    gke-n210ce17a4dd120e16b6-7ebf-959a-peer  default  gke-prod-us-central1-59d2  gke-n210ce17a4dd120e16b6-7ebf-0c27-net            False                 False                 ACTIVE  [2021-06-08T13:22:07.596-07:00]: Connected.
    
  2. ピアリングで使用されている IPv4 CIDR を表示します。

    gcloud compute networks peerings list-routes PEERING_NAME \
        --direction=INCOMING \
        --network=NETWORK \
        --region=us-central1
    

    次のように置き換えます。

    • PEERING_NAME: 検索するピアリングの名前
    • NETWORK: 検索するネットワークの名前

同期エラー

Git リポジトリ内の構成は、Config Sync を使用して Config Controller に同期されます。この同期プロセスのエラーは、nomos status コマンドを使用して確認できます。

nomos status  --contexts $(kubectl config current-context)

Config Connector リソースのトラブルシューティング

変更不可のフィールドとリソース

プロジェクト ID や VPC ネットワークの名前など、基盤となる Google Cloud リソースのフィールドには、変更できないものがあります。このようなフィールドの編集は、Config Connector によりブロックされ、変更を反映できません。こうした変更不可フィールドの 1 つを編集する必要がある場合は、まず(Git で)元のリソースを削除し、つづいて希望する新しい値で追加し直す必要があります。

停止しているリソース

場合によっては、リソースが正しく削除できないことがあります(nomos status で報告されます)。この問題は、リソースのファイナライザを削除した後、手動でリソースを削除することにより解決できます。

たとえば、動かなくなった IAMPolicyMember を削除するには、次のコマンドを実行します。

kubectl patch IAMPolicyMember logging-sa-iam-permissions -p '{"metadata":{"finalizers":[]}}' --type=merge -n config-control
kubectl delete IAMPolicyMember logging-sa-iam-permissions -n config-control