Messaggi di errore

I messaggi di errore di Config Sync sono costituiti da un ID errore nel formato KNV1234 in cui 1234 è un numero univoco, seguito da una descrizione del problema e da un suggerimento per risolverlo. Questo argomento documenta ognuno di questi messaggi di errore.

KNV1000: InternalError

L'ID di InternalError è cambiato in KNV9998 con Config Sync 1.6.1.

KNV1001: PrenotaDirectoryNameError

Funzionalità deprecata in Config Sync 1.3.

KNV1002: DuplicateDirectoryNameError

Funzionalità deprecata in Config Sync 1.3.

KNV1003: Errore directory illegale

Quando utilizzi una struttura di repository gerarchica, una directory che contiene una configurazione di spazio dei nomi non deve contenere sottodirectory.

Una directory senza una configurazione dello spazio dei nomi è una directory dello spazio dei nomi astratta, con directory che ereditano in precedenza e, di conseguenza, devono avere sottodirectory. Una directory contenente una configurazione dello spazio dei nomi è una directory dello spazio dei nomi da cui non può essere ereditata, quindi non deve avere sottodirectory.

Per risolvere il problema, rimuovi la configurazione dello spazio dei nomi dalla directory principale o sposta altrove la sottodirectory.

Questo problema può verificarsi se una directory contenente uno spazio dei nomi ha una sottodirectory.

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

La struttura di directory e i contenuti di namespace.yaml generano questo errore:

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: Errore IgnoraSelectorAnnotation

Un oggetto con ambito cluster non deve dichiarare l'annotazione configmanagement.gke.io/namespace-selector. Gli spazi dei nomi possono essere dichiarati solo per gli oggetti con ambito di spazio dei nomi.

Per correggere l'errore, rimuovi configmanagement.gke.io/namespace-selector dal campo metadata.annotations.

La seguente configurazione ClusterRole genera questo errore:

# 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"]

Se tenti di includere questo ClusterRole nel cluster, nomos vet restituisce il seguente errore:

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 oggetto Cluster non deve dichiarare l'annotazione configmanagement.gke.io/cluster-selector. Per correggere l'errore, rimuovi configmanagement.gke.io/cluster-selector da metadata.annotations.

Se un oggetto Cluster dichiara configmanagement.gke.io/cluster-selector, nomos vet restituisce il seguente errore:

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: ErrorManagementAnnotationError

L'unica impostazione valida per l'annotazione di gestione è configmanagement.gke.io/managed=disabled. Questa impostazione viene utilizzata per annullare la gestione esplicita di una risorsa nel repository Git senza modificare la configurazione. L'annotazione configmanagement.gke.io/managed=enabled non è necessaria. Per ulteriori informazioni, consulta Gestione degli oggetti.

L'impostazione di un'annotazione diversa genera un errore come il seguente:

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

Questo errore si verifica quando non è stato possibile analizzare un oggetto dichiarato nel repository. Per risolvere il problema, convalida il formato yaml con uno strumento come kubectl --validate.

Esempio:

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: Errore AbstractNamespaceObjectKind

Quando utilizzi un repository non strutturato, le configurazioni non devono essere dichiarate in una directory dello spazio dei nomi astratto. Per ulteriori informazioni sull'utilizzo di repository non strutturati, consulta la sezione Utilizzo di un repository non strutturato.

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: ErroreDecDecorazioneSpazioMetadatiMetadati

Quando utilizzi la struttura dei repository gerarchici, le configurazioni dichiarano gli spazi dei nomi che corrispondono alla directory dello spazio dei nomi che li contiene oppure omettono il campo.

Di seguito è riportato un esempio di configurazione del ruolo che attiva l'errore:

# 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"]

Se dichiari una configurazione con uno spazio dei nomi di questo tipo, si verifica questo errore:

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

Per ulteriori informazioni sulla struttura del repository gerarchico, consulta la sezione Struttura del repository gerarchico.

KNV1010: Errore InvalidAnnotationDefinition

Le configurazioni non devono dichiarare annotazioni non supportate che iniziano con configmanagement.gke.io.

Le annotazioni supportate sono:

Esempio di errore:

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: EtichettaEtichetta illegale

Le configurazioni non devono avere etichette con chiavi che iniziano con configmanagement.gke.io/. Questo prefisso di chiave dell'etichetta è riservato per l'utilizzo da parte di Config Sync.

Di seguito è riportato un esempio di ConfigMap che attiva questo errore:

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

Se dichiari una configurazione con un'etichetta del genere, si verifica questo errore:

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: Spazio dei nomiSelectorMayNot HaveAnnotation

Funzionalità deprecata in Config Sync 1.3.

KNV1013: ObjectHasUnknownSelector

La configurazione fa riferimento a un ClusterSelector o NamespaceSelector che non esiste. Prima di poter utilizzare un selettore in un'annotazione per una configurazione, il selettore deve esistere.

