Informations de référence sur les erreurs

Les messages d'erreur de Config Sync se composent d'un ID d'erreur au format KNV12341234 est un numéro unique, suivi d'une description du problème et d'une suggestion pour le résoudre. Cet article documente chacun de ces messages d'erreur.

KNV1000 : InternalError

L'ID de l'erreur InternalError a été remplacé par KNV9998 avec Config Sync 1.6.1.

KNV1001 : ReservedDirectoryNameError

Obsolète dans Config Sync 1.3.

KNV1002 : DuplicateDirectoryNameError

Obsolète dans Config Sync 1.3.

KNV1003 : IllegalNamespaceSubdirectoryError

Lorsque vous utilisez la structure de dépôt par défaut, un répertoire contenant une configuration d'espace de noms ne doit contenir aucun sous-répertoire.

Un répertoire sans configuration d'espace de noms est un répertoire d'espace de noms abstrait dont les répertoires héritent. Il peut donc comporter des sous-répertoires. Un répertoire contenant une configuration d'espace de noms est un répertoire d'espace de noms qui ne peut pas être hérité. Il ne doit donc pas comporter de sous-répertoire.

Pour corriger cette erreur, supprimez la configuration d'espace de noms du répertoire parent ou déplacez le sous-répertoire.

Ce cas peut se présenter si un répertoire contenant un espace de noms contient un sous-répertoire.

namespaces/
└── prod/
    ├── namespace.yaml
    └── us_west_1/
# namespaces/prod/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: prod

Cette structure de répertoire et le contenu du fichier namespace.yaml génèrent l'erreur suivante :

KNV1003: A Namespace directory MUST NOT have subdirectories. Remove the
         Namespace policy from "prod", or move "us_west_1" to an Abstract
         Namespace:

path: namespaces/prod/us_west_1
name: us_west_1

KNV1004 : IllegalSelectorAnnotationError

Un objet à l'échelle d'un cluster ne doit pas déclarer l'annotation configmanagement.gke.io/namespace-selector. Les NamespaceSelectors ne peuvent être déclarés que pour les objets à l'échelle d'un espace de noms.

Pour corriger l'erreur, supprimez configmanagement.gke.io/namespace-selector du champ metadata.annotations.

La configuration de ClusterRole suivante génère l'erreur suivante :

# cluster/namespace-reader-clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: namespace-reader
  annotations: {
    "configmanagement.gke.io/namespace-selector" : "shipping-dev",
  }
rules:
- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["get", "watch"]

Si vous essayez d'inclure cela dans votre cluster, nomos vet renvoie l'erreur suivante :

KNV1004: Cluster-scoped objects may not be namespace-selected, and so MUST NOT declare the annotation 'configmanagement.gke.io/namespace-selector'. To fix, remove `metadata.annotations.configmanagement.gke.io/namespace-selector` from:
source: cluster/namespace-reader-clusterrole.yaml
metadata.name: namespace-reader
group: rbac.authorization.k8s.io
version: v1
kind: ClusterRole

Un objet Cluster ne doit pas déclarer l'annotation configmanagement.gke.io/cluster-selector. Pour corriger l'erreur, supprimez configmanagement.gke.io/cluster-selector de metadata.annotations.

Si un objet Cluster déclare configmanagement.gke.io/cluster-selector, nomos vet renvoie l'erreur suivante :

KNV1004: Clusters may not be cluster-selected, and so MUST NOT declare the annotation 'configmanagement.gke.io/cluster-selector'. To fix, remove `metadata.annotations.configmanagement.gke.io/cluster-selector` from:

source: clusterregistry/cluster.yaml
metadata.name: default-name
group: clusterregistry.k8s.io
version: v1alpha1
kind: Cluster

KNV1005 : IllegalManagementAnnotationError

Le seul paramètre valide pour l'annotation de gestion est configmanagement.gke.io/managed=disabled. Ce paramètre permet d'arrêter explicitement la gestion d'une ressource dans le dépôt Git tout en laissant la configuration enregistrée. L'annotation configmanagement.gke.io/managed=enabled n'est pas nécessaire. Pour en savoir plus, consultez la page Gérer des objets.

Si vous définissez une annotation différente, une erreur semblable à celle-ci s'affichera :

KNV1005: Config has invalid management annotation configmanagement.gke.io/managed=invalid. If set, the value must be "disabled".

source: namespaces/foo/role.yaml
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1006 : ObjectParseError

