このページでは、Config Sync のエラーコードと、これらのエラーを処理するために推奨される対応について説明します。
Config Sync のエラー メッセージは、KNV1234 という形式のエラー ID で構成されます。1234 は一意の番号で、その後に問題の説明と修正方法の提案が表示されます。K は Kubernetes の慣例から継承されます。接頭辞 N を持つルールは nomos に固有のものです。V は、リポジトリとクラスタの初期状態で検出可能なエラーに固有のものです。リポジトリとクラスタの初期状態で検出可能なエラーのコードは、KNV1XXX の形式です。実行時にのみ検出できるエラーのコードは KNV2XXX の形式です。
KNV エラーテーブル
| エラーコード | 説明 | ご対応のお願い |
|---|---|---|
|
Config Sync バージョン 1.6.1 で InternalError の ID が |
なし |
|
Config Sync 1.3 で非推奨になっています。 |
なし |
|
Config Sync 1.3 で非推奨になっています。 |
なし |
|
階層型リポジトリ構造を使用する場合、名前空間構成ファイルが含まれるディレクトリにサブディレクトリを含めることはできません。 名前空間構成ファイルが含まれていないディレクトリは抽象名前空間ディレクトリであり、それを継承するディレクトリがあります。したがって、抽象名前空間ディレクトリにはサブディレクトリが必要です。名前空間構成を含むディレクトリは名前空間ディレクトリであり、そこから構成を継承することはできないため、サブディレクトリを持つことはできません。 |
親ディレクトリから名前空間構成を削除するか、サブディレクトリを別の場所に移動します。 |
|
クラスタ スコープ オブジェクトはアノテーション |
|
|
管理アノテーションの有効な設定は |
管理アノテーションが 詳細については、オブジェクトの管理をご覧ください。 |
|
リポジトリ内で宣言されたオブジェクトを解析できませんでした。 |
YAML 形式を検証します。たとえば、
|
|
非構造化リポジトリを使用する場合は、抽象名前空間ディレクトリで構成ファイルを宣言しないでください。 |
エラー メッセージに記載されている構成を Namespace ディレクトリに移動します。 詳細については、非構造化リポジトリの使用をご覧ください。 |
|
階層型リポジトリ構造を使用する場合、構成ファイルで名前空間ディレクトリに一致する名前空間が宣言されているか、このフィールドが省略されている必要があります。 |
エラー メッセージで特定された Namespace フィールドを更新します。 詳細については、階層型リポジトリの構造をご覧ください。 |
|
構成で、 |
次のサポートされているアノテーションのいずれかを使用していることを確認してください。
|
|
|
エラー メッセージで特定されたラベルを更新します。たとえば、 |
|
Config Sync 1.3 で非推奨になっています。 |
なし |
|
構成で、存在していない ClusterSelector または NamespaceSelector を参照しています。構成のアノテーションでセレクタを使用するには、そのセレクタが存在している必要があります。 |
不足しているセレクタを作成するか、セレクタが削除された場合は、それを参照している構成を削除します。 |
|
ClusterSelector 構成と NamespaceSelector 構成で正しい構文が使用されているものの、構文エラーが見つかりました。 |
適切なデータスキーマを使用して構成を指定します。
|
|
Config Sync 1.3.2 で非推奨になっています。 | なし |
|
階層型リポジトリ構造を使用する場合、ConfigManagement Operator の構成ファイルはリポジトリの |
ConfigManagement Operator の最小構成を定義します。詳細については、階層型リポジトリの構造をご覧ください。 |
|
Config Sync 1.3 で非推奨になっています。 | なし |
|
階層型リポジトリ構造を使用する場合、 |
エラー メッセージに記載されている Namespace 構成のサブディレクトリを作成します。詳細については、階層型リポジトリの構造をご覧ください。 |
|
階層型リポジトリ構造を使用する場合、名前空間構成ファイルに metadata.name を宣言します。その値は名前空間のディレクトリの名前と一致する必要があります。 |
Namespace の metadata.name を修正するか、ディレクトリ名を変更します。 |
|
クラスタ内のリソースに対して CustomResourceDefinition が定義されていません。 |
エラー メッセージで参照されているリソースの CustomResourceDefinition を作成します。組み込みの Kubernetes オブジェクトではないリソースタイプには、CustomResourceDefinition が必要です。 |
|
階層型リポジトリを使用している場合、この種類の構成は |
エラー メッセージで参照されているリソースを |
|
Repo 構成の |
リポジトリの形式がサポートされているバージョンと互換性がある場合は、 |
|
ディレクトリ名は 64 文字未満で、小文字の英数字または「-」で構成し、英数字で始まり英数字で終わる必要があります。 |
名前が間違っているディレクトリの名前を変更するか、削除します。 |
|
同じ Kind の構成は、同じ Namespace と親の抽象 Namespace 内で一意の名前を持つ必要があります。 |
エラー メッセージで参照されている構成の名前を変更するか、削除して、すべてが一意の名前になるようにします。 |
|
同じディレクトリに複数の Namespace リソースを存在させることはできません。 |
重複する構成を削除して、Namespace リソースが 1 つだけ残るようにします。 |
|
すべての構成で |
問題のある構成に |
|
|
問題のある構成を削除するか、リポジトリを |
|
階層型リポジトリを使用している場合は、 |
|
|
|
以前に階層型リポジトリと同期していて、リソースとともにコントローラの名前空間を宣言する必要があった場合は、ソース構造で柔軟性を高めるために非構造化リポジトリへの切り替えを検討してください。 |
|
指定された |
次の条件を満たすように
|
|
Config Sync 1.3 で非推奨になっています。 | なし |
|
Namespace スコープ オブジェクトを |
問題のある構成ファイルを正しいディレクトリに移動します。名前空間スコープ オブジェクトの詳細については、名前空間スコープ オブジェクトをご覧ください。 |
|
クラスタ スコープ オブジェクトを |
問題のある構成ファイルを正しいディレクトリに移動します。クラスタ スコープ オブジェクトの詳細については、クラスタ スコープ オブジェクトをご覧ください。 |
|
Config Sync 1.3 で非推奨になっています。 | なし |
|
このリソースの種類は |
問題のあるリソースを削除します。HierarchyConfigs の詳細については、 |
|
|
|
|
Config Sync はこのオブジェクトを構成できません。 |
リポジトリから問題のある構成を削除します。 |
|
構成を含む抽象名前空間ディレクトリには、少なくとも 1 つの名前空間サブディレクトリが必要です。 |
抽象 Namespace ディレクトリの下に Namespace ディレクトリを追加するか、抽象 Namespace ディレクトリに Namespace 構成を追加するか、抽象 Namespace ディレクトリの構成を削除します。 |
|
|
ソース リポジトリから |
|
この |
問題のあるリソースを参照しないように |
|
カスタム リソース定義(CRD)を削除し、対応するカスタム リソースをリポジトリに残すことはできません。 |
カスタム リソースとともに CRD を削除します。 |
|
CustomResourceDefinition の名前が無効です。 |
エラー メッセージに表示された推奨事項に名前を変更します。 |
|
構成で非推奨の Group と Kind が使用されています。 |
エラー メッセージの推奨事項に従って、グループまたは種類を変更します。 |
|
クラスタ スコープのリソースは |
クラスタ スコープのリソースから metadata.namespace フィールドを削除します。 |
|
名前空間スコープのリソースは、 |
不足しているフィールドを Namespace スコープのリソースに追加します。 |
|
構成ファイルのアノテーションに無効な値が含まれています。 |
エラー メッセージの手順に沿ってエラーを解決します。 |
|
|
|
|
リソースが非マネージド Namespace で宣言されています。 |
|
|
リソースに無効なラベルがあります。 |
エラー メッセージに記載されている無効なラベルを削除します。 |
|
Namespace リポジトリでは、リポジトリが適用される Namespace で名前空間スコープのリソースのみを宣言できます。 |
すべての Namespace リポジトリが Namespace スコープのリソースを正しく宣言していることを確認します。たとえば、
たとえば、 Namespace スコープのリソースが正しく宣言されていることを確認するだけでなく、Namespace がルート リポジトリで宣言されていることを確認します。これは、namespace がクラスタ スコープであるため必要です。 |
|
namespace リポジトリで宣言できる Kptfile リソースは 1 つだけです。 |
Kptfile リソースを 1 つだけ残して、他はすべて削除します。 |
|
複数の信頼できる情報源のオブジェクトを管理する場合、同じオブジェクト(一致するグループ、種類、名前、namespace)が複数のソースで宣言されると、競合が発生する可能性があります。 たとえば、同じオブジェクトが RootSync と RepoSync で管理されている場合、RootSync が優先されます。RootSync が最初に適用された場合、RepoSync は KNV1060 ステータス エラーを報告します。RepoSync が最初に適用された場合、RootSync は RepoSync のオブジェクトを上書きします。RepoSync はこの更新を検出し、KNV1060 ステータス エラーを報告します。 |
他の信頼できる情報源と一致するように構成ファイルを更新するか、競合するオブジェクトをいずれかのソースから削除することで、競合を解決します。
|
|
|
エラー メッセージの手順に沿って、構成エラーを修正します。 |
|
Kptfile に有効なインベントリ フィールドがありません。Kptfile には、ID と名前空間の両方を指定した、空ではないインベントリ フィールドが必要です。 |
Kptfile で |
|
ルート リポジトリで Kptfile が見つかりました。kptfile は、名前空間にスコープされたリポジトリでのみサポートされています。 |
ルート リポジトリから Kptfile を削除します。 |
|
リポジトリ内の |
エラー メッセージに表示される手順に沿って操作します。たとえば、 |
|
CustomResourceDefinition の形式が正しくありません。 |
エラー メッセージで指定されたフィールドを確認し、その値の形式が正しいことを確認します。 |
|
構成オブジェクトにより宣言されるクラスタセレクタ アノテーションは、1 つだけである必要があります。このエラーは、従来のアノテーション( |
|
|
Reconciler が、宣言されたフィールドをサーバーサイドの適用と互換性のある形式にエンコードできない。古いスキーマが原因である可能性があります。 |
エラー メッセージで指定されたフィールドを確認し、それがリソースの種類のスキーマと一致することを確認します。 |
|
レンダリング プロセスでユーザーが対処できる問題が発生しました。 |
Git リポジトリに Kustomize 構成が含まれているが、Git 同期ディレクトリに
エラーが
公開リポジトリからリモートベースを pull するときに |
|
Reconciler が自身の RootSync オブジェクトまたは RepoSync オブジェクトを調整しました。RootSync オブジェクトは他の RootSync オブジェクトと RepoSync オブジェクトを管理でき、RepoSync オブジェクトは他の RepoSync オブジェクトを管理できますが、これらは自分自身を管理することはできません。 |
RootSync オブジェクトまたは RepoSync オブジェクトを、そのオブジェクトの同期元となる信頼できるソースから削除します。 |
|
ファイル システム リソースにアクセスする OS レベルのシステムコールが失敗します。 |
このエラーは、無効な YAML 構成または特殊文字の使用が原因で発生する可能性があります。YAML 構成が無効な場合は、
ファイル名またはパスに特殊文字が含まれていると、 |
|
Kubernetes API サーバーへのアクセス リクエストが失敗します。 |
Kubernetes API リクエストは、さまざまな理由で失敗する可能性があります。一般的には次のような原因が考えられます。
Config Sync は、ほとんどの API サーバー エラーの後に再試行します。一時的な問題で自然に解決するものもありますが、ほとんどはユーザーの介入が必要になります。API サーバーのエラーは Config Sync 自体が原因であることはほとんどありませんが、その可能性があると思われる場合は、バグレポートを送信してください。 |
|
OS レベルの一般的なシステムコールが失敗しました。 | |
|
Config Sync が信頼できる情報源から読み取ることができない。 |
このエラーは、複数の問題が原因で発生する可能性があります。信頼できる情報源への接続のトラブルシューティングについては、信頼できる情報源への接続のトラブルシューティングをご覧ください。 |
|
Config Sync がリソースに対して別のコントローラと競合しています。このような競合により、大量のリソースを消費し、パフォーマンスが低下する可能性があります。 | コントローラの競合を診断して解決する方法については、コントローラの競合のトラブルシューティングをご覧ください。 |
|
誤って削除されないように、Config Sync では、1 回の commit ですべての Namespace やクラスタ スコープのリソースを削除することはできません。 |
Config Sync アドミッション Webhook が無効になっている場合は、すべてのリソースを削除する commit を元に戻します。
管理下のすべてのリソースセットを削除するには、次の操作を行います。
|
|
API サーバーのリソースが変更または削除されるときに、Config Sync がこのリソースを変更しようとしています。 |
このタイプのエラーが起動時のみ発生する場合、または発生する頻度が低い場合、このエラーは無視してかまいません。
これらのエラーが一時的なものではない場合(数分以上続く場合)、重大な問題が発生している可能性があります。その場合、 |
|
これは、Config Sync が一部の構成ファイルをクラスタに同期できなかったことを示す一般的なエラーです。 |
このエラーは、さまざまな問題が原因で発生する可能性があります。同期に関する一般的な問題を解決するためのヒントについては、同期のトラブルシューティングをご覧ください。 |
|
これは、ある特定のリソースまたはリソースのセットに問題があることを示す一般的なエラーです。 |
エラーの原因となった具体的なリソースがメッセージに含まれています。これらのリソースを調査します。 |
|
続行するために特定のリソースが必要であるのに、そのリソースが見つかりませんでした。たとえば、ConfigManagement Operator があるリソースを更新しようとしていて、更新の計算中にそのリソースが削除された場合がこれに該当します。 |
不足しているリソースを作成または復元します。 |
|
このエラーは、ある APIResource が 1 つだけ許可されているコンテキストで、その APIResource のインスタンスが複数見つかったことを示します。たとえば、クラスタに存在できる |
追加の APIResource を削除します。 |
|
名前空間のリコンサイラにリソースを管理する権限が不足しています。 |
Reconciler に十分な権限があることを確認します。 |
|
この警告は、Config Sync Webhook の構成が不正に変更された場合に発生します。不正な Webhook の構成は無視されます。 |
不正に変更された Webhook を削除します。 |
|
レンダリング プロセスで内部問題が発生しました。たとえば、Config Sync がファイル システムにアクセスできない場合などです。 |
このエラーは、Pod が正常でないことを示している可能性があります。次のコマンドを実行して、Reconciler Pod を再起動できます。 # restart a root reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=root-reconciler # restart a namespace reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=ns-reconciler-NAMESPACE |
|
このエラーは、後で自動的に解決される一時的な問題を表します。たとえば、レンダリング状態がソース構成ファイルと一致しない場合、このエラーが表示されることがあります。 |
エラーは自動的に解決されます。 |
|
Config Sync 自体に問題があります。 |
バグレポートを提出してください。 |
|
エラー メッセージが文書化されていないエラーが発生しました。 |
発生したエラーに関するドキュメントはまだ作成されていません。 |
KNV コードのないエラー メッセージ
Config Sync Reconciler によって報告されるエラーには KNV エラーコードがありますが、他のコンポーネントから報告されるエラーには KNV コードがありません。たとえば、権限拒否エラーは、Config Sync の上位レイヤであるフリート コントローラから発生します。
次の表に、KNV 接頭辞のない一般的なエラーを示します。
| エラー メッセージ | ご対応のお願い |
|---|---|
|
|
エクスポータをビルドできない
Open Telemetry Collector のコンポーネントが同じ Namespace のデフォルトのサービス アカウントにアクセスできない場合、 この問題は通常、クラスタで Workload Identity Federation for GKE が有効になっている場合に発生します。 この問題を解決するには、Config Sync のモニタリングの手順に沿って、デフォルトのサービス アカウントに指標の書き込み権限を付与します。
IAM を設定してもエラーが解決しない場合は、 |
server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none
|
サーバー証明書の検証エラー
このメッセージは、サーバーがカスタム認証局(CA)の証明書で構成されていることを示します。ただし、カスタム CA が正しく構成されていないため、コンテナがサーバーから取得できません。
この問題を解決するには、まず RootSync オブジェクトまたは RepoSync オブジェクトで
このフィールドが構成されていて、Secret オブジェクトが存在する場合は、Secret オブジェクトに完全な証明書が含まれていることを確認します。 サーバー証明書を一覧表示する方法の例を次に示します。 echo -n | openssl s_client -showcerts -connect HOST:PORT -servername SERVER_NAME 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' 場合によっては、自社のネットワーク管理チームに CA 証明書を取得するよう依頼してください。 |
Error message: "MESSAGE": "Unable to retrieve pull secret, the image pull may not succeed."
|
pull シークレットを取得できない。イメージの pull が失敗する場合があるGoogle Distributed Cloud で非公開レジストリを使用している場合、Config Sync のインストールまたはアップグレードが停止することがあります。次のようなエラー メッセージが表示されます。 この問題を解決するには、Config Sync をインストールまたはアップグレードする前に、非公開レジストリを使用して Config Sync を更新するの手順を行います。 |
Permission 'gkehub.features.create' denied on 'projects/PROJECT_ID/locations/global/features/configmanagement'
|
権限が却下されましたConfig Sync を構成しようとしたときに、次の例のようなエラーが表示された場合は、GKE Hub 管理者ロールが割り当てられていない可能性があります。 必要な権限があることを確認するには、必要な IAM ロールが付与されていることを確認してください。 |
次のステップ
- 既知の問題を確認する
- Config Sync のトラブルシューティングの概要を読む。
- さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。