Se il selettore viene rimosso, rimuovi anche le configurazioni che vi fanno riferimento. In questo esempio, supponiamo che non esista un cluster-selector sconosciuto in ClusterSelector nella directory clusterregistry/ del repository.

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

Ciò causa questo errore:

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

Le annotazioni NamespaceSelector hanno il requisito aggiuntivo per specificare che lo spazio dei nomi di riferimento a cui viene fatto riferimento è definito nella stessa directory o in una directory principale del riferimento di configurazione. Se non dovessi farlo, verrà generato questo errore:

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

Le configurazioni ClusterSelector e NamespaceSelector utilizzano la sintassi corretta, ma è stato rilevato un errore di sintassi. Per risolvere il problema, assicurati di specificare la configurazione in base allo schema dei dati appropriato:

Ad esempio, il ClusterSelector non valido:

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

Causa il seguente errore:

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

In particolare, le definizioni ClusterSelector e NamespaceSelector definiscono il campo spec.selector. Se non lo fai, si verifica il seguente errore:

   KNV1014: NamespaceSelectors MUST define `spec.selector`

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

KNV1016: PolicyManagementNotInstallError

Ritirato in Config Sync 1.3.2.

KNV1017: MissingRepoError

Quando utilizzi la struttura del repository gerarchico, deve essere presente una configurazione del repository nella directory system/ del repository e deve includere le informazioni richieste come la versione semantica del repository.

Se non esiste una configurazione repository, si verifica il seguente errore:

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"

Per ulteriori informazioni sulla struttura del repository gerarchico, consulta la sezione Struttura del repository gerarchico.

KNV1018: Errore directory secondario non valido

Funzionalità deprecata in Config Sync 1.3.

KNV1019: Errore Spazio dei nomi superiore non valido

Se utilizzi una struttura gerarchica di repository, gli spazi dei nomi non devono essere dichiarati direttamente negli spazi dei nomi/.

Di seguito è riportata una configurazione che attiva l'errore:

# 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

Per ulteriori informazioni sulla struttura del repository gerarchico, consulta la sezione Struttura del repository gerarchico.

KNV1020: InvalidNamespaceNameError

Quando si utilizza la struttura del repository gerarchica, una configurazione dello spazio dei nomi dichiara metadata.name e il relativo valore deve corrispondere al nome della directory dello spazio dei nomi. Per risolvere il problema, correggi l'elemento metadata.name dello spazio dei nomi o la relativa directory.

Di seguito è riportata una configurazione che attiva l'errore:

# 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

Per ulteriori informazioni sulla struttura del repository gerarchico, consulta la sezione Struttura del repository gerarchico.

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: Errore KindKindInSystem

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: SupportedRepoSpecVersion non supportato

Il campo spec.version nella configurazione del repository rappresenta la versione semantica del repository. Questo errore indica che stai utilizzando una versione non supportata.

Se il formato del repository è compatibile con la versione supportata, aggiorna il campo spec.version.

Se devi eseguire l'upgrade, segui le istruzioni nelle note di rilascio.

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

Ciò genera il seguente errore:

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

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: errore MetadataNameCollision

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

Tutte le configurazioni devono dichiarare metadata.name. Per risolvere il problema, aggiungi il campo metadata.name alle configurazioni problematiche.

KNV1031: A config must declare metadata.name:

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

KNV1032: Codice di errore gerarchico illegale.

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: Errore di posizionamento del sistema non consentito

Alcuni tipi possono essere dichiarati solo all'interno della directory/ del sistema. Di seguito è riportato un elenco di tipi che possono esistere esclusivamente nella directory di sistema: - 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: Errore di SpaceNamespace

È vietato dichiarare lo spazio dei nomi o le risorse al suo interno config-management-system. Per risolvere il problema, rimuovi lo spazio dei nomi config-management-system e le eventuali configurazioni al suo interno.

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

Il formato specificato per metadata.name non è valido. Un elemento metadata.name valido deve: - Avere una lunghezza inferiore a 254 caratteri. - Sono costituiti da caratteri alfanumerici minuscoli, '-' o '.#39;. - Inizia e termina con un carattere alfanumerico.

Per risolvere il problema, modifica l'elemento metadata.name per soddisfare le condizioni precedenti.

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: ErrorKindInClusterregistryError

Funzionalità deprecata in Config Sync 1.3.

KNV1038: ErrorKindInNamespacesError

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: ErrorKindInClusterError

È vietato dichiarare un oggetto con ambito all'esterno dello spazio dei nomi/ o un oggetto con ambito cluster all'esterno del cluster/. Per risolvere il problema, riposiziona le configurazioni problematiche in modo che si trovino in una directory legale.

Per ulteriori informazioni sugli oggetti con ambito cluster, consulta gli oggetti con ambito a livello di cluster.