Cette erreur se produit lorsqu'un objet déclaré dans le dépôt n'a pas pu être analysé. Pour résoudre cette erreur, validez votre format yaml à l'aide d'un outil tel que kubectl --validate.

Exemple :

KNV1006: The following config could not be parsed as a rbac.authorization.k8s.io/v1, Kind=Role:

source: namespaces/foo/role.yaml
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1007 : IllegalAbstractNamespaceObjectKindError

Lorsque vous utilisez un dépôt non structuré, les configurations ne doivent pas être déclarées dans un répertoire d'espace de noms abstrait. Pour en savoir plus sur l'utilisation de dépôts non structurés, consultez la page Utiliser un dépôt non structuré.

KNV1007: Config "default-name" illegally declared in an abstract namespace directory. Move this config to a namespace directory:

source: namespaces/foo/bar/role.yaml
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1009 : IllegalMetadataNamespaceDeclarationError

Lorsque vous utilisez la structure de dépôt par défaut, les configurations déclarent un espace de noms correspondant au répertoire d'espace de noms qui les contient ou bien omettent le champ.

Voici un exemple de configuration de Role qui déclenche l'erreur :

# namespaces/shipping-prod/pod-reader-role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: pod-reader
  namespace: shipping-dev
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["get", "watch", "list"]

Si vous déclarez une configuration avec ce type d'espace de noms, l'erreur suivante se produit :

KNV1009: A config MUST either declare a `namespace` field exactly matching the directory containing the config, "shipping-prod", or leave the field blank:

source: namespaces/shipping-prod/pod-reader-role.yaml
namespace: shipping-dev
metadata.name: pod-reader
group: rbac.authorization.k8s.io
version: v1
kind: Role

Pour en savoir plus sur la structure du dépôt par défaut, consultez la section Structure du dépôt.

KNV1010 : IllegalAnnotationDefinitionError

Les configurations ne doivent pas déclarer d'annotations non compatibles commençant par configmanagement.gke.io.

Les annotations compatibles sont les suivantes :

  • configmanagement.gke.io/managed : pour plus d'informations sur l'utilisation, consultez la section Gérer des objets.

  • configmanagement.gke.io/namespace-selector : pour en savoir plus sur l'utilisation, consultez la section Objets à l'échelle d'un espace de noms.

  • configmanagement.gke.io/cluster-selector : pour plus d'informations sur l'utilisation, consultez la section ClusterSelector.

Exemple d'erreur :

KNV1010: Configs MUST NOT declare unsupported annotations starting with
         "configmanagement.gke.io/". The config has invalid annotations:
         "configmanagement.gke.io/invalid", "configmanagement.gke.io/sync-token"

source: namespaces/foo/role.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1011 : IllegalLabelDefinition

Les configurations ne doivent pas comporter de libellés ayant des clés commençant par configmanagement.gke.io/. Ce préfixe de clé de libellé est réservé à Config Sync.

Voici un exemple de ConfigMap qui déclenche cette erreur :

# namespaces/prod/mymap.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: my-map
  labels:
    configmanagement.gke.io/bad-label: label-value
data:
  mydata: moredata

Si vous déclarez une configuration avec ce type de libellé, l'erreur suivante se produit :

KNV1011: Configs MUST NOT declare labels starting with "configmanagement.gke.io/". The config has disallowed labels: "configmanagement.gke.io/bad-label"

source: namespaces/prod/mymap.yaml
metadata.name: my-map
group:
version: v1
kind: ConfigMap

KNV1012 : NamespaceSelectorMayNotHaveAnnotation

Obsolète dans Config Sync 1.3.

KNV1013 : ObjectHasUnknownSelector

La configuration fait référence à un ClusterSelector ou à un NamespaceSelector qui n'existe pas. Pour pouvoir utiliser un sélecteur dans une annotation pour une configuration, il doit exister.

Si le sélecteur est supprimé, supprimez également toutes les configurations qui y font référence. Dans l'exemple ci-dessous, supposons qu'il n'existe pas de ClusterSelector unknown-cluster-selector dans le répertoire clusterregistry/ du dépôt.

# namespaces/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: foo
  annotations:
    configmanagement.gke.io/cluster-selector: unknown-cluster-selector

Cet exemple génère l'erreur suivante :

KNV1013: Config "foo" MUST refer to an existing ClusterSelector, but has
         annotation
         “configmanagement.gke.io/cluster-selector=unknown-cluster-selector",
         which maps to no declared ClusterSelector

