トラブルシューティング

このページでは、Config Connector の使用時に発生する可能性がある一般的なエラーと、トラブルシューティングの手順について説明します。

一般的なエラー メッセージ

種類 Foo に一致する結果は見つかりませんでした

このエラーが発生した場合、Kubernetes クラスタに「Foo」リソースの種類の CRD がインストールされていません。

まず、その種類が Config Connector Resources にあることを確認します。

種類がリストにある場合は、バージョンが古いか、Config Connector のインストールが無効です。GKE アドオンによるアップグレードは自動的に実行されます。手動インストールのアップグレードについては、他の Kubernetes ディストリビューションへのインストールをご覧ください。

リソース向けの status が表示されない

適用されているリソースに status フィールドが表示されない場合、最もよくある原因として、Config Connector の一部であるポッドが適切に動作していないことが考えられます。

トラブルシューティングを行うには、cnrm-system 名前空間で異常な Pod を調べます。

kubectl get pods -n cnrm-system --field-selector status.phase!=Running

spec.labels は基盤となる Google Cloud リソースには適用されません。

Config Connector は、metadata.labels にあるラベルを、基盤となる Google Cloud API にプロパゲートします。リソースの spec にはラベルを指定しないでください。spec.labels で指定されたラベルはすべて無視されます。

詳細については、オブジェクトのメタデータをご覧ください。

よくある質問

Config Connector のバージョン XX が GKE アドオンとして利用可能になるのはいつですか?

Config Connector アドオンのバージョンは、GKE バージョンに関連付けられており、最新バージョンから最大で 10 週間の遅れがあります(チャネルおよびチャネルのバージョンによって変動します)。

バージョンを細かく制御するには、アドオンから手動インストールへの切り替えをご覧ください。

指標

指標は、Prometheus によりスクレイピング用に公開されます

ロギング

Config Connector の一部であるすべての Pod は、JSON 形式でログに記録されます。

特に、特定のリソースの調整に関する問題をデバッグする場合に cnrm-controller-manager Pod のログが有用です。

次のフィールドのフィルタリングは、ログを調べる際に有用です。

  • logger: リソースの種類が含まれます。たとえば、PubSubTopic リソースには、pubsubtopic-controllerlogger が含まれます。
  • resource.namespace: リソースの名前空間が含まれます。
  • resource.name: リソースの名前が含まれます。

特定のリソースのログメッセージ

GKE を使用している場合は、次のクエリを使用して、特定のリソースのログをクエリできます。

# Filter to include only logs coming from the cnrm-controller-manager Pods
resource.type="k8s_container"
resource.labels.container_name="manager"
resource.labels.namespace_name="cnrm-system"
labels.k8s-pod/cnrm_cloud_google_com/component="cnrm-controller-manager"

# Filter to include only logs coming from a particular GKE cluster
resource.labels.cluster_name="GKE_CLUSTER_NAME"
resource.labels.location="GKE_CLUSTER_LOCATION"

# Filter to include only logs for a particular Config Connector resource
jsonPayload.logger="RESOURCE_KIND-controller"
jsonPayload.resource.namespace="RESOURCE_NAMESPACE"
jsonPayload.resource.name="RESOURCE_NAME"

以下を置き換えます。

  • GKE_CLUSTER_NAME は、Config Connector を実行している GKE クラスタの名前に置き換えます。
  • GKE_CLUSTER_LOCATION は、Config Connector を実行している GKE クラスタの場所に置き換えます。例: us-central1
  • RESOURCE_KIND は、小文字のリソースの種類に置き換えます。例: pubsubtopic
  • RESOURCE_NAMESPACE は、リソースの名前空間に置き換えます。
  • RESOURCE_NAME は、リソースの名前に置き換えます。

その他の参考情報

追加のサポートが必要な場合は、GitHub で問題を報告するか、Google Cloud サポートにお問い合わせください。

チケットを送信するときは、クラスタ診断スクリプトの出力を含めてください。

UNIX ベースのオペレーティング システムの場合は、次のコマンドでスクリプトを実行できます。

source <(curl -s
  https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-config-connector/master/scripts/cluster-diagnostics.sh)