Per ulteriori informazioni sugli oggetti con ambito di spazio dei nomi, consulta la sezione Oggetti con ambito di spazio dei nomi.

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

Funzionalità deprecata in Config Sync 1.3.

KNV1041: SupportedResourceInHierarchyConfigError

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

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

KNV1042: Errore di gerarchia illegale

In un HierarchyConfig è stato rilevato un valore non ammesso per HierarchyMode. HierarchyMode deve essere nessuno o ereditare.

Per ulteriori informazioni su HierarchyConfigs, consulta la sezione Disattivazione dell'ereditarietà per un tipo di oggetto.

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: OggettoObjectError non supportato

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: Codice di errore risorse non sincronizzabili

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: InvalidCampiInConfigError

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: Errore CRCRD non supportato

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: errore CRDName non valido

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

KNV1052: Spazio dei nominon consentito.

KNV1052: cluster-scoped resources MUST NOT declare metadata.namespace

namespace: foo
metadata.name: default-name
group: rbac.authorization.k8s.io
version: v1
kind: ClusterRole

KNV1053: MissingNamespaceOnNamespacedResourceError

KNV1053: namespace-scoped resources MUST either declare either metadata.namespace or metadata.annotations.configmanagement.gke.io/namespace-selector

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

KNV1054: InvalidAnnotationValueError

Questo errore si verifica quando le configurazioni contengono un valore non valido per un'annotazione.

Esempio di errore:

KNV1054: Values in metadata.annotations MUST be strings. To fix, add quotes around the values. Non-string values for:

metadata.annotations.foo
metadata.annotations.bar

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

KNV1055: non valido

Questo errore indica che il valore di metadata.namespace non è un nome di spazio dei nomi Kubernetes valido.

Esempio di errore:

KNV1055: metadata.namespace MUST be valid Kubernetes Namespace names. Rename "FOO" so that it:

1. has a length of 63 characters or fewer;
2. consists only of lowercase letters (a-z), digits (0-9), and hyphen '-'; and
3. begins and ends with a lowercase letter or digit.

namespace: FOO
metadata.name: repo
group: configmanagement.gke.io
version: v1
kind: Repo

KNV1056: ManagedResourceInUnmanagedNamespace

Questo errore indica che una risorsa è dichiarata in uno spazio dei nomi non gestito. Per risolvere il problema, rimuovi l'annotazione configmanagement.gke.io/managed: disabled o aggiungi l'annotazione alla risorsa dichiarata.

Esempio di errore:

KNV1056: Managed resources must not be declared in unmanaged Namespaces. Namespace "foo" is declared unmanaged but contains managed resources. Either remove the managed: disabled annotation from Namespace "foo" or declare its resources as unmanaged by adding configmanagement.gke.io/managed:disabled annotation.

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

KNV1057: Etichetta profondità

Questo errore indica che una risorsa ha un'etichetta non valida. Per risolvere il problema, rimuovi le etichette che terminano con .tree.hnc.x-k8s.io/depth.

Esempio di errore:

KNV1057: Configs MUST NOT declare labels ending with ".tree.hnc.x-k8s.io/depth". The config has disallowed labels: "label.tree.hnc.x-k8s.io/depth"

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

KNV1058: BadScopeError

Un repository di spazio dei nomi può dichiarare solo le risorse con ambito a livello di spazio dei nomi nel repository a cui si applica il repository. Ad esempio, il repository per il repository dello spazio dei nomi shipping può gestire solo le risorse nello spazio dei nomi shipping.

Il valore dell'attributo metadata.namespace è facoltativo. Per impostazione predefinita, Config Sync presuppone che tutte le risorse in un repository di spazio dei nomi appartengano a quello spazio dei nomi.

Ad esempio, se una configurazione nel shipping repository di nomi è dichiarata metadata.namespace: billing, il comando nomos stampa il seguente errore.

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: errore MultipleKptfiles

Un repository di spazio dei nomi può dichiarare al massimo una risorsa Kptfile.

Ad esempio, se un repository di uno spazio dei nomi ha dichiarato due file Kpt, il comando nomos stampa il seguente errore:

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: ManagementErrorError

Quando lavori con due repository, possono verificarsi conflitti quando lo stesso oggetto (gruppi di corrispondenza, tipi, nomi e spazi dei nomi) viene dichiarato sia nel repository radice che in un repository dello spazio dei nomi.

In caso di conflitto, Config Sync sincronizza la versione del repository radice della configurazione e l'oggetto RootSync non segnala problemi, poiché il repository principale ha la precedenza. L'oggetto RepoSync segnala l'errore KNV 1060 nel suo stato, come mostrato nell'esempio seguente:

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

Poiché il repository principale ha sempre la precedenza, puoi risolvere il conflitto aggiornando il repository radice in modo che corrisponda al repository dello spazio dei nomi o eliminando l'oggetto in conflitto nel repository dello spazio dei nomi.