Les annotations de NamespaceSelector comporte une condition supplémentaire : le NamespaceSelector référencé doit être défini dans le même répertoire ou dans un répertoire parent de la référence de configuration. Dans le cas contraire, l'erreur suivante se produira :

KNV1013: Config "default-name" MUST refer to a NamespaceSelector in its directory or a parent directory. Either remove the annotation "configmanagement.gke.io/namespace-selector=default-ns-selector" from "default-name" or move NamespaceSelector "default-ns-selector" to a parent directory of "default-name".

    source: namespaces/bar/selector.yaml
    metadata.name: default-ns-selector
    group: configmanagement.gke.io
    version: v1
    kind: NamespaceSelector

    source: namespaces/foo/role.yaml
    metadata.name: default-name
    group: rbac.authorization.k8s.io
    version: v1
    kind: Role

KNV1014 : InvalidSelectorError

Les configurations de ClusterSelector et de NamespaceSelector utilisent la syntaxe correcte, mais une erreur de syntaxe a été détectée. Pour résoudre ce problème, veillez à spécifier la configuration en fonction du schéma de données approprié :

Par exemple, ce ClusterSelector non valide :

kind: ClusterSelector
apiVersion: configmanagement.gke.io/v1
metadata:
  name: selector-1
spec:
  selector:
    someUnknownField:  # This field is not defined for a LabelSelector
      foo: bar

Entraîne l'erreur suivante :

KNV1014: ClusterSelector has validation errors that must be corrected: invalid field "someUnknownField"
    source: clusterregistry/cs.yaml
    metadata.name: selector-1
    group: configmanagement.gke.io
    version: v1
    kind: ClusterSelector

En particulier, les définitions de ClusterSelector et NamespaceSelector définissent le champ spec.selector. Dans le cas contraire, l'erreur suivante se produira :

   KNV1014: NamespaceSelectors MUST define `spec.selector`

    source: namespaces/ns.yaml
    metadata.name: ns-selector-1
    group: configmanagement.gke.io
    version: v1
    kind: NamespaceSelector

KNV1016 : PolicyManagementNotInstalledError

Obsolète dans Config Sync 1.3.2.

KNV1017 : MissingRepoError

Lorsque vous utilisez la structure de dépôt par défaut, une configuration de Repo doit exister dans le répertoire system/ du dépôt et doit inclure les informations requises, telles que la version sémantique du dépôt.

Si aucune configuration de Repo n'existe, l'erreur suivante se produit :

KNV1017: The system/ directory must declare a Repo Resource.
path: system/

To fix, define at least a minimal Repo config.
# system/repo.yaml
kind: Repo
apiVersion: configmanagement.gke.io/v1
metadata:
  name: repo
spec:
  version: "0.1.0"

Pour en savoir plus sur la structure du dépôt par défaut, consultez la section Structure du dépôt.

KNV1018 : IllegalSubdirectoryError

Obsolète dans Config Sync 1.3.

KNV1019 : IllegalTopLevelNamespaceError

Lorsque vous utilisez la structure de dépôt par défaut, les Namespaces ne doivent pas être déclarés directement dans namespaces/.

Voici une configuration qui déclenche l'erreur :

# namespaces/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: namespaces
source: namespaces/namespace.yaml
metadata.name: namespaces
group:
version: v1
kind: Namespace
   KNV1019: Namespaces MUST be declared in subdirectories of 'namespaces/'. Create a subdirectory for the following Namespace configs:

    source: namespaces/namespace.yaml
    metadata.name: namespaces
    group:
    version: v1
    kind: Namespace

Pour en savoir plus sur la structure du dépôt par défaut, consultez la section Structure du dépôt.

KNV1020 : InvalidNamespaceNameError

Lorsque vous utilisez la structure de dépôt par défaut, une configuration d'espace de noms déclare metadata.name, et sa valeur doit correspondre au nom du répertoire de l'espace de noms. Pour résoudre le problème, corrigez le metadata.name ou le répertoire de l'espace de noms.

Voici une configuration qui déclenche l'erreur :

# namespaces/prod/namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: dev
KNV1020: A Namespace MUST declare `metadata.name` that matches the name of its
         directory.

expected `metadata.name`: prod

source: namespaces/prod/namespace.yaml
metadata.name: dev
group:
version: v1
kind: Namespace

Pour en savoir plus sur la structure du dépôt par défaut, consultez la section Structure du dépôt.