KNV 1061: InvalidRepoSyncError

Gli oggetti RepoSync devono essere configurati correttamente per consentire la sincronizzazione della configurazione dal repository Cloud. Un elemento InvalidRepoSyncError segnala che un RepoSync non è configurato correttamente, con un messaggio che indica esplicitamente come risolvere il problema.

Ad esempio, se il repository shipping deve avere un RepoSync denominato repo-sync, ma il ReposSync è denominato invalid, il comando nomos stampa il seguente errore.

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

Questo errore si verifica quando il file Kptfile non ha un campo inventario valido. Un file Kptfile deve avere un campo dell'inventario non vuoto con sia l'identificatore sia lo spazio dei nomi specificato. Per correggerlo, devi specificare i valori per .inventory.identifier e .inventory.namespace nel file Kptfile.

Esempi di errori:

KNV1062: Invalid inventory invalid name

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

KNV1063: KptfileExistError

Questo errore si verifica quando vengono trovati Kptfiles nel repository principale. I file Kpt sono supportati solo nei repository con ambito con spazio dei nomi.

Per risolvere il problema, rimuovi i Kptfiles dal repository principale.

Esempi di errori:

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

Questo errore indica che non è stato possibile analizzare il file api-resources.txt in un repository.

Esempi di errori:

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: errore CRformatCRD

Questo errore si verifica quando il formato CustomResourceDefinition non è corretto. Per risolvere il problema, controlla il campo specificato dal messaggio di errore e assicurati che il suo valore sia formattato correttamente.

Esempi di errori:

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: Errore ClusterSelectorAnnotationconf.

Un oggetto di configurazione DEVE dichiarare SOLO UN'annotazione di selezione del cluster. Questo errore si verifica quando sono presenti sia l'annotazione precedente (configmanagement.gke.io/cluster-selector) sia l'annotazione incorporata (configsync.gke.io/cluster-name-selector).

Per risolvere il problema, rimuovi una delle annotazioni dal campo metadata.annotations.

Ad esempio, se una configurazione dello spazio dei nomi ha dichiarato entrambe le annotazioni, il comando nomos stampa il seguente errore:

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

KNV1067: EncodeDeclaredFieldError

Questo errore si verifica quando il riconciliatore non riesce a codificare i campi dichiarati in un formato compatibile con l'applicazione lato lato server. Il problema potrebbe essere dovuto a uno schema obsoleto. Per risolvere il problema, controlla il campo specificato dal messaggio di errore e assicurati che corrisponda allo schema del tipo di risorsa.

Esempi di errori:

KNV1067: failed to encode declared fields: .spec.version not defined

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

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

KNV1068: ActionableRenderingError

Questo errore indica che il processo di rendering rileva un problema che può essere eseguito dall'utente.

Ad esempio, il repository Git contiene configurazioni di Kustomize, ma non esiste alcun file kustomization.yaml nella directory di sincronizzazione Git:

KNV1068: Kustomization config file is missing from the sync directory 'foo/bar'. To fix, either add kustomization.yaml in the sync directory to trigger the rendering process, or remove kustomizaiton.yaml from all sub directories to skip rendering.

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

Se l'errore è causato da errori kustomize build, potrebbe essere necessario aggiornare le configurazioni Kustomize nel tuo repository Git. Puoi visualizzare l'anteprima e convalidare le configurazioni aggiornate localmente utilizzando nomos hydrate e nomos vet rispettivamente. Se le configurazioni aggiornate vengono visualizzate correttamente, puoi eseguire il push di un nuovo commit per correggere l'errore KNV1068. Per maggiori dettagli, consulta Visualizzare il risultato di tutte le configurazioni nel repository e Controllare gli errori nel repository.

Esempio di errore kustomize build:

KNV1068: Error in the hydration-controller container: unable to render the source configs in /repo/source/3b724d1a17314c344fa24512239cb3b22b9d90ec: failed to run kustomize build ...

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

Se si verifica un errore kustomize build durante il pull di basi remote dai repository pubblici, devi impostare spec.override.enableShellInRendering come true da Anthos Config Management versione 1.12.0 e successive.

Esempio di errore kustomize build:

KNV1068: failed to run kustomize build in /repo/source/0a7fd88d6c66362584131f9dfd024024352916af/remote-base, stdout:...
no 'git' program on path: exec: "git": executable file not found in $PATH

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

KNV2001: pathErrore

Questo errore si verifica quando una chiamata di sistema a livello di sistema operativo che accede a una risorsa del file system non va a buon fine.

KNV2002: apiServerError

Questo errore si verifica quando una richiesta di accesso al server API non va a buon fine.

KNV2003: osError

Questo errore si verifica quando una chiamata di sistema generica a livello di sistema operativo non va a buon fine.

KNV2004: SourceErrore

Questo errore indica che Config Sync non è in grado di leggere dal repository Git o dall'immagine OCI di origine. Di solito è dovuto a uno dei seguenti errori.

Directory di configurazione non valida

Verifica la presenza di errori, ad esempio un valore non corretto per policyDir nell'oggetto ConfigManagement o spec.git.dir o spec.oci.dir nell'oggetto RootSync o RepoSync. Il valore della directory è incluso nell'errore; verifica il valore in base al tuo repository Git o all'immagine OCI.

Credenziali Git non valide

Controlla se nei log del contenitore git-sync è presente un errore, come Could not read from remote repository. Ensure you have the correct access rights and the repository exists. o Invalid username or password. Authentication failed for ....

Verifica che le credenziali Git e il secret di git-creds siano configurati correttamente.

URL del repository Git non valido

Controlla se nei log del contenitore git-sync è presente un errore, come Repository not found.

Verifica che il formato dell'URL sia corretto. Ad esempio, se utilizzi una coppia di chiavi SSH per autenticarti nel repository Git, assicurati che l'URL inserito per il repository Git quando configuri Config Sync utilizzi il protocollo SSH.

Ramo Git non valido

Verifica se nei log del contenitore git-sync è presente un errore, come Remote branch BRANCH_NAME not found in upstream origin o warning: Could not find remote branch BRANCH_NAME to clone.. Se il ramo predefinito è impostato su master,

Il repository Git non è raggiungibile dall'interno del cluster

Il log git-sync contiene un errore nei log che indica che non può raggiungere il repository. Ad esempio, ssh: connect to host source.developers.google.com port 2022: Network is unreachable. Per risolvere il problema, modifica il firewall o la configurazione di rete del tuo cluster.

Problemi di autorizzazione quando si utilizza un account di servizio Google

Accesso del lettore mancante

Quando utilizzi un account di servizio Google (spec.git.gcpServiceAccountEmail o spec.oci.gcpServiceAccountEmail) per l'autenticazione su Cloud Source Repositories, Artifact Registry o Container Registry, l'account di servizio Google deve avere il seguente accesso in lettura:

  • Cloud Source Repositories: roles/source.reader
  • Artifact Registry: roles/artifactregistry.reader
  • Container Registry: roles/containerregistry.serviceAgent

In caso contrario, git-sync o oci-sync non riusciranno a restituire l'errore:

failed to pull image us-docker.pkg.dev/...: GET https://us-docker.pkg.dev/v2/token?scope=repository...: DENIED: Permission \"artifactregistry.repositories.downloadArtifacts\" denied on resource \"projects/.../locations/us/repositories/...\" (or it may not exist)

Per risolvere il problema, concedi all'account di servizio l'accesso corretto al lettore.

Associazione dei criteri IAM mancante con Workload Identity

Quando utilizzi un account di servizio Google per l'autenticazione, è necessaria un'associazione di criteri IAM tra l'account di servizio Google e l'account di servizio Kubernetes. Se l'associazione dei criteri IAM manca, viene visualizzato il seguente errore:

KNV2004: unable to sync repo Error in the git-sync container: ERROR: failed to call ASKPASS callback URL: auth URL returned status 500, body: "failed to get token from credentials: oauth2/google: status code 403: {\n \"error\": {\n \"code\": 403,\n \"message\": \"The caller does not have permission\",\n \"status\": \"PERMISSION_DENIED\"\n }\n}\n"

Per risolvere il problema, crea la seguente associazione di criteri IAM:

gcloud iam service-accounts add-iam-policy-binding \
   --role roles/iam.workloadIdentityUser \
   --member "serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \
   GSA_NAME@PROJECT_ID.iam.gserviceaccount.com

Sostituisci quanto segue:

  • PROJECT_ID: se utilizzi GKE Identity, aggiungi l'ID progetto della tua organizzazione. Se utilizzi Workload Identity del parco risorse, puoi utilizzare due ID progetto diversi. In serviceAccount:PROJECT_ID, aggiungi l'ID progetto del parco risorse in cui è registrato il cluster. In GSA_NAME@PROJECT_ID, aggiungi un ID progetto per qualsiasi progetto che abbia accesso in lettura al repository in Cloud Source Repositories.

  • KSA_NAME: l'account di servizio Kubernetes per la riconciliazione. Per i repository principali, se il nome principale è root-sync, KSA_NAME è root-reconciler. In caso contrario, è root-reconciler-ROOT_SYNC_NAME.

    Per i repository di spazio dei nomi, se il nome del repository ReposSync è repo-sync, KSA_NAME è ns-reconciler-NAMESPACE. In caso contrario, è ns-reconciler-NAMESPACE-REPO_SYNC_NAME.

  • GSA_NAME: l'account di servizio Google personalizzato che vuoi utilizzare per la connessione a Cloud Source Repositories. Assicurati che l'account di servizio Google che selezioni abbia il ruolo source.reader.