KNV1021 : UnknownObjectError

KNV1021: No CustomResourceDefinition is defined for the resource in the cluster.
         Resource types that are not native Kubernetes objects must have a
         CustomResourceDefinition.

source: namespaces/foo/role.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1024 : IllegalKindInSystemError

KNV1024: Configs of this Kind may not be declared in the `system/` directory of
         the repo:

source: namespaces/foo/role.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1027 : UnsupportedRepoSpecVersion

Le champ spec.version de la configuration de Repo représente la version sémantique du dépôt. Cette erreur indique que vous utilisez une version non acceptée.

Si le format de votre dépôt est compatible avec la version acceptée, mettez à jour le champ spec.version.

Si vous devez procéder à une mise à jour, suivez les instructions fournies dans les notes de version.

# system/repo.yaml
kind: Repo
apiVersion: configmanagement.gke.io/v1
metadata:
  name: repo
spec:
  version: "0.0.0"

Cet exemple génère l'erreur suivante :

KNV1027: Unsupported Repo spec.version: "0.0.0". Must use version "1.0.0"

source: system/repo.yaml
name: repo
group: configmanagement.gke.io
version: v1
kind: Repo

KNV1028 : InvalidDirectoryNameError

KNV1028: Directory names have fewer than 64 characters, consist of lower case
         alphanumeric characters or '-', and must start and end with an
         alphanumeric character. Rename or remove directory:

path: namespaces/a.b`c
name: a.b`c

KNV1029 : MetadataNameCollisionError

KNV1029: Configs of the same Kind MUST have unique names in the same Namespace
         and their parent abstract namespaces:

source: namespaces/foo/r1.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

source: namespaces/foo/r2.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1030 : MultipleSingletonsError

KNV1030: Multiple Namespace resources cannot exist in the same directory. To fix, remove the duplicate config(s) such that no more than 1 remains:

source: namespaces/foo/namespace.yaml
metadata.name: foo
group:
version: v1
kind: Namespace

source: namespaces/foo/namespace.yaml
metadata.name: foo
group:
version: v1
kind: Namespace

KNV1031 : MissingObjectNameError

Toutes les configurations doivent déclarer metadata.name. Pour corriger cette erreur, ajoutez le champ metadata.name aux configurations problématiques.

KNV1031: A config must declare metadata.name:

source: namespaces/foo/role.yaml
metadata.name:
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1032 : IllegalHierarchicalKindErrorCode

KNV1032: The type Repo.configmanagement.gke.io is not allowed if `sourceFormat` is set to `unstructured`. To fix, remove the problematic config, or convert your repo to use `sourceFormat: hierarchy`.

source: system/repo.yaml
metadata.name: repo
group: configmanagement.gke.io
version: v1
kind: Repo

KNV1033 : IllegalSystemResourcePlacementError

Certains Kinds ne peuvent être déclarés que dans le répertoire system/. La liste suivante répertorie les Kinds pouvant exister exclusivement dans le répertoire system/ : - HierarchyConfig - Repo

KNV1033: A config of the below Kind MUST NOT be declared outside system/:

source: namespaces/foo/repo.yaml
metadata.name: repo
group: configmanagement.gke.io
version: v1
kind: Repo

KNV1034 : IllegalNamespaceError

Il est interdit de déclarer l'espace de noms config-management-system ou les ressources qu'il contient. Pour corriger cette erreur, supprimez l'espace de noms config-management-system et toutes les configurations qu'il contient.

KNV1034: Configs must not be declared in the "config-management-system" namespace

source: namespaces/config-management-system/role.yaml
namespace: namespaces/config-management-system
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role
KNV1034: The "config-management-system" namespace must not be declared

source: namespaces/config-management-system/namespace.yaml
metadata.name: config-management-system
group:
version: v1
kind: Namespace

KNV1036 : InvalidMetadataNameError

Le format du metadata.name fourni n'est pas valide. Un metadata.name valide doit : - comporter moins de 254 caractères ; - contenir des caractères alphanumériques minuscules, "-" ou "." ; - commencer et se terminer par un caractère alphanumérique.

Pour corriger cette erreur, modifiez le metadata.name de sorte qu'il respecte les conditions ci-dessus.

KNV1036: Configs MUST define a metadata.name that is shorter than 254
        characters, consists of lower case alphanumeric characters, '-' or '.',
         and must start and end with an alphanumeric character. Rename or remove
         the config:

source: namespaces/foo/role.yaml
metadata.name: a`b.c
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1037 : IllegalKindInClusterregistryError

Obsolète dans Config Sync 1.3.

KNV1038 : IllegalKindInNamespacesError

KNV1038: Configs of the below Kind may not be declared in `namespaces/`:

source: cluster/cr.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: ClusterRole

KNV1039 : IllegalKindInClusterError

Il est interdit de déclarer un objet à l'échelle d'un espace de noms en dehors de namespaces/ ou un objet à l'échelle d'un cluster en dehors de cluster/. Pour corriger cette erreur, déplacez les configurations problématiques de sorte qu'elles se trouvent dans un répertoire autorisé.

Pour en savoir plus sur les objets à l'échelle d'un cluster, consultez la section Objets à l'échelle d'un cluster.

Pour en savoir plus sur les objets à l'échelle d'un espace de noms, consultez la section Objets à l'échelle d'un espace de noms.

KNV1039: Namespace-scoped configs of the below Kind must not be declared in
         cluster/:

source: namespaces/foo/role.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1040 : UnknownResourceInHierarchyConfigError

Obsolète dans Config Sync 1.3.

KNV1041 : UnsupportedResourceInHierarchyConfigError

KNV1041: This Resource Kind MUST NOT be declared in a HierarchyConfig:

source: system/hc.yaml
group: configmanagement.gke.io
kind: Repo

KNV1042 : IllegalHierarchyModeError

Une valeur non autorisée pour HierarchyMode a été détectée sur une HierarchyConfig. HierarchyMode doit avoir la valeur "none" (aucun) ou "inherit" (hériter).

Pour en savoir plus sur les HierarchyConfigs, consultez la section Désactiver l'héritage pour un type d'objet.

KNV1042: HierarchyMode invalid is not a valid value for the APIResource Role.rbac.authorization.k8s.io. Allowed values are [none,inherit].

source: system/hc.yaml
metadata.name: default-name
group: configmanagement.gke.io
version: v1
kind: HierarchyConfig

KNV1043 : UnsupportedObjectError

KNV1043: Config Sync cannot configure this object. To fix, remove this
         config from the repo.

source: namespaces/foo/role.yaml
metadata.name: role
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV1044 : UnsyncableResourcesErrorCode

KNV1044: An Abstract Namespace directory with configs MUST have at least one
Namespace subdirectory. To fix, do one of the following: add a Namespace
directory below "bar", add a Namespace config to "bar", or remove the configs in
"bar":

path: namespaces/foo/bar/

KNV1045 : IllegalFieldsInConfigError

KNV1045: Configs with "metadata.ownerReference" specified are not allowed. To
fix, either remove the config or remove the "metadata.ownerReference" field in
the config:

source: namespaces/foo/replicaset.yaml
metadata.name: replicaSet
group: apps
version: v1
kind: ReplicaSet

KNV1046 : ClusterScopedResourceInHierarchyConfigError

KNV1046: This HierarchyConfig references the APIResource "ClusterSelector.configmanagement.gke.io" which has cluster scope. Cluster scoped objects are not permitted in HierarchyConfig.

source: system/hc.yaml
metadata.name: hierarchyconfig
group: configmanagement.gke.io
version: v1
kind: HierarchyConfig

KNV1047 : UnsupportedCRDRemovalError

KNV1047: Removing a CRD and leaving the corresponding Custom Resources in the
repo is disallowed. To fix, remove the CRD along with the Custom Resources.

source: cluster/crd.yaml
metadata.name: customResourceDefinition
group: apiextensions.k8s.io
version: v1beta1
kind: CustomResourceDefinition

KNV1048 : InvalidCRDNameError

KNV1048: The CustomResourceDefinition has an invalid name. To fix, change the
name to `spec.names.plural+"."+spec.group`.

source: cluster/crd.yaml
metadata.name: customResourceDefinition
group: apiextensions.k8s.io
version: v1beta1
kind: CustomResourceDefinition

KNV1050 : DeprecatedGroupKindError

KNV1050: The config is using a deprecated Group and Kind. To fix, set the Group and Kind to "Deployment.apps"

source: namespaces/deployment.yaml
metadata.name: default-name
group: extensions
version: v1beta1
kind: Deployment

KNV 1058 : BadScopeError

Un dépôt d'espaces de noms ne peut déclarer que des ressources à l'échelle d'un espace de noms dans l'espace de noms auquel le dépôt s'applique. Par exemple, le dépôt de l'espace de noms shipping ne peut gérer que les ressources de l'espace de noms shipping.

La valeur de metadata.namespace est facultative. Par défaut, Config Sync suppose que toutes les ressources d'un dépôt d'espaces de noms appartiennent à cet espace de noms.

Par exemple, si une configuration du dépôt d'espaces de noms shipping a déclaré metadata.namespace: billing, la commande nomos affiche l'erreur suivante.

KNV1058: Resources in the "shipping" repo must either omit metadata.namespace or declare metadata.namespace="shipping"

namespace: billing
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV 1059 : MultipleKptfilesError

Un dépôt d'espaces de noms peut déclarer au plus une ressource Kptfile.

Par exemple, si un dépôt d'espaces de noms a déclaré deux fichiers Kptfiles, la commande nomos affiche l'erreur suivante :

KNV1059: Namespace Repos may contain at most one Kptfile

metadata.name: package-a
group: kpt.dev
version: v1alpha1
kind: Kptfile

metadata.name: package-b
group: kpt.dev
version: v1alpha1
kind: Kptfile

For more information, see https://g.co/cloud/acm-errors#knv1059

KNV 1060 : ManagementConflictError

Plusieurs dépôts ne peuvent pas déclarer la même configuration sur un cluster. Cela n'est pas valide, car Config Sync ne peut synchroniser qu'une seule instance d'une configuration avec un cluster.

Si une configuration est déclarée plusieurs fois pour un cluster, Config Sync synchronise la version du dépôt racine de la configuration et le rapprochement de l'espace de noms affiche une erreur de ce type :

KNV1060: The "shipping" reconciler cannot manage resources declared in the Root repository. Remove the declaration for this resource from either the Namespace repository, or the Root repository.

metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

KNV 1061 : InvalidRepoSyncError

Les objets RepoSync doivent être correctement configurés pour que Config Sync puisse synchroniser la configuration à partir de dépôts d'espaces de noms. Un InvalidRepoSyncError indique qu'un objet RepoSync n'est pas configuré correctement. Le message indique explicitement comment le résoudre.

Par exemple, si le dépôt shipping doit comporter un objet RepoSync nommé repo-sync, mais que RepoSync s'appelle invalid, la commande nomos affiche l'erreur suivante.

KNV1061: RepoSyncs must be named "repo-sync", but the RepoSync for Namespace "shipping" is named "invalid"

metadata.name: invalid
group: configsync.gke.io
version: v1alpha1
kind: RepoSync

KNV1062 : InvalidKptfileError

Cette erreur se produit lorsque le fichier Kptfile ne possède pas de champ d'inventaire valide. Un fichier Kptfile doit comporter un champ d'inventaire non vide contenant l'identifiant et l'espace de noms spécifiés. Pour résoudre ce problème, vous devez spécifier les valeurs pour .inventory.identifier et .inventory.namespace dans le fichier Kptfile.

Exemples d'erreurs :

KNV1062: Invalid inventory invalid name

metadata.name: default-name
group: kpt.dev
version: v1alpha1
kind: Kptfile

KNV1063 : KptfileExistError

Cette erreur se produit lorsqu'il existe des fichiers Kptfiles dans le dépôt racine. Les fichiers Kptfiles ne sont autorisés que dans les dépôts à l'échelle d'un espace de noms.

Pour résoudre ce problème, supprimez les fichiers Kptfiles du dépôt racine.

Exemples d'erreurs :

KNV1063: Found Kptfile(s) in the Root Repo. Kptfile(s) are only supported in Namespace Repos. To fix, remove the Kptfile(s) from the Root Repo.

namespace: namespace
metadata.name: default-name
group: kpt.dev
version: v1alpha1
kind: Kptfile

For more information, see https://g.co/cloud/acm-errors#knv1063

KNV1064 : InvalidAPIResourcesError

Cette erreur indique que le fichier api-resources.txt d'un dépôt n'a pas pu être analysé.

Exemples d'erreurs :

KNV1064: invalid NAMESPACED column value "other" in line:
rbac      other     Role

Re-run "kubectl api-resources > api-resources.txt" in the root policy directory

path: /api-resources.txt

For more information, see https://g.co/cloud/acm-errors#knv1064

KNV1064: unable to find APIGROUP column. Re-run "kubectl api-resources > api-resources.txt" in the root policy directory

path: /api-resources.txt

For more information, see https://g.co/cloud/acm-errors#knv1064

KNV1064: unable to read cached API resources: missing file permissions

path: /api-resources.txt

For more information, see https://g.co/cloud/acm-errors#knv1064

KNV1065 : MalformedCRDError

Cette erreur se produit lorsque le paramètre CustomResourceDefinition n'est pas valide. Pour résoudre le problème, vérifiez le champ spécifié par le message d'erreur et assurez-vous que sa valeur est correctement mise en forme.

Exemples d'erreurs :

KNV1065: malformed CustomResourceDefinition: spec.names.shortNames accessor error: foo is of the type string, expected []interface{}.

path: namespaces/foo/crd.yaml

For more information, see https://g.co/cloud/acm-errors#knv1065

KNV1066 : ClusterSelectorAnnotationConflictError

Un objet de configuration NE DOIT déclarer QU'UNE SEULE annotation de sélecteur de cluster. Cette erreur se produit lorsqu'il existe à la fois une ancienne annotation (configmanagement.gke.io/cluster-selector) et une annotation intégrée (configsync.gke.io/cluster-name-selector).

Pour résoudre ce problème, supprimez l'une des annotations du champ metadata.annotations.

Par exemple, si une configuration d'objet Namespace déclare ces deux annotations, la commande nomos affiche l'erreur suivante :

KNV1066: Config "my-namespace" MUST declare ONLY ONE cluster-selector annotation, but has both inline annotation "configsync.gke.io/cluster-name-selector" and legacy annotation "configmanagement.gke.io/cluster-selector". To fix, remove one of the annotations from:

metadata.name: my-namespace
group:
version: v1
kind: Namespace

For more information, see https://g.co/cloud/acm-errors#knv1066

KNV2001 : pathError

Cette erreur se produit lorsqu'un appel de système d'exploitation accédant à une ressource de système de fichiers échoue.

KNV2002 : apiServerError

Cette erreur se produit lorsqu'une requête accédant au serveur d'API échoue.

KNV2003 : osError

Cette erreur se produit lorsqu'un appel de système d'exploitation générique échoue.

KNV2004 : SourceError

Cette erreur indique que Config Sync ne peut pas lire les données du dépôt. Cela est généralement dû à l'une des causes suivantes :

  • Configuration incorrecte d'un objet ConfigManagement

    Recherchez des erreurs telles qu'une valeur policyDir incorrecte. La valeur de policyDir est incluse dans l'erreur. Vérifiez la valeur par rapport à votre dépôt Git.

  • Identifiants Git incorrects

    Recherchez dans les journaux du conteneur git-sync une erreur de type Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ou Invalid username or password. Authentication failed for ....

    Vérifiez que les identifiants Git et le secret git-creds sont correctement configurés.

  • URL du dépôt Git non valide

    Recherchez dans les journaux du conteneur git-sync une erreur de type Repository not found..

  • Branche Git non valide

    Recherchez dans les journaux du conteneur git-sync une erreur de type Remote branch BRANCH_NAME not found in upstream origin..

Le message d'erreur peut ne pas inclure tous les détails sur la cause de l'erreur, mais il fournit une commande qui imprime les journaux du conteneur git-sync qui peuvent contenir plus d'informations.

Si vous utilisez le multidépôt :

kubectl logs -n config-management-system -l app=reconciler -c git-sync

Si vous n'utilisez pas le multidépôt :

kubectl logs -n config-management-system -l app=git-importer -c git-sync

KNV2005 : ResourceFightWarning

Cette erreur indique que Config Sync est en conflit avec un autre contrôleur sur une ressource. Ces conflits consomment beaucoup de ressources et peuvent nuire à vos performances. Ils sont également appelés "conflits de ressources".

Pour détecter les conflits, consultez les journaux du git-importer Config Sync en exécutant la commande suivante :

kubectl logs --namespace config-management-system deployment/git-importer CONTAINER_NAME

Remplacez CONTAINER_NAME par importer, fs- watcher ou git-sync. git-importer étant constitué de ces trois composants, vous pouvez utiliser l'un d'entre eux pour vérifier les journaux git-importer. git-sync clone le dépôt Git distant. importer aplatit la hiérarchie du dépôt et la redéfinit à l'aide du serveur d'API pour vérifier les erreurs dans le résultat. fs- watcher exécute le conteneur d'importation dans un mode qui consigne les modifications apportées au système de fichiers de journaux pour le dépôt.

Si KNV2005 apparaît dans les résultats, cela signifie qu'il y a un conflit de ressources.

Pour en savoir plus sur les conflits de ressources, examinez les mises à jour du fichier YAML de la ressource en exécutant la commande suivante :

 kubectl get resource --watch -o yaml

Remplacez resource par le type de ressource faisant l'objet d'un conflit. Vous pouvez voir quelle ressource ajouter en fonction des résultats du journal.

Cette commande renvoie un flux de l'état de la ressource après l'application des mises à jour au serveur d'API. Vous pouvez utiliser un outil de comparaison de fichiers pour comparer le résultat.

Certaines ressources doivent appartenir à d'autres contrôleurs (par exemple, certains opérateurs installent ou gèrent des définitions de ressources personnalisées). Ces autres contrôleurs suppriment automatiquement toutes les métadonnées propres à Config Sync. Si un autre composant de votre cluster Kubernetes supprime les métadonnées Config Sync, arrêtez de gérer la ressource. Pour savoir comment procéder, consultez la section Arrêter la gestion d'un objet géré.

KNV2006 : Config Management Errors

Afin d'éviter toute suppression accidentelle, Config Sync ne vous permet pas de supprimer tous les espaces de noms ou les ressources à l'échelle d'un cluster dans un seul commit. Si vous souhaitez supprimer l'ensemble complet des ressources sous gestion, vous devez suivre les deux étapes suivantes :

  1. Supprimez dans un premier commit toutes les entités sauf un espace de noms ou une ressource à l'échelle d'un cluster, puis autorisez Config Sync à synchroniser ces modifications.
  2. Supprimez la ressource finale dans un second commit.

KNV2008 : APIServerConflictError

Ce type d'erreur se produit lorsqu'une ressource sur le serveur d'API est modifiée ou supprimée alors que Config Sync tente également de la modifier. Si ce type d'erreur ne s'affiche qu'au démarrage ou rarement, vous pouvez ignorer ces erreurs.

Si ces erreurs ne sont pas temporaires (persistantes plusieurs minutes), cela peut indiquer un problème grave, et nomos status signale un conflit de ressources.

Exemples d'erreurs :

KNV2008: tried to create resource that already exists: already exists

metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

For more information, see https://g.co/cloud/acm-errors#knv2008

KNV2008: tried to update resource which does not exist: does not exist

metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

For more information, see https://g.co/cloud/acm-errors#knv2008

KNV2008: tried to update with stale version of resource: old version

metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: Role

For more information, see https://g.co/cloud/acm-errors#knv2008

KNV2010 : resourceError

Il s'agit d'une erreur générique signalant un problème lié à une ressource ou un ensemble de ressources. Le message indique les ressources spécifiques qui ont généré l'erreur.

KNV2010: Resources were improperly formatted.

Affected resources:
source: system/hc.yaml
group: configmanagement.gke.io
kind: Repo

KNV2011 : MissingResourceError

Cette erreur indique qu'une ressource spécifique requise pour poursuivre une opération est introuvable. Par exemple, Config Sync Operator a tenté de mettre à jour une ressource, mais celle-ci a été supprimée lors du calcul de la mise à jour.

KNV2012 : MultipleSingletonsError

Cette erreur indique que plusieurs instances d'un objet APIResource ont été détectées alors qu'une seule de ces instances est autorisée. Par exemple, une seule ressource Repo peut exister sur un cluster.

KNV2013 : InsufficientPermissionError

Cette erreur se produit lorsqu'un processus de rapprochement des espaces de noms ne dispose pas des autorisations nécessaires pour gérer les ressources. Pour corriger le problème, assurez-vous que le rapprochement dispose des autorisations suffisantes.

Exemples d'erreurs :

KNV2013: could not create resources: Insufficient permission. To fix, make sure the reconciler has sufficient permissions.: deployments.apps is forbidden: User 'Bob' cannot create resources

For more information, see https://g.co/cloud/acm-errors#knv2013

KNV9998 : InternalError

Le message KNV9998 indique un problème lié à la commande nomos proprement dite. Veuillez créer un rapport de bug avec la commande exacte que vous avez exécutée et le message que vous avez reçu.

Exemples d'erreurs :

KNV9998: we made a mistake: internal error

For more information, see https://g.co/cloud/acm-errors#knv9998

KNV9999 : UndocumentedError

Vous avez rencontré une erreur pour laquelle aucun message d'erreur n'est documenté. Nous n'avons pas encore rédigé de documentation propre à cette erreur.

Étapes suivantes