Ambito cloud-platform mancante per accedere a Cloud Source Repositories

Quando concedi a un account di servizio Google l'accesso al tuo repository Git in Cloud Source Repositories, l'ambito di sola lettura deve essere incluso negli ambiti di accesso per i nodi nel cluster.

L'ambito di sola lettura può essere aggiunto includendo cloud-source-repos-ro nell'elenco --scopes specificato al momento della creazione del cluster oppure utilizzando l'ambito cloud-platform al momento della creazione del cluster. Ad esempio:

gcloud container clusters create CLUSTER_NAME --scopes=cloud-platform

Se manca l'ambito di sola lettura, verrà visualizzato un errore simile al seguente:

Error in the git-sync container: {"Msg":"unexpected error syncing repo, will retry","Err":"Run(git clone -v --no-checkout -b main --depth 1 https://source.developers.google.com/p/PROJECT_ID/r/csr-auth-test /repo/source): exit status 128: { stdout: \"\", stderr: \"Cloning into '/repo/source'...\\nremote: INVALID_ARGUMENT: Request contains an invalid argument\\nremote: [type.googleapis.com/google.rpc.LocalizedMessage]\\nremote: locale: \\\"en-US\\\"\\nremote: message: \\\"Invalid authentication credentials. Please generate a new identifier: https://source.developers.google.com/new-password\\\"\\nremote: \\nremote: [type.googleapis.com/google.rpc.RequestInfo]\\nremote: request_id: \\\"fee01d10ba494552922d42a9b6c4ecf3\\\"\\nfatal: unable to access 'https://source.developers.google.com/p/PROJECT_ID/r/csr-auth-test/': The requested URL returned error: 400\\n\" }","Args":{}}

Ambito storage-ro mancante per accedere ad Artifact Registry o Container Registry

I livelli immagine vengono conservati nei bucket Cloud Storage. Quando concedi a un account di servizio Google l'accesso alla tua immagine OCI in Artifact Registry o Container Registry, l'ambito di sola lettura deve essere incluso negli ambiti di accesso per i nodi nel cluster.

L'ambito di sola lettura può essere aggiunto includendo storage-ro nell'elenco --scopes specificato al momento della creazione del cluster oppure utilizzando l'ambito cloud-platform al momento della creazione del cluster. Ad esempio:

gcloud container clusters create CLUSTER_NAME --scopes=cloud-platform

Se manca l'ambito di sola lettura, verrà visualizzato un errore simile al seguente:

Error in the oci-sync container: {"Msg":"unexpected error fetching package, will retry","Err":"failed to pull image us-docker.pkg.dev/...: GET https://us-docker.pkg.dev/v2/token?scope=repository%3A...%3Apull\u0026service=us-docker.pkg.dev: UNAUTHORIZED: failed authentication","Args":{}}

Il messaggio di errore potrebbe non includere i dettagli completi della causa dell'errore, ma fornisce un comando che stampa i log dal container git-sync e potrebbe contenere ulteriori informazioni.

Se esegui la sincronizzazione da più repository:

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

Se hai disabilitato la sincronizzazione da più repository:

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

KNV2005: ResourceFightWarning

Questo errore indica che Config Sync sta lottando con un altro controller su una risorsa. Queste battaglie consumano un'elevata quantità di risorse e comportano un peggioramento delle prestazioni. Il combattimento è anche noto come conflitto di risorse.

Per rilevare i combattimenti, controlla i log di git-importer di Config Sync eseguendo il comando seguente:

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

Sostituisci CONTAINER_NAME con importer, fs- watcher o git-sync. Dato che git-importer è costituito da questi tre componenti, puoi utilizzarli per controllare i log di git-importer. git-sync clona il repository Git remoto. importer unisce la gerarchia del repository e la riconcilia utilizzando il server API, verificando man mano che si verificano errori. fs- watcher esegue il container dell'importatore in una modalità che registra le modifiche del file system per il repository.

Se vedi KNV2005 nei risultati, significa che c'è un combattimento con le risorse.

Per trovare ulteriori informazioni sui conflitti delle risorse, guarda gli aggiornamenti al file YAML della risorsa eseguendo questo comando:

 kubectl get resource --watch -o yaml

Sostituisci resource con il tipo di risorsa oggetto di lotta. Puoi vedere quale risorsa aggiungere in base ai risultati del log.

Questo comando restituisce un flusso dello stato della risorsa dopo che gli aggiornamenti sono stati applicati al server API. Puoi utilizzare uno strumento di confronto file per confrontare l'output.

Alcune risorse devono appartenere ad altri controller (ad esempio, alcuni operatori possono installare o mantenere i CRD). Questi altri controller rimuovono automaticamente i metadati specifici per Config Sync. Se un altro componente nel tuo cluster Kubernetes rimuove i metadati di Config Sync, smetti di gestire la risorsa. Per informazioni su come eseguire questa operazione, consulta Interrompere la gestione di un oggetto gestito.

KNV2006: errori di Config Management

Per impedire l'eliminazione accidentale, Config Sync non consente di rimuovere tutti gli spazi dei nomi o le risorse con ambito cluster in un singolo impegno.

Se hai commesso modifiche nel tentativo di rimuovere tutte le risorse, devi ripristinarne lo stato originale e poi eliminarle in due passaggi.

Se il webhook di ammissione Config Sync è disabilitato (Anthos Config Management 1.9 e versioni precedenti lo hanno abilitato per impostazione predefinita), puoi ripristinare il commit che elimina tutte le risorse.

Se il webhook di ammissione Config Sync è abilitato, lo spazio dei nomi potrebbe essere bloccato in modo che termini. Per risolvere il problema, procedi nel seguente modo:

  1. Disabilita Config Sync e attendi finché tutte le risorse non vengono pulite o in uno stato stabile. Ad esempio, puoi eseguire kubectl get ns per assicurarti che gli spazi dei nomi siano eliminati.
  2. Riattiva Config Sync.
  3. Ripristina il commit che elimina tutte le risorse.

Come eliminarla

Per eliminare l'intero set di risorse in gestione, sono necessari due passaggi:

  1. Rimuovere tutte le risorse dello spazio dei nomi o con ambito cluster in un primo commit e consentire a Config Sync di sincronizzare le modifiche.
  2. Rimuovi la risorsa finale in un secondo commit.

KNV2008: APIServerErrorError

Questo tipo di errore si verifica quando una risorsa sul server API viene modificata o eliminata mentre anche Config Sync sta tentando di modificarla. Se questo tipo di errore viene visualizzato solo all'avvio o raramente, puoi ignorare questi errori.

Se questi errori non sono temporanei (persistenti per più minuti), potrebbero indicare un problema grave e nomos status segnala i conflitti di risorse.

Esempi di errori:

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

KNV2009: ApplyError

Si tratta di un errore generico che indica che Config Sync non è riuscito a sincronizzare alcune configurazioni nel cluster. Esempio di errore:

KNV2009: no matches for kind "Anvil" in group "acme.com".

Timeout I/O richiesta di webhook di ammissione

Se viene visualizzato il seguente errore quando il riconciliatore tenta di applicare una configurazione al cluster:

KNV2009: Internal error occurred: failed calling webhook "v1.admission-webhook.configsync.gke.io": Post https://admission-webhook.config-management-system.svc:8676/admission-webhook?timeout=3s: dial tcp 10.1.1.186:8676: i/o timeout

Questo errore può essere causato dal blocco della porta webhook di ammissione 8676 da parte del firewall per la rete del piano di controllo. Per risolvere questo problema, aggiungi una regola firewall per consentire la porta 8676, che il webhook di ammissione Config Sync utilizza per la prevenzione delle deviazioni.

Connessione webhook di ammissione rifiutata

Quando il riconciliatore tenta di applicare una configurazione al cluster, potresti ricevere il seguente errore:

KNV2009: Internal error occurred: failed calling webhook "v1.admission-webhook.configsync.gke.io": Post "https://admission-webhook.config-management-system.svc:8676/admission-webhook?timeout=3s": dial tcp 10.92.2.14:8676: connect: connection refused

Questo errore significa che il webhook di ammissione non è ancora pronto. Si tratta di un errore temporaneo che potresti visualizzare quando si avvia Config Sync.

Se il problema persiste, controlla il deployment del webhook di ammissione per verificare se i suoi pod possono essere pianificati e sono in stato integro.

kubectl describe deploy admission-webhook -n config-management-system

kubectl get pods -n config-management-system -l app=admission-webhook

La risorsa ResourceGroup supera il limite di dimensioni degli oggetti etcd

Se viene visualizzato il seguente errore quando il riconciliatore tenta di applicare configurazioni al cluster:

KNV2009: too many declared resources causing ResourceGroup.kpt.dev, config-management-system/root-sync failed to be applied: task failed (action: "Inventory", name: "inventory-add-0"): Request entity too large: limit is 3145728. To fix, split the resources into multiple repositories.

Questo errore significa che la risorsa ResourceGroup supera il limite di dimensioni degli oggetti etcd. Ti consigliamo di suddividere il repository Git in più repository. Se non riesci a suddividere il repository Git, in Config Sync v1.11.0 e versioni successive puoi mitigare la disabilitazione disattivando i dati di stato. Questa operazione viene eseguita impostando il campo .spec.override.statusMode dell'oggetto RootSync o RepoSync su disabled. In questo modo, Config Sync interrompe l'aggiornamento dello stato delle risorse gestite nell'oggetto ResourceGroup. Riduce le dimensioni dell'oggetto ResourceGroup. Tuttavia, non potrai visualizzare lo stato delle risorse gestite da nomos status o da gcloud alpha anthos config sync.

Dipendenza applicazione della riconciliazione

Potresti ricevere un errore simile al seguente esempio quando il riconciliatore tenta di applicare al cluster gli oggetti con l'annotazione config.kubernetes.io/depends-on:

KNV2009: skipped apply of Pod, bookstore/pod4: dependency apply reconcile timeout: bookstore_pod3__Pod  For more information, see https://g.co/cloud/acm-errors#knv2009

Questo errore indica che l'oggetto dipendenza non è stato riconciliato entro il timeout predefinito di riconciliazione di 5 minuti. Config Sync non può applicare l'oggetto dipendente poiché con l'annotazione config.kubernetes.io/depends-on, Config Sync applica solo gli oggetti nell'ordine che preferisci. Puoi sostituire il timeout predefinito per la riconciliazione impostando un periodo di tempo più lungo spec.override.reconcileTimeout.

Le informazioni sull'inventario sono zero

Se viene visualizzato il seguente errore quando il riconciliatore tenta di applicare configurazioni al cluster, è probabile che il tuo inventario non abbia risorse o che il manifest abbia un'annotazione non gestita:

KNV2009: inventory info is nil\n\nFor more information, see https://g.co/cloud/acm-errors#knv2009

Per risolvere il problema, prova quanto segue:

  1. Evita di configurare le sincronizzazioni in cui tutte le risorse hanno l'annotazione configmanagement.gke.io/managed: disabled, assicurandoti che almeno una risorsa sia gestita da Config Sync.
  2. Aggiungi l'annotazione configmanagement.gke.io/managed: disabled solo dopo aver completato la sincronizzazione iniziale della risorsa senza questa annotazione.

KNV2010: resourceError

Si tratta di un errore generico che indica un problema con una risorsa o un set di risorse. Il messaggio include le risorse specifiche che hanno causato l'errore.

KNV2010: Resources were improperly formatted.

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

KNV2011: ResourceResourceError non valido

Questo errore indica che per continuare è necessaria una risorsa specifica, ma la risorsa non è stata trovata. Ad esempio, l'operatore Config Management ha tentato di aggiornare una risorsa, ma è stata eliminata durante il calcolo dell'aggiornamento.

KNV2012: errore SingleSingleton

Questo errore segnala che è stata trovata più di un'istanza di APIResource in un contesto in cui è consentita esattamente una risorsa APIResource. Ad esempio, può esistere una sola risorsa repository in un cluster.

KNV2013: PermissionPermissionError insufficiente

Questo errore si verifica quando un riconciliatore dello spazio dei nomi non dispone delle autorizzazioni necessarie per gestire le risorse. Per risolvere il problema, verifica che il riconciliatore disponga di autorizzazioni sufficienti.

Esempi di errori:

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

KNV2014: InvalidWebhookWarning

Questo avviso viene visualizzato quando la configurazione del webhook di Config Sync viene modificata in modo illegale. Le configurazioni webhook illegali vengono ignorate.

Esempio di avviso:

KNV2014: invalid webhook

KNV2015: Errore di rendering interno

Questo errore indica che il processo di rendering ha riscontrato un problema interno. Un esempio non riesce ad accedere al file system. Questo può indicare che il pod non è integro. Puoi riavviare il pod del riconciliatore eseguendo questo comando:

# 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>

Se l'errore persiste dopo il riavvio, crea una segnalazione di bug.

KNV9997: RenderingInProgress

KNV9997 indica che lo stato del rendering non è disponibile per il riconciliatore. L'errore non viene mostrato nell'API RootSync/RepoSync o nomos status e viene visualizzato solo nel log di riconciliazione. Si tratta di un errore temporaneo che verrà risolto automaticamente quando lo stato del rendering sarà disponibile.

Log di esempio:

2021-10-04T15:50:46.166961451Z E1004 15:50:46.166756       1 state.go:69] Invalidating reconciler checkpoint: 1 error(s)
2021-10-04T15:50:46.167032152Z [1] KNV9997: rendering in progress for commit 90c1d9e9633a988ee3c3fc4dd145e62af30e9d1f  For more information, see https://g.co/cloud/acm-errors#knv9997
2021-10-04T15:50:48.125422752Z I1004 15:50:48.125223       1 run.go:73] The last reconciliation failed

KNV9998: InternalError

KNV9998 indica un problema con il comando nomos. Invia una segnalazione di bug con il comando esatto che hai eseguito e il messaggio ricevuto.

Esempi di errori:

KNV9998: we made a mistake: internal error

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

KNV9999: Errore non documentato

Hai riscontrato un errore senza un messaggio di errore documentato. Non abbiamo ancora scritto documentazione specifica per l'errore che hai riscontrato.

Passaggi successivi