| Aggiornamenti | 1.32.0-1.32.600, 1.33.0-1.33.100 | Impossibile aggiornare il cluster utente non HA al cluster HA avanzato a causa del campo
    masterNode.replicasimmutabile L'utilizzo di gkectl updateper aggiornare un cluster utente non ad alta disponibilità (non HA) a un cluster avanzato con un control plane HA non riesce e viene visualizzato il seguente messaggio di errore: 
Failed to generate diff summary: failed to get desired onprem user cluster and node pools from seed config with dry-run webhooks:
failed to apply validating webhook to OnPremUserCluster:
masterNode.replcias: Forbidden: the field must not be mutated, diff (-before, +after): int64(- 1,+ 3)
 Soluzione temporanea: Utilizza il comando gkectl upgradeper
    eseguire l'upgrade
    del cluster utente non HA a un cluster avanzato HA. | 
  | Aggiornamenti | 1.30, 1.31 | I pod Windows rimangono in stato Pending dopo la migrazione di ControlPlaneV2 a causa di un certificato TLS non validoDurante un'operazione di aggiornamento di Google Distributed Cloud che include una migrazione di ControlPlaneV2 dalla versione 1.30.x alla 1.31.x, i pod Windows potrebbero non essere pianificati e rimanere nello stato Pending. Questo problema si manifesta come un errore di convalida del certificato TLS per il webhook di ammissione di modificawindows-webhook. Il problema si verifica perché il nome alternativo del soggetto (SAN) del certificato conserva erroneamente un valore valido per la vecchia architettura Kubeception anziché essere rigenerato per il nuovo endpointkube-system.svc. Potresti visualizzare il seguente messaggio di errore: failed calling webhook "windows.webhooks.gke.io": failed to call webhook: Post "https://windows-webhook.kube-system.svc:443/pod?timeout=10s": tls: failed to verify certificate: x509. Questa situazione può verificarsi a causa del processo di migrazione di ControlPlaneV2 che copia i contenuti di etcd, il che comporta il trasferimento del vecchio certificato senza una rigenerazione corretta. È importante notare che i pool di nodi Windows sono una funzionalità ritirata e non saranno disponibili in Google Distributed Cloud versione 1.33 e successive. Soluzione temporanea: 
      
        Esegui il backup del secret user-component-optionsnello spazio dei nomi del cluster utente:     kubectl get secret user-component-options -n USER_CLUSTER_NAME -oyaml > backup.yaml
    
        Elimina il secret user-component-options:     kubectl delete secret user-component-options -n USER_CLUSTER_NAME
    
        Modifica la risorsa onpremuserclusterper attivare
        la riconciliazione aggiungendo
        l'annotazioneonprem.cluster.gke.io/reconcile: "true":     kubectl edit onpremusercluster USER_CLUSTER_NAME -n USER_CLUSTER_MGMT_NAMESPACE
     Sostituisci USER_CLUSTER_NAMEcon il nome del tuo
    cluster utente. | 
  | Upgrade, aggiornamenti | 1.32.0-1.32.500, 1.33.0 | 
    Quando esegui l'upgrade/l'aggiornamento di un cluster non avanzato a un cluster avanzato, il
    processo potrebbe smettere di rispondere se
    stackdriver
    non è abilitato.
     Soluzione temporanea: 
      Se l'upgrade del cluster non è ancora stato eseguito, devi seguire i passaggi per attivare
    stackdriver:
      Aggiungi la sezione stackdriver
      al file di configurazione del cluster.
      
      Esegui gkectl updateper attivarestackdriver.Se è già in corso un upgrade, segui questi passaggi:
    
      Modifica il secret user-cluster-credsnello spazio dei nomiUSER_CLUSTER_NAME-gke-onprem-mgmtcon il seguente comando:kubectl --kubeconfig ADMIN_KUBECONFIG \
  patch secret user-cluster-creds \
  -n USER_CLUSTER_NAME-gke-onprem-mgmt \
  --type merge -p "{\"data\":{\"stackdriver-service-account-key\":\"$(cat STACKDRIVER_SERVICE_ACCOUNT_KEY_FILE | base64 | tr -d '\n')\"}}"Aggiorna la risorsa personalizzata OnPremUserClustercon il campo stackdriver. Devi utilizzare lo stesso progetto con la stessa posizione del progetto e la stessa chiave del account di servizio di cloudauditlogging se hai attivato la funzionalità.kubectl --kubeconfig ADMIN_KUBECONFIG \
    patch onpremusercluster USER_CLUSTER_NAME \
    -n USER_CLUSTER_NAME-gke-onprem-mgmt --type merge -p '
    spec:
      stackdriver:
        clusterLocation: PROJECT_LOCATIONproviderID:PROJECT_IDserviceAccountKey:
          kubernetesSecret:
            keyName: stackdriver-service-account-key
            name: user-cluster-creds
'Aggiungi la sezione stackdriver
      al file di configurazione del cluster per coerenza.
       | 
  | Upgrade | 1.29, 1.30, 1.31, 1.32+ | I pod non riescono a connettersi al server API Kubernetes con Dataplane V2 e criteri di rete restrittiviNei cluster che utilizzano l'architettura Control Plane V2 (CPv2) (impostazione predefinita nella versione
    1.29 e successive) e Dataplane V2, i pod potrebbero non riuscire a connettersi al
    server API Kubernetes (kubernetes.default.svc.cluster.local).
    Questo problema è spesso causato dalla presenza di criteri di rete,
    in particolare quelli con regole di uscita di negazione predefinite. I sintomi includono: 
    I tentativi di connessione TCP all'indirizzo IP del cluster o agli indirizzi IP dei nodi del server API
    restituiscono un messaggio Connection reset by peer.Errori di handshake TLS durante la connessione al server API.L'esecuzione del comando cilium monitor -t dropsul nodo interessato può mostrare i pacchetti destinati agli indirizzi IP dei nodi del control plane e alla porta del server API (in genere 6443) che vengono eliminati. CausaQuesto problema deriva da un'interazione tra Dataplane V2 (basato su
    Cilium) e le norme di rete Kubernetes nell'architettura CPv2, in cui
    i componenti del control plane vengono eseguiti sui nodi all'interno del cluster utente. La configurazione
    Cilium predefinita non interpreta correttamente le regole ipBlock nei criteri di rete
    che hanno lo scopo di consentire il traffico agli IP dei nodi dei membri del piano di controllo. Questo problema è correlato a un problema Cilium upstream
    (cilium#20550).  Soluzione temporanea: Per le versioni 1.29, 1.30 e 1.31, evita di utilizzare criteri di rete in uscita restrittivi che potrebbero bloccare il traffico verso i nodi del control plane. Se hai bisogno di una policy di negazione predefinita, potresti dover aggiungere una regola di autorizzazione generale per tutto il traffico in uscita, ad esempio non specificando alcuna regola nella sezione in uscita, consentendo di fatto tutto il traffico in uscita. Questa soluzione è meno sicura e potrebbe non essere adatta a tutti gli ambienti.  Per tutte le altre versioni, abilita una configurazione Cilium per far corrispondere correttamente gli IP dei nodi nei campi ipBlock della policy di rete. Per trovare una corrispondenza tra gli IP dei nodi nei campi ipBlockdel criterio di rete, segui questi passaggi: 
    Modifica il ConfigMap cilium-config:kubectl edit configmap -n kube-system cilium-configAggiungi o modifica la sezione dei dati in modo che includa
    policy-cidr-match-mode: nodes:data:
      policy-cidr-match-mode: nodesPer applicare la modifica alla configurazione, riavvia il DaemonSet anetd:
    kubectl rollout restart ds anetd -n kube-systemAssicurati di avere un criterio di rete che consenta esplicitamente il traffico in uscita
    dai pod agli IP dei nodi del control plane sulla porta del server API.
    Identifica gli indirizzi IP dei nodi del control plane del cluster utente eseguendo kubectl get svc kubernetes. L'output è simile al seguente:    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-egress-to-kube-apiserver
      namespace: NAMESPACE_NAME
    spec:
      podSelector: {} 
      policyTypes:
      - Egress
      egress:
      - to:
        - ipBlock:
            cidr: CP_NODE_IP_1/32
        - ipBlock:
            cidr: CP_NODE_IP_2/32
        ports:
        - protocol: TCP
          port: 6443 # Kubernetes API Server port on the node
     | 
  | Installazione | 1.30.200-gke.101 | Il pod dell'agente gke-connectbloccato nello statoPendingdurante la creazione del cluster utenteDurante la creazione del cluster utente, il pod dell'agente gke-connectpotrebbe bloccarsi nello statoPending, impedendo la creazione
    completa del cluster. Questo problema si verifica perché il pod dell'agentegke-connecttenta di pianificare prima che i nodi di lavoro siano disponibili, il che porta a un deadlock. Questo problema si verifica quando la creazione iniziale del cluster di utenti non va a buon fine a causa di
    errori di convalida preflight e viene effettuato un tentativo successivo di creare il cluster
    senza prima eliminare le risorse create parzialmente. Nel
    successivo tentativo di creazione del cluster, il pod dell'agente gke-connectè bloccato a causa di taint non tollerati sui nodi del control plane, come indicato da
    un errore simile al seguente:     0/3 nodes are available: 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }`.
    Soluzione temporanea:  Se la creazione del cluster utente non riesce a causa di errori di convalida preflight,
    elimina le risorse del cluster create parzialmente prima di tentare di creare
    di nuovo il cluster con le configurazioni corrette. Ciò garantisce che il flusso di lavoro di creazione proceda correttamente, inclusa la creazione di pool di nodi prima del deployment del pod dell'agente gke-connect. | 
    | Aggiorna | 1.16 e versioni precedenti, 1.28.0-1.28.1100, 1.29.0-1.29.700, 1.30.0-1.30.200 | I secret rimangono criptati dopo aver disattivato la crittografia dei secret sempre attivaDopo aver disattivato la crittografia dei secret sempre attiva con gkectl update cluster, i secret vengono comunque archiviati inetcdcon la crittografia. Questo problema riguarda solo i cluster utente kubeception. Se il tuo cluster utilizza Controlplane V2, non
      sei interessato da questo problema. Per verificare se i secret sono ancora criptati, esegui questo comando, che recupera il secret default/private-registry-credsmemorizzato inetcd: 
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    exec -it -n USER_CLUSTER_NAME kube-etcd-0 -c kube-etcd -- \
    /bin/sh -ec "export ETCDCTL_API=3; etcdctl \
    --endpoints=https://127.0.0.1:2379 \
    --cacert=/etcd.local.config/certificates/etcdCA.crt \
    --cert=/etcd.local.config/certificates/etcd.crt \
    --key=/etcd.local.config/certificates/etcd.key \
    get /registry/secrets/default/private-registry-creds" | hexdump -C
Se il secret è archiviato con la crittografia, l'output è simile al seguente: 00000000  2f 72 65 67 69 73 74 72  79 2f 73 65 63 72 65 74  |/registry/secret|
00000010  73 2f 64 65 66 61 75 6c  74 2f 70 72 69 76 61 74  |s/default/privat|
00000020  65 2d 72 65 67 69 73 74  72 79 2d 63 72 65 64 73  |e-registry-creds|
00000030  0d 0a 6b 38 73 3a 65 6e  63 3a 6b 6d 73 3a 76 31  |..k8s:enc:kms:v1|
00000040  3a 67 65 6e 65 72 61 74  65 64 2d 6b 65 79 2d 6b  |:generated-key-k|
00000050  6d 73 2d 70 6c 75 67 69  6e 2d 31 3a 00 89 65 79  |ms-plugin-1:..ey|
00000060  4a 68 62 47 63 69 4f 69  4a 6b 61 58 49 69 4c 43  |JhbGciOiJkaXIiLC|
... Se il secret non è archiviato con la crittografia, l'output è simile al
      seguente: 00000000  2f 72 65 67 69 73 74 72  79 2f 73 65 63 72 65 74  |/registry/secret|
00000010  73 2f 64 65 66 61 75 6c  74 2f 70 72 69 76 61 74  |s/default/privat|
00000020  65 2d 72 65 67 69 73 74  72 79 2d 63 72 65 64 73  |e-registry-creds|
00000030  0d 0a 6b 38 73 00 0d 0a  0c 0d 0a 02 76 31 12 06  |..k8s.......v1..|
00000040  53 65 63 72 65 74 12 83  47 0d 0a b0 2d 0d 0a 16  |Secret..G...-...|
00000050  70 72 69 76 61 74 65 2d  72 65 67 69 73 74 72 79  |private-registry|
00000060  2d 63 72 65 64 73 12 00  1a 07 64 65 66 61 75 6c  |-creds....defaul|
... Soluzione temporanea: 
       Esegui un aggiornamento in sequenza su un DaemonSet specifico nel seguente modo:
        kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      rollout restart statefulsets kube-apiserver \
      -n USER_CLUSTER_NAME
    Recupera i manifest di tutti i secret nel cluster utente in formato YAML:
        kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
      get secrets -A -o yaml > SECRETS_MANIFEST.yaml
     Applica nuovamente tutti i secret nel cluster utente in modo che tutti i secret vengano archiviati
    in etcdcome testo normale:    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
      apply -f SECRETS_MANIFEST.yaml
     | 
    | Configurazione | 1.29, 1.30, 1.31 | Nel file user-cluster.yamlgenerato manca il campohostgroupsNel file di configurazione del cluster utente, user-cluster.yaml, generato
      dal comandogkectl get-config, manca il campohostgroupsnella sezionenodePools. Il comandogkectl get-configgenera il fileuser-cluster.yamlin base ai contenuti
      della risorsa personalizzataOnPremUserCluster. Il camponodePools[i].vsphere.hostgroupsesiste nella risorsa personalizzataOnPremNodePoole non viene
      copiato nel fileuser-cluster.yamlquando eseguigkectl get-config. Soluzione temporanea Per risolvere il problema, aggiungi manualmente il campo nodePools[i].vsphere.hostgroupsal fileuser-cluster.yaml. Il file modificato dovrebbe essere
      simile all'esempio seguente: apiVersion: v1
kind: UserCluster
...
nodePools:
- name: "worker-pool-1"
  enableLoadBalancer: true
  replicas: 3
  vsphere:
    hostgroups:
    - "hostgroup-1"
...Puoi utilizzare il file di configurazione del cluster utente modificato per aggiornare il
      cluster utente senza attivare errori e il campo hostgroupsviene mantenuto. | 
  | Networking | 1.29.0-1.29.1000 1.30.0-1.30.500, 1.31.0-1.31.100 | L'ingresso in bundle non è compatibile con le risorse gateway.networking.k8s.io I pod Istiod dell'ingresso in bundle non possono essere pronti se le risorse gateway.networking.k8s.iosono installate nel cluster utente. Il seguente messaggio di errore di esempio è disponibile
    nei log dei pod: 
    failed to list *v1beta1.Gateway: gateways.gateway.networking.k8s.io is forbidden: User \"system:serviceaccount:gke-system:istiod-service-account\" cannot list resource \"gateways\" in API group \"gateway.networking.k8s.io\" at the cluster scope"
    Soluzione temporanea:  Applica il seguente ClusterRole e ClusterRoleBinding al cluster utente:  apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: istiod-gateway
rules:
- apiGroups:
  - 'gateway.networking.k8s.io'
  resources:
  - '*'
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: istiod-gateway-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: istiod-gateway
subjects:
- kind: ServiceAccount
  name: istiod-service-account
  namespace: gke-system
     | 
  | Installazione | 1.29.0-1.29.1000 1.30.0-1.30.500, 1.31.0-1.31.100 | I nodi del control plane del cluster di amministrazione continuano a riavviarsi dopo l'esecuzione di gkectl create adminSe i nomi host nel campo
    ipblockscontengono lettere maiuscole, i nodi del control plane del cluster di amministrazione potrebbero
    riavviarsi ripetutamente. Soluzione temporanea: Utilizza solo nomi host minuscoli. | 
  | Installazione, upgrade | 1.30.0-1.30.500, 1.31.0-1.31.100 | Runtime: out of memory"error" dopo l'esecuzione digkeadm createoupgrade
Quando crei o esegui l'upgrade delle workstation di amministrazione con i comandi gkeadm,
    potresti ricevere un errore di esaurimento della memoria durante la verifica dell'immagine del sistema operativo scaricata.  Ad esempio,
 
Downloading OS image
"gs://gke-on-prem-release/admin-appliance/1.30.400-gke.133/gke-on-prem-admin-appliance-vsphere-1.30.400-gke.133.ova"...
[==================================================>] 10.7GB/10.7GB
Image saved to
/anthos/gke-on-prem-admin-appliance-vsphere-1.30.400-gke.133.ova
Verifying image gke-on-prem-admin-appliance-vsphere-1.30.400-gke.133.ova...
|
runtime: out of memory
 Soluzione temporanea:Aumenta la dimensione della memoria del sistema operativo in cui esegui il comando gkeadm. | 
  | Upgrade | 1.30.0-1.30.400 | L'upgrade del cluster di amministrazione non HA è bloccato su Creating or updating cluster control plane workloadsQuando esegui l'upgrade di un cluster di amministrazione non ad alta disponibilità, l'upgrade potrebbe bloccarsi al
    Creating or updating cluster control plane workloads. Questo problema si verifica se nella VM master amministratore, ip a | grep calirestituisce un risultato non vuoto.  Ad esempio,
 
ubuntu@abf8a975479b-qual-342-0afd1d9c ~ $ ip a | grep cali
4: cali2251589245f@if3:  mtu 1500 qdisc noqueue state UP group default
 Soluzione temporanea: 
      Ripara il master di amministrazione:
gkectl repair admin-master --kubeconfig=ADMIN_KUBECONFIG \
    --config=ADMIN_CONFIG_FILE \
    --skip-validation
Seleziona il modello di VM 1.30 se visualizzi un prompt come il seguente esempio:
Please select the control plane VM template to be used for re-creating the
admin cluster's control plane VM.
Riprendi l'upgrade:
gkectl upgrade admin --kubeconfig ADMIN_KUBECONFIG \
    --config ADMIN_CONFIG_FILE
 | 
  | Configurazione | 1.31.0 | Campo isControlPlaneridondante nel file di configurazione del cluster innetwork.controlPlaneIPBlock I file di configurazione del cluster generati da gkectl create-confignella versione 1.31.0
    contengono un campoisControlPlaneridondante innetwork.controlPlaneIPBlock:     controlPlaneIPBlock:
    netmask: ""
    gateway: ""
    ips:
    - ip: ""
      hostname: ""
      isControlPlane: false
    - ip: ""
      hostname: ""
      isControlPlane: false
    - ip: ""
      hostname: ""
      isControlPlane: false
     Questo campo non è necessario e può
    essere rimosso in sicurezza dal file di configurazione.
     | 
  
  | Migrazione | 1.29.0-1.29.800, 1.30.0-1.30.400, 1.31.0 | Nodi del componente aggiuntivo di amministrazione bloccati su NotReady durante la migrazione del cluster di amministrazione da non HA ad HAQuando esegui la migrazione di un cluster di amministrazione non HA che utilizza MetalLB ad HA, i nodi del componente aggiuntivo di amministrazione potrebbero bloccarsi con lo stato NotReady, impedendo il completamento della migrazione. Questo problema riguarda solo i cluster di amministrazione configurati con MetalLB, in cui
    la riparazione automatica non è abilitata. Questo problema è causato da una race condition durante la migrazione in cui i
    speaker MetalLB utilizzano ancora il vecchio secret metallb-memberlist. A causa della race condition, il vecchio VIP del control plane diventa inaccessibile, il che causa l'interruzione della migrazione. Soluzione temporanea: 
      Elimina il secret metallb-memberlistesistente:
kubectl --kubeconfig=ADMIN_KUBECONFIG -n kube-system \
    delete secret metallb-memberlist
Riavvia il deployment di metallb-controllerin modo che possa
      generare il nuovometallb-memberlist:
kubectl --kubeconfig=ADMIN_KUBECONFIG -n kube-system \
    rollout restart deployment metallb-controller
Assicurati che venga generato il nuovo metallb-memberlist:
kubectl --kubeconfig=ADMIN_KUBECONFIG -n kube-system \
    get secret metallb-memberlist
Aggiorna updateStrategy.rollingUpdate.maxUnavailablenel
      DaemonSetmetallb-speakerda1a100%.Questo passaggio è obbligatorio perché alcuni pod DaemonSet vengono eseguiti sui nodi NotReady. 
kubectl --kubeconfig=ADMIN_KUBECONFIG -n kube-system \
    edit daemonset metallb-speaker
Riavvia il DaemonSet metallb-speakerin modo che possa recuperare la nuova lista dei membri:
kubectl --kubeconfig=ADMIN_KUBECONFIG -n kube-system \
    rollout restart daemonset metallb-speaker
Dopo alcuni minuti, i nodi del componente aggiuntivo amministratore tornano a essere Readye la migrazione può continuare.Se il comando gkectliniziale è scaduto dopo più di 3
      ore, esegui di nuovogkectl updateper riprendere la migrazione non riuscita. | 
  | Configurazione, funzionamento | 1.12+, 1.13+, 1.14+, 1.15+, 1.16+, 1.28+, 1.29+, 1.30+ | Il backup del cluster per il cluster di amministrazione non HA non riesce a causa di nomi lunghi di datastore e datadisk Quando si tenta di eseguire il backup di un cluster di amministrazione non HA, il backup non riesce perché la lunghezza combinata dei nomi del datastore e del disco dati supera la lunghezza massima dei caratteri.  La lunghezza massima di un nome datastore è 80 caratteri.Il percorso di backup per un cluster di amministrazione non HA ha la sintassi di denominazione "__". Pertanto, se il nome concatenato supera la lunghezza massima, la creazione della cartella di backup non andrà a buon fine
 Soluzione temporanea: Rinomina il datastore o il datadisk con un nome più breve.Assicurati che la lunghezza combinata dei nomi del datastore e del datadisk non superi la lunghezza massima dei caratteri.
 | 
  | Upgrade | 1,28, 1,29, 1,30 | Il nodo del control plane di amministrazione HA mostra una versione precedente dopo l'esecuzione di gkectl repair admin-master Dopo aver eseguito il comando gkectl repair admin-master, un
    nodo del piano di controllo amministrativo potrebbe mostrare una versione precedente a quella prevista.  Questo problema si verifica perché il modello di VM di backup utilizzato per la riparazione del nodo del piano di controllo di amministrazione HA non viene aggiornato in vCenter dopo un upgrade, perché il modello di VM di backup non è stato clonato durante la creazione della macchina se il nome della macchina rimane invariato. Soluzione temporanea: 
    Trova il nome della macchina che utilizza la versione precedente di Kubernetes:
    
    kubectl get machine -o wide --kubeconfig=ADMIN_KUBECONFIG
    Rimuovi l'annotazione onprem.cluster.gke.io/prevented-deletion:
    kubectl edit machine MACHINE_NAME --kubeconfig=ADMIN_KUBECONFIG
    Salva la modifica.Esegui questo comando per eliminare la macchina:
    
    kubectl delete machine MACHINE_NAME --kubeconfig=ADMIN_KUBECONFIG
    Verrà creata una nuova macchina con la versione corretta. | 
  | Configurazione | 1.30.0 |  Quando aggiorni un cluster utente o un nodepool utilizzando Terraform, Terraform
        potrebbe tentare di impostare i campi vCentersu valori vuoti.  Questo problema può verificarsi se il cluster non è stato creato originariamente utilizzando
        Terraform. Soluzione temporanea: Per evitare l'aggiornamento imprevisto, assicurati che l'aggiornamento sia sicuro prima di
    eseguire terraform apply, come descritto di seguito: 
     Esegui terraform planNell'output, controlla se i campi vCentersono impostati sunil.Se un campo vCenterè impostato su un valore vuoto,
    nella configurazione Terraform, aggiungivcenterall'elencoignore_changesseguendo
    
    la documentazione di Terraform. In questo modo, gli aggiornamenti a questi campi vengono impediti.Esegui di nuovo terraform plane controlla l'output per verificare
    che l'aggiornamento sia quello previsto. | 
  | Aggiornamenti | 1.13, 1.14, 1.15, 1.16 | I nodi del control plane del cluster utente vengono sempre riavviati durante la prima operazione di aggiornamento del cluster di amministrazione  Dopo la creazione, l'aggiornamento o l'upgrade dei nodi del control plane dei cluster utente kubeception, questi verranno riavviati uno alla volta durante la prima operazione del cluster di amministrazione quando il cluster di amministrazione viene creato o aggiornato a una delle versioni interessate. Per i cluster kubeception con tre nodi del control plane, questo non dovrebbe causare tempi di inattività del control plane e l'unico impatto è che l'operazione del cluster di amministrazione richiede più tempo.  | 
  
  
    | Installazione, upgrade e aggiornamenti | 1,31 | Errori durante la creazione di risorse personalizzateNella versione 1.31 di Google Distributed Cloud, potresti ricevere errori quando
      provi a creare risorse personalizzate, come cluster (di tutti i tipi) e
      carichi di lavoro. Il problema è causato da una modifica sostanziale introdotta in
      Kubernetes 1.31 che impedisce la transizione del campo caBundlein una definizione di risorsa personalizzata da uno stato valido a uno non valido.
      Per saperne di più sulla modifica, consulta il
      changelog di Kubernetes 1.31. Prima di Kubernetes 1.31, il campo caBundleveniva spesso impostato
      su un valore provvisorio di\n, perché nelle versioni precedenti di Kubernetes
      il server API non consentiva contenuti del bundle CA vuoti. L'utilizzo di\nera una soluzione alternativa ragionevole per evitare confusione, in quantocert-managerin genere aggiornacaBundlein un secondo momento. Se caBundleè stato corretto una volta da uno stato non valido a uno valido, non dovrebbero esserci problemi. Tuttavia, se la definizione della risorsa personalizzata
      viene riconciliata con\n(o un altro valore non valido), potresti riscontrare il seguente errore: 
...Invalid value: []byte{0x5c, 0x6e}: unable to load root certificates: unable to parse bytes as PEM block]
Soluzione temporanea Se hai una definizione di risorsa personalizzata in cui caBundleè impostato su un valore non valido, puoi rimuovere in sicurezza l'intero campocaBundle. Il problema dovrebbe risolversi. | 
  | Sistema operativo | 1,31 | cloud-init statusrestituisce sempre un errore
Quando esegui l'upgrade di un cluster che utilizza l'immagine del sistema operativo Container Optimized OS (COS) alla versione 1.31, il comando cloud-init statusnon va a buon fine, anche se cloud-init è stato completato senza errori. Soluzione temporanea: Esegui questo comando per controllare lo stato di cloud-init: 
    systemctl show -p Result cloud-final.service
    Se l'output è simile al seguente, cloud-init è stato completato
    correttamente: 
    Result=success
     | 
  | Upgrade | 1,28 | Il controllo preliminare della workstation di amministrazione non va a buon fine durante l'upgrade alla versione 1.28 con
        dimensioni del disco inferiori a 100 GBQuando esegui l'upgrade di un cluster alla versione 1.28, il comando gkectl preparenon riesce durante l'esecuzione dei controlli preliminari della workstation di amministrazione se la
    dimensione del disco della workstation di amministrazione è inferiore a 100 GB. In questo caso, il
    comando mostra un messaggio di errore simile al seguente: 
    Workstation Hardware: Workstation hardware requirements are not satisfied
    Nella versione 1.28, il prerequisito relativo alla dimensione del disco della workstation amministrativa è stato aumentato
       da 50 GB a 100 GB. Soluzione temporanea: 
    Esegui il rollback della workstation di amministrazione.Aggiorna
    il file di configurazione della workstation amministrativa per aumentare le dimensioni del disco ad almeno 100 GB.Esegui l'upgrade della workstation di amministrazione. | 
  | Upgrade | 1,30 | gkectlrestituisce un errore false su netapp storageclass
Il comando gkectl upgraderestituisce un errore errato
    relativo alla classe di archiviazione netapp. Il messaggio di errore è simile al seguente:     detected unsupported drivers:
      csi.trident.netapp.io
    Soluzione temporanea: Esegui gkectl upgradecon il flag `--skip-pre-upgrade-checks`. | 
  | Identità | tutte le versioni | Il certificato CA non valido dopo la rotazione della CA del cluster in ClientConfigimpedisce l'autenticazione del clusterDopo aver ruotato i certificati dell'autorità di certificazione (CA) su un cluster utente, il campo spec.certificateAuthorityDatainClientConfigcontiene un certificato CA non valido, il che impedisce l'autenticazione al cluster. Soluzione temporanea: Prima della successiva autenticazione gcloud CLI, aggiorna manualmente il campo
    spec.certificateAuthorityDatanel fileClientConfigcon il certificato CA corretto. 
    Copia il certificato CA del cluster dal campo
    certificate-authority-datanel file kubeconfig del cluster di amministrazione.
    Modifica ClientConfige incolla il certificato CA nel campospec.certificateAuthorityData.    kubectl edit clientconfig default -n kube-public --kubeconfig USER_CLUSTER_KUBECONFIG
     | 
  | Aggiornamenti | 1.28+ | Il controllo preflight non riesce quando viene disattivato l'ingresso in bundle Quando disattivi l'ingresso in bundle rimuovendo il
    campo loadBalancer.vips.ingressVIPnel file di configurazione del cluster, un bug nel controllo preliminare di MetalLB causa l'errore
    "invalid user ingress vip: invalid IP" durante l'aggiornamento del cluster. Soluzione temporanea: Ignora il messaggio di errore.Salta il controllo preliminare utilizzando uno dei
    seguenti metodi:
 
    Aggiungi il flag --skip-validation-load-balanceral
    comandogkectl update cluster.Annota l'oggetto .onpremuserclustercononprem.cluster.gke.io/server-side-preflight-skip: skip-validation-load-balancer | 
  | VMware, upgrade | 1,16 | L'upgrade del cluster non riesce a causa della regola del gruppo anti-affinità mancante in vCenterDurante l'upgrade di un cluster, gli oggetti macchina potrebbero bloccarsi nella fase "Creazione" e non riuscire a collegarsi agli oggetti nodo a causa di una regola del gruppo anti-affinità (AAG) mancante in vCenter. Se descrivi gli oggetti macchina problematici, puoi visualizzare messaggi ricorrenti come "Riconfigurazione dell'attività della regola DRS "task-xxxx" completata".     kubectl --kubeconfig KUBECONFIG describe machine MACHINE_OBJECT_NAME
    Soluzione temporanea:  Disattiva l'impostazione del gruppo anti-affinità sia nella configurazione del cluster di amministrazione sia nella configurazione del cluster utente e attiva il comando di aggiornamento forzato per sbloccare l'upgrade del cluster:     gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG --force
        gkectl update cluster --config USER_CLUSTER_CONFIG_FILE --kubeconfig USER_CLUSTER_KUBECONFIG --force
     | 
  | Migrazione | 1.29, 1.30 | La migrazione di un cluster utente a Controlplane V2 non riesce se la crittografia dei secret è mai stata abilitata Quando esegui la migrazione di un cluster utente a Controlplane V2, se
     
    la crittografia dei secret sempre attiva è mai stata attivata, il processo di migrazione
    non gestisce correttamente la chiave di crittografia dei secret. A causa di questo
    problema, il nuovo cluster Controlplane V2 non è in grado di decriptare i secret. Se l'output del seguente comando non è vuoto, la crittografia dei secret sempre attiva è stata abilitata a un certo punto e il cluster è interessato da questo problema:     kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      get onpremusercluster USER_CLUSTER_NAME \
      -n USER_CLUSTER_NAME-gke-onprem-mgmt \
      -o jsonpath={.spec.secretsEncryption}
    Se hai già avviato la migrazione e non va a buon fine,
    contatta Google per ricevere assistenza. In caso contrario, prima della migrazione,
    
    disabilita la crittografia dei secret sempre attiva e decripta i secret.
     | 
  | Migrazione | 1.29.0-1.29.600, 1.30.0-1.30.100 | La migrazione di un cluster di amministrazione da non ad alta disponibilità ad alta disponibilità non riesce se la crittografia dei secret è attivata Se il cluster di amministrazione ha abilitato la crittografia dei secret sempre attiva alla versione 1.14 o precedente ed è stato eseguito l'upgrade da versioni precedenti alle versioni 1.29 e 1.30 interessate, durante la migrazione del cluster di amministrazione da non HA ad HA, il processo di migrazione non gestisce correttamente la chiave di crittografia dei secret. A causa di questo problema, il nuovo cluster di amministrazione HA non è in grado di decriptare i secret.  Per verificare se il cluster potrebbe utilizzare la vecchia chiave formattata:     kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret -n kube-system admin-master-component-options -o jsonpath='{.data.data}' | base64 -d | grep -oP '"GeneratedKeys":\[.*?\]'
    Se l'output mostra la chiave vuota come di seguito, è probabile che il cluster sia interessato da questo problema:     "GeneratedKeys":[{"KeyVersion":"1","Key":""}]
     Se hai già iniziato la migrazione e non va a buon fine, contatta Google per ricevere assistenza.  In caso contrario, prima di avviare la migrazione,
    ruota
    la chiave di crittografia. | 
  | Upgrade | 1.16, 1.28, 1.29, 1.30 | credential.yamlrigenerato in modo errato durante l'upgrade della workstation di amministrazione
Quando esegui l'upgrade della workstation di amministrazione utilizzando il comando gkeadm upgrade
       admin-workstation, il filecredential.yamlviene rigenerato in modo errato. I campi nome utente e password sono vuoti.
       Inoltre, la chiaveprivateRegistrycontiene un errore di battitura. Lo stesso errore ortografico del tasto privateRegistryè presente anche nel fileadmin-cluster.yaml.Poiché il file
 credential.yamlviene rigenerato durante la procedura di upgrade del cluster di amministrazione, l'errore di battitura è presente anche se è stato corretto in precedenza. Soluzione temporanea: 
    Aggiorna il nome della chiave del registro privato in credential.yamlin modo che
    corrisponda aprivateRegistry.credentials.fileRef.entryinadmin-cluster.yaml.Aggiorna il nome utente e la password del registro privato in
    credential.yaml. | 
  | Upgrade | 1.16+ | L'upgrade del cluster utente non riesce a causa del timeout di riconciliazione pre-upgradeQuando esegui l'upgrade di un cluster utente, l'operazione di riconciliazione pre-upgrade potrebbe
       richiedere più tempo del timeout definito, causando un errore di upgrade.
       Il messaggio di errore è simile al seguente: 
Failed to reconcile the user cluster before upgrade: the pre-upgrade reconcile failed, error message:
failed to wait for reconcile to complete: error: timed out waiting for the condition,
message: Cluster reconcile hasn't finished yet, please fix that before
rerun the upgrade.
  Il timeout per l'operazione di riconciliazione pre-upgrade è di 5 minuti più 1 minuto per ogni pool di nodi nel cluster utente. Soluzione temporanea: Assicurati che il comando
    gkectl diagnose clustervenga eseguito senza errori.Salta l'operazione di riconciliazione pre-upgrade aggiungendo il flag
 --skip-reconcile-before-preflightal comandogkectl upgrade cluster. Ad esempio: gkectl upgrade cluster --skip-reconcile-before-preflight --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config USER_CLUSTER_CONFIG_FILE | 
  | Aggiornamenti | 1.16, 1.28.0-1.28.800, 1.29.0-1.29.400, 1.30.0 | L'aggiornamento di DataplaneV2 ForwardMode non attiva automaticamente il riavvio di DaemonSet anetdQuando aggiorni il cluster utente
    dataplaneV2.forwardMode
    campo utilizzando gkectl update cluster, la modifica viene aggiornata solo
    in ConfigMap, il DaemonSetanetdnon rileva la modifica della configurazione fino al riavvio e le modifiche non vengono applicate. Soluzione temporanea: Al termine del comando gkectl update cluster, viene visualizzato
    l'output diDone updating the user cluster. Dopo aver visualizzato
    questo messaggio, esegui il comando seguente per riavviare il DaemonSetanetdper applicare la modifica alla configurazione: kubectl --kubeconfig USER_CLUSTER_KUBECONFIG rollout restart daemonset anetd Controlla la disponibilità di DaemonSet dopo il riavvio: kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get daemonset anetd Nell'output del comando precedente, verifica che il numero nella colonna DESIREDcorrisponda al numero nella colonnaREADY. | 
  | Upgrade | 1,16 | Comando etcdctl non trovato durante l'upgrade del cluster nella fase di backup del cluster di amministrazioneDurante l'upgrade di un cluster utente dalla versione 1.16 alla 1.28, viene eseguito il backup del cluster di amministrazione. Il processo di backup del cluster di amministrazione mostra il messaggio di errore
       "etcdctl: command not found". L'upgrade del cluster utente viene eseguito correttamente e il cluster di amministrazione rimane in uno stato integro. L'unico problema è che
       il file di metadati sul cluster di amministrazione non viene sottoposto a backup. Il problema è dovuto al fatto che il binario etcdctlè stato aggiunto nella versione 1.28 e non è disponibile sui nodi 1.16. Il backup del cluster di amministrazione prevede diversi passaggi, tra cui l'acquisizione di uno snapshot di etcd e la scrittura del file di metadati per il cluster di amministrazione.
       Il backup di etcd ha ancora esito positivo perché etcdctlpuò ancora essere
       attivato dopo l'esecuzione di un comando nel pod etcd. Tuttavia, la scrittura del file di metadati
       non riesce perché si basa ancora sul binarioetcdctlda installare sul nodo. Tuttavia, il backup del file di metadati non è un blocco
       per l'esecuzione di un backup, quindi il processo di backup ha esito positivo, così come
       l'upgrade del cluster utente. Soluzione temporanea: Se vuoi eseguire un backup del file di metadati, segui la procedura descritta in
       Backup
      e ripristino di un cluster di amministrazione con gkectl per attivare un backup separato
      del cluster di amministrazione utilizzando la versione di gkectlche corrisponde
      alla versione del cluster di amministrazione. | 
  | Installazione | 1.16-1.29 | Errore di creazione del cluster utente con bilanciamento del carico manualeQuando crei un cluster di utenti configurato per il bilanciamento del carico manuale, si verifica un errore gkectl check-configche indica che il valoreingressHTTPNodePortdeve essere almeno 30000, anche quando l'ingresso in bundle è disattivato. Questo problema si verifica indipendentemente dal fatto che i campi ingressHTTPNodePorteingressHTTPSNodePortsiano impostati o lasciati vuoti. Soluzione temporanea: Per risolvere questo problema, ignora il risultato restituito da
    gkectl check-config. Per disattivare il traffico in entrata in bundle, vedi
    Disattivare il traffico in entrata in bundle. | 
  
  | Aggiornamenti | 1.29.0 | Il problema con PodDisruptionBudget(PDB) si verifica quando
    si utilizzano cluster di amministrazione ad alta disponibilità (HA) e sono presenti 0 o 1 nodi del cluster di amministrazione
    senza un ruolo dopo la migrazione. Per verificare se sono presenti oggetti nodo senza un ruolo, esegui questo comando: kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes -o wide Se dopo la migrazione sono presenti due o più oggetti nodo senza un ruolo, il PDB non è configurato in modo errato. Sintomi: L'output di
      admin cluster diagnose include le seguenti informazioni 
Checking all poddisruptionbudgets...FAILURE
  Reason: 1 pod disruption budget error(s).
  Unhealthy Resources:
  PodDisruptionBudget metrics-server: gke-managed-metrics-server/metrics-server might be configured incorrectly: the total replicas(1) should be larger than spec.MinAvailable(1).
 Soluzione temporanea: Esegui questo comando per eliminare il PDB: kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG delete pdb metrics-server -n gke-managed-metrics-server | 
  | Installazione, upgrade e aggiornamenti | 1.28.0-1.28.600,1.29.0-1.29.100 | Il webhook di Autorizzazione binaria impedisce l'avvio del plug-in CNI, causando l'impossibilità di avviare uno dei nodepoolIn rare condizioni di competizione, una sequenza di installazione errata del webhook di Autorizzazione binaria e del pod gke-connect può causare l'interruzione della creazione del cluster utente a causa dell'impossibilità di un nodo di raggiungere lo stato pronto. Negli scenari interessati, la creazione del cluster utente potrebbe bloccarsi perché un nodo non riesce a raggiungere lo stato pronto. In questo caso, viene visualizzato il seguente messaggio: 
     Node pool is not ready: ready condition is not true: CreateOrUpdateNodePool: 2/3 replicas are ready
    Soluzione temporanea: 
       Rimuovi la configurazione di Autorizzazione binaria dal file di configurazione. Per istruzioni sulla configurazione, consulta la guida all'installazione di Autorizzazione binaria per GKE su VMware.
       Per sbloccare un nodo non integro durante il processo di creazione del cluster corrente, rimuovi temporaneamente la configurazione del webhook Autorizzazione binaria nel cluster utente utilizzando il seguente comando.
                kubectl --kubeconfig USER_KUBECONFIG delete ValidatingWebhookConfiguration binauthz-validating-webhook-configuration
        Una volta completato il processo di bootstrap, puoi aggiungere nuovamente la seguente configurazione del webhook.apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  name: binauthz-validating-webhook-configuration
webhooks:
- name: "binaryauthorization.googleapis.com"
  namespaceSelector:
    matchExpressions:
    - key: control-plane
      operator: DoesNotExist
  objectSelector:
    matchExpressions:
    - key: "image-policy.k8s.io/break-glass"
      operator: NotIn
      values: ["true"]
  rules:
  - apiGroups:
    - ""
    apiVersions:
    - v1
    operations:
    - CREATE
    - UPDATE
    resources:
    - pods
    - pods/ephemeralcontainers
  admissionReviewVersions:
  - "v1beta1"
  clientConfig:
    service:
      name: binauthz
      namespace: binauthz-system
      path: /binauthz
    # CA Bundle will be updated by the cert rotator.
    caBundle: Cg==
  timeoutSeconds: 10
  # Fail Open
  failurePolicy: "Ignore"
  sideEffects: None
         | 
  | Upgrade | 1.16, 1.28, 1.29 | L'upgrade del cluster utente CPV2 è bloccato a causa della macchina sottoposta a mirroring con deletionTimestampDurante l'upgrade di un cluster utente, l'operazione di upgrade potrebbe bloccarsi
    se l'oggetto macchina sottoposto a mirroring nel cluster utente contiene un
    deletionTimestamp. Se l'upgrade è bloccato, viene visualizzato il seguente messaggio di errore: 
    machine is still in the process of being drained and subsequently removed
    Questo problema può verificarsi se in precedenza hai tentato di riparare il nodo del piano di controllo utente eseguendo gkectl delete machinesulla macchina sottoposta a mirroring nel cluster utente. Soluzione temporanea: 
     Recupera l'oggetto macchina sottoposto a mirroring e salvalo in un file locale a scopo di backup.Esegui questo comando per eliminare il finalizzatore dalla macchina
    mirror e attendi che venga eliminato dal cluster utente.
        kubectl --kubeconfig ADMIN_KUBECONFIG patch machine/MACHINE_OBJECT_NAME -n USER_CLUSTER_NAME-gke-onprem-mgmt -p '{"metadata":{"finalizers":[]}}' --type=mergeSegui i passaggi descritti in 
    Nodo del control plane del cluster utente Controlplane V2 per attivare la riparazione dei nodi
    sui nodi del control plane, in modo che la specifica della macchina di origine corretta venga
    risincronizzata nel cluster utente.Esegui di nuovo gkectl upgrade clusterper riprendere l'upgrade | 
  
  | Configurazione, installazione | 1.15, 1.16, 1.28, 1.29 | Creazione del cluster non riuscita a causa del VIP del control plane in una subnet diversaPer il cluster di amministrazione HA o il cluster utente ControlPlane V2, il VIP del control plane
    deve trovarsi nella stessa subnet degli altri nodi del cluster. In caso contrario, la creazione del cluster non va a buon fine perché kubelet non può comunicare con il server API utilizzando il VIP del control plane. Soluzione temporanea: Prima della creazione del cluster, assicurati che il VIP del control plane sia configurato
    nella stessa subnet degli altri nodi del cluster. | 
  | Installazione, upgrade, aggiornamenti | 1.29.0 - 1.29.100 | Creazione/upgrade del cluster non riuscito a causa del nome utente vCenter non FQDNLa creazione/l'upgrade del cluster non riesce e viene visualizzato un errore nei pod CSI di vSphere che indica che il nome utente vCenter non è valido. Questo accade perché il nome utente utilizzato non è un nome di dominio completo. Messaggio di errore nel pod vsphere-csi-controller come di seguito: 
    GetCnsconfig failed with err: username is invalid, make sure it is a fully qualified domain username
    Questo problema si verifica solo nella versione 1.29 e successive, in quanto è stata aggiunta una convalida al driver CSI vSphere per imporre l'utilizzo di nomi utente di dominio completi. Soluzione temporanea: Utilizza un nome di dominio completo per il nome utente vCenter nel file di configurazione delle credenziali. Ad esempio, anziché utilizzare "username1", utilizza "username1@example.com". | 
  | Upgrade, aggiornamenti | 1.28.0 - 1.28.500 | L'upgrade del cluster di amministrazione non riesce per i cluster creati nelle versioni 1.10 o precedentiQuando esegui l'upgrade di un cluster di amministrazione dalla versione 1.16 alla 1.28, il bootstrap della
    nuova macchina master di amministrazione potrebbe non riuscire a generare il certificato del piano di controllo. Il problema è causato da modifiche al modo in cui vengono
    generati i certificati per il server API Kubernetes nella versione 1.28 e successive. Il problema si riproduce per i cluster creati nelle versioni 1.10 e precedenti che sono stati aggiornati fino alla versione 1.16 e il certificato foglia non è stato ruotato prima dell'upgrade. Per determinare se l'errore di upgrade del cluster di amministrazione è causato da questo
    problema, segui questi passaggi: 
    Connettiti alla macchina master amministratore non riuscita utilizzando SSH.Apri /var/log/startup.loge cerca un errore simile al seguente: 
Error adding extensions from section apiserver_ext
801B3213B57F0000:error:1100007B:X509 V3 routines:v2i_AUTHORITY_KEYID:unable to get issuer keyid:../crypto/x509/v3_akid.c:177:
801B3213B57F0000:error:11000080:X509 V3 routines:X509V3_EXT_nconf_int:error in extension:../crypto/x509/v3_conf.c:48:section=apiserver_ext, name=authorityKeyIdentifier, value=keyid>
    Soluzione temporanea: 
   Connettiti alla macchina master amministratore utilizzando SSH. Per maggiori dettagli, vedi
   Utilizzo di SSH per connettersi a
   un nodo del cluster di amministrazione.Crea una copia di /etc/startup/pki-yaml.she chiamala/etc/startup/pki-yaml-copy.shModifica /etc/startup/pki-yaml-copy.sh. TrovaauthorityKeyIdentifier=keyidsete modificalo inauthorityKeyIdentifier=keyid,issuernelle sezioni per
   le seguenti estensioni:apiserver_ext,client_ext,etcd_server_extekubelet_server_ext. Ad esempio:
      [ apiserver_ext ]
      keyUsage = critical, digitalSignature, keyEncipherment
      extendedKeyUsage=serverAuth
      basicConstraints = critical,CA:false
      authorityKeyIdentifier = keyid,issuer
      subjectAltName = @apiserver_alt_names
Salva le modifiche apportate a /etc/startup/pki-yaml-copy.sh.Utilizzando un editor di testo, apri /opt/bin/master.sh, trova e sostituisci tutte le occorrenze di/etc/startup/pki-yaml.shcon/etc/startup/pki-yaml-copy.sh, quindi salva le modifiche.Esegui /opt/bin/master.shper generare il certificato e
    completare l'avvio della macchina.Esegui di nuovo gkectl upgrade adminper eseguire l'upgrade del cluster di amministrazione.Al termine dell'upgrade, ruota il certificato foglia per i cluster di amministrazione e utente, come descritto in Avvia la rotazione.Al termine della rotazione del certificato, apporta le stesse modifiche a
    /etc/startup/pki-yaml-copy.shcome hai fatto in precedenza ed esegui/opt/bin/master.sh. | 
  
  | Configurazione | 1.29.0 | Messaggio di avviso errato per i cluster con Dataplane V2 abilitatoQuando esegui
    gkectlper creare, aggiornare o eseguire l'upgrade di un cluster in cui è già abilitato
    Dataplane V2, viene visualizzato il seguente messaggio di avviso errato: 
WARNING: Your user cluster is currently running our original architecture with
[DataPlaneV1(calico)]. To enable new and advanced features we strongly recommend
to update it to the newer architecture with [DataPlaneV2] once our migration
tool is available.
 Esiste un bug in gkectl che fa sì che questo avviso venga sempre visualizzato
    finché non viene utilizzato dataplaneV2.forwardMode, anche se
    hai già impostatoenableDataplaneV2: truenel file di configurazione del cluster. Soluzione temporanea: Puoi ignorare tranquillamente questo avviso. | 
  
  | Configurazione | 1.28.0-1.28.400, 1.29.0 | Il controllo preliminare dell'installazione del cluster di amministrazione HA segnala un numero errato di
    IP statici richiestiQuando crei un cluster di amministrazione HA, il controllo preliminare mostra il
    seguente messaggio di errore errato: 
- Validation Category: Network Configuration
    - [FAILURE] CIDR, VIP and static IP (availability and overlapping): needed
    at least X+1 IP addresses for admin cluster with X nodes
Il requisito non è corretto per i cluster di amministrazione HA 1.28 e versioni successive
    perché non hanno più nodi aggiuntivi. Inoltre, poiché gli indirizzi IP dei tre nodi del control plane del cluster di amministrazione sono specificati nella sezione network.controlPlaneIPBlockdel file di configurazione del cluster di amministrazione, gli IP nel file del blocco IP sono necessari solo per i nodi del control plane del cluster utente kubeception. Soluzione temporanea: Per ignorare il controllo preliminare errato in una release non corretta, aggiungi --skip-validation-net-configal comandogkectl. | 
  
  | Operazione | 1.29.0-1.29.100 | L'agente Connect perde la connessione a Google Cloud dopo la migrazione del cluster di amministrazione da non HA ad HASe hai eseguito la migrazione 
    da un cluster di amministrazione non HA a un cluster di amministrazione HA, Connect Agent
    nel cluster di amministrazione perde la connessione a
    gkeconnect.googleapis.comcon l'errore "Failed to verify JWT
    signature". Questo perché durante la migrazione la chiave di firma KSA viene
    modificata, pertanto è necessaria una nuova registrazione per aggiornare i JWK OIDC. Soluzione temporanea: Per riconnettere il cluster di amministrazione a Google Cloud, segui questi passaggi
    per attivare una nuova registrazione: Innanzitutto, recupera il nome del deployment gke-connect: kubectl --kubeconfig KUBECONFIG get deployment -n gke-connect Elimina il deployment gke-connect: kubectl --kubeconfig KUBECONFIG delete deployment GKE_CONNECT_DEPLOYMENT -n gke-connect Attiva una riconciliazione forzata per onprem-admin-cluster-controlleraggiungendo un'annotazione "force-reconcile" al tuo CRonpremadmincluster: kubectl --kubeconfig KUBECONFIG patch onpremadmincluster ADMIN_CLUSTER_NAME -n kube-system --type merge -p '
metadata:
  annotations:
    onprem.cluster.gke.io/force-reconcile: "true"
'L'idea è che onprem-admin-cluster-controllereseguirà
    sempre il redeploy del deploymentgke-connecte registrerà nuovamente
    il cluster se non trova alcun deploymentgke-connectesistente
    disponibile. Dopo la soluzione alternativa (potrebbero essere necessari alcuni minuti prima che il controller
    termini la riconciliazione), puoi verificare che l'errore 400 "Failed to
    verify JWT signature" non sia più presente nei log di gke-connect-agent: kubectl --kubeconfig KUBECONFIG logs GKE_CONNECT_POD_NAME -n gke-connect | 
  
  | Installazione, Sistema operativo | 1.28.0-1.28.500, 1.29.0 | L'IP bridge Docker utilizza 172.17.0.1/16 per i nodi del control plane del cluster COSGoogle Distributed Cloud specifica una subnet dedicata,
    --bip=169.254.123.1/24, per l'IP bridge Docker nella
    configurazione Docker per evitare di riservare la subnet172.17.0.1/16predefinita. Tuttavia, nelle versioni 1.28.0-1.28.500 e
    1.29.0, il servizio Docker non è stato riavviato dopo che Google Distributed Cloud
    ha personalizzato la configurazione Docker a causa di una regressione nell'immagine
    del sistema operativo COS. Di conseguenza, Docker sceglie172.17.0.1/16come
    subnet dell'indirizzo IP bridge. Ciò potrebbe causare un conflitto di indirizzi IP se hai già
    un carico di lavoro in esecuzione all'interno di questo intervallo di indirizzi IP. Soluzione temporanea: Per risolvere questo problema, devi riavviare il servizio Docker: sudo systemctl restart docker Verifica che Docker scelga l'indirizzo IP bridge corretto: ip a | grep docker0 Questa soluzione non viene mantenuta nelle ricreazioni di VM. Devi riapplicare
      questa soluzione alternativa ogni volta che le VM vengono ricreate. | 
  
  | update | 1.28.0-1.28.400, 1.29.0-1.29.100 | L'utilizzo di più interfacce di rete con CNI standard non funzionaI file binari CNI standard bridge, ipvlan, vlan, macvlan, dhcp, tuning,
    host-local, ptp, portmapnon sono inclusi nelle immagini del sistema operativo nelle versioni interessate. Questi binari CNI non vengono utilizzati da Dataplane V2, ma possono essere utilizzati
    per interfacce di rete aggiuntive nella funzionalità di più interfacce di rete. Più interfacce di rete con questi plug-in CNI non funzionano. Soluzione temporanea: Esegui l'upgrade alla versione con la correzione se utilizzi questa funzionalità. | 
  
  | update | 1.15, 1.16, 1.28 | Le dipendenze di Netapp Trident interferiscono con il driver CSI vSphereL'installazione di multipathdsui nodi del cluster interferisce con il driver CSI vSphere, impedendo l'avvio dei workload utente. Soluzione temporanea: | 
  
  | Aggiornamenti | 1.15, 1.16 | Il webhook del cluster di amministrazione potrebbe bloccare gli aggiornamentiSe alcune configurazioni richieste sono vuote nel cluster di amministrazione
    perché le convalide sono state ignorate, la loro aggiunta potrebbe essere bloccata dall'webhook del cluster di amministrazione. Ad esempio, se il campo gkeConnectnon è stato
    impostato in un cluster di amministrazione esistente, l'aggiunta con il
    comandogkectl update adminpotrebbe generare il seguente
    messaggio di errore: 
admission webhook "vonpremadmincluster.onprem.cluster.gke.io" denied the request: connect: Required value: GKE connect is required for user clusters
Occasionalmente, potrebbe verificarsi un problema di comunicazione tra il
   server API Kubernetes e il webhook. In questo caso, potresti visualizzare il seguente messaggio di errore: 
failed to apply OnPremAdminCluster 'kube-system/gke-admin-btncc': Internal error occurred: failed calling webhook "monpremadmincluster.onprem.cluster.gke.io": failed to call webhook: Post "https://onprem-admin-cluster-controller.kube-system.svc:443/mutate-onprem-cluster-gke-io-v1alpha1-onpremadmincluster?timeout=10s": dial tcp 10.96.55.208:443: connect: connection refused
 Soluzione temporanea:Se riscontri uno di questi errori, utilizza una delle seguenti soluzioni alternative, a seconda della tua versione: 
      
        Per i cluster di amministrazione 1.15, esegui il comando gkectl update admincon il flag--disable-admin-cluster-webhook. Ad esempio:        gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG --disable-admin-cluster-webhook
        
        Per i cluster di amministrazione 1.16, esegui i comandi gkectl update admincon il flag--force. Ad esempio:        gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG --force
         | 
  
  
    | Configurazione | 1.15.0-1.15.10, 1.16.0-1.16.6, 1.28.0-1.28.200 | Il campo controlPlaneNodePortha come valore predefinito 30968 quando
          la specificamanualLBè vuotaSe utilizzi un bilanciatore del carico manuale
         (loadBalancer.kindè impostato su"ManualLB"),
         non devi configurare la sezioneloadBalancer.manualLBnel file di configurazione per un cluster di amministrazione ad alta disponibilità (HA)
         nelle versioni 1.16 e successive. Tuttavia, quando questa sezione è vuota,
         Google Distributed Cloud assegna valori predefiniti a tutti i NodePort, inclusomanualLB.controlPlaneNodePort, il che causa l'esito negativo della creazione del cluster
        con il seguente messaggio di errore: - Validation Category: Manual LB
  - [FAILURE] NodePort configuration: manualLB.controlPlaneNodePort must
   not be set when using HA admin cluster, got: 30968 Soluzione temporanea: Specifica manualLB.controlPlaneNodePort: 0nella configurazione del cluster di amministrazione
      per il cluster di amministrazione ad alta disponibilità: loadBalancer:
  ...
  kind: ManualLB
  manualLB:
    controlPlaneNodePort: 0
  ... | 
  
  
    | Archiviazione | 1.28.0-1.28.100 | nfs-common non è presente nell'immagine del sistema operativo UbuntuSe il log contiene una voce simile alla seguente dopo l'upgrade alla versione 1.28, il problema ti riguarda:nfs-commonnon è presente nell'immagine del sistema operativo Ubuntu, il che potrebbe causare
      problemi per i clienti che utilizzano driver dipendenti da NFS come NetApp.
 Warning FailedMount 63s (x8 over 2m28s) kubelet MountVolume.SetUp failed for volume "pvc-xxx-yyy-zzz" : rpc error: code = Internal desc = error mounting NFS volume 10.0.0.2:/trident_pvc_xxx-yyy-zzz on mountpoint /var/lib/kubelet/pods/aaa-bbb-ccc/volumes/kubernetes.io~csi/pvc-xxx-yyy-zzz/mount: exit status 32".
      Soluzione temporanea: Assicurati che i nodi possano scaricare pacchetti da Canonical. Dopodiché, applica il seguente DaemonSet al tuo cluster per installare nfs-common: apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: install-nfs-common
  labels:
    name: install-nfs-common
  namespace: kube-system
spec:
  selector:
    matchLabels:
      name: install-nfs-common
  minReadySeconds: 0
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 100%
  template:
    metadata:
      labels:
        name: install-nfs-common
    spec:
      hostPID: true
      hostIPC: true
      hostNetwork: true
      initContainers:
      - name: install-nfs-common
        image: ubuntu
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        command:
        - chroot
        - /host
        - bash
        - -c
        args:
        - |
          apt install -y nfs-common
        volumeMounts:
        - name: host
          mountPath: /host
      containers:
      - name: pause
        image: gcr.io/gke-on-prem-release/pause-amd64:3.1-gke.5
        imagePullPolicy: IfNotPresent
      volumes:
      - name: host
        hostPath:
          path: /
       | 
  
  
    | Archiviazione | 1.28.0-1.28.100 | Il campo dei criteri di archiviazione non è presente nel modello di configurazione del cluster di amministrazioneSPBM nei cluster di amministrazione è supportato nelle versioni 1.28.0 e successive. Tuttavia, il campo
      vCenter.storagePolicyNamenon è presente nel modello di file di configurazione. Soluzione temporanea: Aggiungi il campo `vCenter.storagePolicyName` nel file di configurazione del cluster di amministrazione se
      vuoi configurare il criterio di archiviazione per il cluster di amministrazione. Fai riferimento alle istruzioni. | 
  
  
    | Logging e monitoraggio | 1.28.0-1.28.100 | L'API kubernetesmetadata.googleapis.com aggiunta di recente non supporta VPC-SC.
      Di conseguenza, l'agente di raccolta dei metadati non riuscirà a raggiungere questa API in VPC-SC. Successivamente, le etichette dei metadati delle metriche non saranno presenti.  Soluzione temporanea: Imposta nel CR "stackdriver" dello spazio dei nomi "kube-system" il campo "featureGates.disableExperimentalMetadataAgent" su "true" eseguendo il comando   `kubectl -n kube-system patch stackdriver stackdriver -p '{"spec":{"featureGates":{"disableExperimentalMetadataAgent":true}}}'`   poi esegui   `kubectl -n kube-system patch deployment stackdriver-operator -p '{"spec":{"template":{"spec":{"containers":[{"name":"stackdriver-operator","env":[{"name":"ENABLE_LEGACY_METADATA_AGENT","value":"true"}]}]}}}}'`  | 
  
  | Upgrade, aggiornamenti | 1.15.0-1.15.7, 1.16.0-1.16.4, 1.28.0 | Il controller clusterapi potrebbe arrestarsi in modo anomalo quando il cluster di amministrazione e qualsiasi cluster utente con ControlPlane V2 abilitato utilizzano credenziali vSphere diverseQuando un cluster di amministrazione e qualsiasi cluster utente con ControlPlane V2 abilitato utilizzano
    credenziali vSphere diverse, ad esempio dopo l'aggiornamento delle credenziali vSphere per il
    cluster di amministrazione, clusterapi-controller potrebbe non riuscire a connettersi a vCenter dopo il riavvio. Visualizza il log di clusterapi-controller in esecuzione nello spazio dei nomi `kube-system` del cluster di amministrazione. kubectl logs -f -l component=clusterapi-controllers -c vsphere-controller-manager \
    -n kube-system --kubeconfig KUBECONFIGSe il log contiene una voce come la seguente, il problema ti riguarda:E1214 00:02:54.095668       1 machine_controller.go:165] Error checking existence of machine instance for machine object gke-admin-node-77f48c4f7f-s8wj2: Failed to check if machine gke-admin-node-77f48c4f7f-s8wj2 exists: failed to find datacenter "VSPHERE_DATACENTER": datacenter 'VSPHERE_DATACENTER' not found Soluzione temporanea: Aggiorna le credenziali vSphere in modo che il cluster di amministrazione e tutti i cluster utente con Controlplane V2 abilitato utilizzino le stesse credenziali vSphere.  | 
  
  
    | Logging e monitoraggio | 1,14 | Numero elevato di richieste GRPC non riuscite di etcd in Prometheus Alert ManagerPrometheus potrebbe segnalare avvisi simili al seguente esempio: Alert Name: cluster:gke-admin-test1: Etcd cluster kube-system/kube-etcd: 100% of requests for Watch failed on etcd instance etcd-test-xx-n001. Per verificare se questo avviso è un falso positivo che può essere ignorato,
      completa i seguenti passaggi: 
        Controlla la metrica grpc_server_handled_totalnon elaborata rispetto
        agrpc_methodindicato nel messaggio di avviso. In questo
        esempio, controlla l'etichettagrpc_codeperWatch.
 Puoi controllare questa metrica utilizzando Cloud Monitoring con la seguente
        query MQL:
 fetch
    k8s_container | metric 'kubernetes.io/anthos/grpc_server_handled_total' | align rate(1m) | every 1mUn avviso su tutti i codici diversi da OKpuò essere tranquillamente
        ignorato se il codice non è uno dei seguenti:Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded 
 Soluzione temporanea: Per configurare Prometheus in modo che ignori questi avvisi di falsi positivi, esamina
      le seguenti opzioni: 
        Silenzia l'avviso
        dall'interfaccia utente di Alert Manager.Se la disattivazione dell'avviso non è un'opzione, esamina i seguenti passaggi
        per eliminare i falsi positivi:
        
          Ridimensiona l'operatore di monitoraggio a 0repliche in modo
          che le modifiche possano essere mantenute.Modifica il configmap prometheus-confige aggiungigrpc_method!="Watch"alla
          configurazione degli avvisietcdHighNumberOfFailedGRPCRequestscome mostrato
          nell'esempio seguente:
              Originale:
rate(grpc_server_handled_total{cluster="CLUSTER_NAME",grpc_code!="OK",job=~".*etcd.*"}[5m])Modificato:
rate(grpc_server_handled_total{cluster="CLUSTER_NAME",grpc_code=~"Unknown|FailedPrecondition|ResourceExhausted|Internal|Unavailable|DataLoss|DeadlineExceeded",grpc_method!="Watch",job=~".*etcd.*"}[5m])Sostituisci il seguenteCLUSTER_NAMEcon
          il nome del tuo cluster.Riavvia StatefulSet di Prometheus e Alertmanager per applicare la
          nuova configurazione.Se il codice rientra in uno dei casi problematici, controlla il log etcd
        e il log kube-apiserverper eseguire il debug. | 
  
  
    | Networking | 1.16.0-1.16.2, 1.28.0 | Le connessioni a lunga durata NAT in uscita vengono interrotteLe connessioni NAT in uscita potrebbero essere interrotte dopo 5-10 minuti
      dall'instaurazione di una connessione se non c'è traffico. Poiché conntrack è importante solo nella direzione in entrata (connessioni
      esterne al cluster), questo problema si verifica solo se la connessione
      non trasmette informazioni per un po' di tempo e poi la parte di destinazione
      trasmette qualcosa. Se il pod con NAT in uscita crea sempre la
      messaggistica, questo problema non si verifica. Questo problema si verifica perché la garbage collection di anetd
      rimuove inavvertitamente le voci conntrack che il daemon ritiene inutilizzate.
      Una correzione upstream
      è stata recentemente integrata in anetd per correggere il comportamento. 
 Soluzione temporanea: Non esiste una soluzione semplice e non abbiamo riscontrato problemi nella versione 1.16
      derivanti da questo comportamento. Se noti connessioni di lunga durata interrotte a causa di questo problema, le soluzioni alternative consistono nell'utilizzare un carico di lavoro sullo stesso nodo dell'indirizzo IP di uscita o nell'inviare costantemente messaggi sulla connessione TCP. | 
  
  
    | Operazione | 1.14, 1.15, 1.16 | Il firmatario della CSR ignora spec.expirationSecondsdurante la firma dei certificatiSe crei una richiesta di firma del certificato (CSR) con
       expirationSecondsimpostato,expirationSecondsviene ignorato. Soluzione temporanea: Se riscontri questo problema, puoi aggiornare il cluster utente
    aggiungendo disableNodeIDVerificationCSRSigning: truenel file di configurazione
    del cluster utente ed eseguire il comandogkectl update clusterper aggiornare il cluster con questa configurazione. | 
  
  
    | Networking, upgrade, aggiornamenti | 1.16.0-1.16.3 | La convalida del bilanciatore del carico del cluster utente non riesce per
        disable_bundled_ingressSe provi a
      disattivare l'ingresso in bundle per un cluster esistente, il comando gkectl update clusternon va a buon fine e viene visualizzato un errore
      simile al seguente esempio: 
[FAILURE] Config: ingress IP is required in user cluster spec
 Questo errore si verifica perché gkectlcontrolla un indirizzo IP in entrata del bilanciamento del carico durante i controlli preliminari. Sebbene questo controllo
      non sia obbligatorio quando si disattiva l'ingresso in bundle, il controllo preflightgkectlnon riesce quandodisableBundledIngressè impostato sutrue. 
 Soluzione temporanea: Utilizza il parametro --skip-validation-load-balancerquando
      aggiorni il cluster, come mostrato nell'esempio seguente: gkectl update cluster \
  --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG  \
  --skip-validation-load-balancer Per ulteriori informazioni, scopri come
      disattivare l'ingresso in bundle per un cluster esistente. | 
  
  
    | Upgrade, aggiornamenti | 1.13, 1.14, 1.15.0-1.15.6 | Gli aggiornamenti del cluster di amministrazione non riescono dopo la rotazione delle CASe ruoti i certificati dell'autorità di certificazione (CA) del cluster di amministrazione,
    i tentativi successivi di eseguire il comando gkectl update adminnon vanno a buon fine.
    L'errore restituito è simile al seguente: 
failed to get last CARotationStage: configmaps "ca-rotation-stage" not found
 
 Soluzione temporanea: Se riscontri questo problema, puoi aggiornare il cluster di amministrazione
    utilizzando il flag --disable-update-from-checkpointcon il
    comandogkectl update admin: gkectl update admin --config ADMIN_CONFIG_file \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --disable-update-from-checkpointQuando utilizzi il flag --disable-update-from-checkpoint, il
    comando di aggiornamento non utilizza il file checkpoint come origine di riferimento durante l'aggiornamento del cluster. Il file del checkpoint viene comunque aggiornato per un uso futuro. | 
  
  
    | Archiviazione | 1.15.0-1.15.6, 1.16.0-1.16.2 | Il controllo preflight del workload CSI non riesce a causa dell'errore di avvio del podDurante i controlli preflight, il controllo di convalida del carico di lavoro CSI installa un
      pod nello spazio dei nomi default. Il pod del carico di lavoro CSI verifica
      che il driver CSI vSphere sia installato e possa eseguire il provisioning dinamico del volume. Se questo pod non viene avviato, il controllo di convalida del workload CSI
      non va a buon fine. 
      Esistono alcuni problemi noti che possono impedire l'avvio di questo pod:
       
      Se il pod non ha limiti di risorse specificati, come nel caso
      di alcuni cluster con webhook di ammissione installati, il pod non viene avviato.Se Cloud Service Mesh è installato nel cluster con l'inserimento automatico di sidecar Istio abilitato nello spazio dei nomi default, il pod del carico di lavoro CSI non viene avviato. Se il pod del workload CSI non viene avviato, viene visualizzato un errore di timeout simile al
      seguente durante le convalide preliminari: - [FAILURE] CSI Workload: failure in CSIWorkload validation: failed to create writer Job to verify the write functionality using CSI: Job default/anthos-csi-workload-writer-<run-id> replicas are not in Succeeded phase: timed out waiting for the condition Per verificare se l'errore è causato dalla mancanza di risorse pod impostate, esegui il comando
      seguente per controllare lo stato del job anthos-csi-workload-writer-<run-id>: kubectl describe job anthos-csi-workload-writer-<run-id> Se i limiti delle risorse non sono impostati correttamente per il pod del workload CSI,
      lo stato del job contiene un messaggio di errore simile al seguente: CPU and memory resource limits is invalid, as it are not defined for container: volume-tester Se il pod del carico di lavoro CSI non viene avviato a causa dell'inserimento del sidecar Istio,
      puoi disattivare temporaneamente l'inserimento automatico del sidecar Istio nello
      spazio dei nomi default. Controlla le etichette dello spazio dei nomi e utilizza
      il seguente comando per eliminare l'etichetta che inizia conistio.io/rev: kubectl label namespace default istio.io/rev- Se il pod è configurato in modo errato, verifica manualmente che il provisioning
      dinamico del volume con il driver CSI vSphere funzioni: 
      Crea un PVC che utilizzi la classe di archiviazione standard-rwo.Crea un pod che utilizza il PVC.Verifica che il pod possa leggere/scrivere dati nel volume.Rimuovi il pod e il PVC dopo aver verificato il corretto funzionamento. Se il provisioning dinamico del volume con il driver CSI vSphere funziona, esegui
      gkectl diagnoseogkectl upgradecon il flag--skip-validation-csi-workloadper ignorare il controllo del workload CSI. | 
    
  
    | Operazione | 1.16.0-1.16.2 | Timeout dell'aggiornamento del cluster utente quando la versione del cluster di amministrazione è 1.15Quando accedi a una 
      workstation di amministrazione gestita dall'utente, il comando gkectl update clusterpotrebbe scadere e non riuscire ad aggiornare il cluster utente. Ciò si verifica se
      la versione del cluster di amministrazione è 1.15 ed eseguigkectl update adminprima di eseguiregkectl update cluster.
      Quando si verifica questo errore, viene visualizzato il seguente messaggio quando provi ad aggiornare il cluster: 
      Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
      Durante l'aggiornamento di un cluster di amministrazione 1.15, il validation-controllerche attiva i controlli preflight viene rimosso dal cluster. Se poi provi ad aggiornare il cluster utente, il controllo preflight si blocca fino al raggiungimento del timeout. Soluzione temporanea: 
      Esegui questo comando per eseguire nuovamente il deployment di validation-controller:
      gkectl prepare --kubeconfig ADMIN_KUBECONFIG --bundle-path BUNDLE_PATH --upgrade-platform
      
      Al termine della preparazione, esegui di nuovo gkectl update clusterper aggiornare il cluster utente. | 
  
  
    | Operazione | 1.16.0-1.16.2 | Timeout di creazione del cluster utente quando la versione del cluster di amministrazione è 1.15Quando accedi a una 
      workstation amministrativa gestita dall'utente, il comando gkectl create clusterpotrebbe scadere e non riuscire a creare il cluster utente. Ciò accade se
      la versione del cluster di amministrazione è 1.15.
      Quando si verifica questo errore, viene visualizzato il seguente messaggio quando provi a creare il cluster: 
      Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
Preflight check failed with failed to run server-side preflight checks: server-side preflight checks failed: timed out waiting for the condition
      Poiché validation-controllerè stato aggiunto nella versione 1.16, quando si utilizza
      il cluster di amministrazione 1.15, mancavalidation-controller, responsabile dell'attivazione dei controlli preflight. Pertanto, quando si tenta di creare il cluster utente, i controlli preflight
      rimangono in attesa fino al raggiungimento del timeout. Soluzione temporanea: 
      Esegui questo comando per eseguire il deployment di validation-controller:
      gkectl prepare --kubeconfig ADMIN_KUBECONFIG --bundle-path BUNDLE_PATH --upgrade-platform
      
      Al termine della preparazione, esegui di nuovo gkectl create clusterper creare il cluster utente. | 
  
  
    | Upgrade, aggiornamenti | 1.16.0-1.16.2 | L'aggiornamento o l'upgrade del cluster di amministrazione non riesce se i progetti o le località dei
      servizi aggiuntivi non corrispondono tra loroQuando esegui l'upgrade di un cluster di amministrazione dalla versione 1.15.x alla 1.16.x o
      aggiungi una configurazione connect,stackdriver,cloudAuditLoggingogkeOnPremAPIquando aggiorni un cluster di amministrazione, l'operazione potrebbe essere rifiutata dal webhook del cluster di amministrazione. Potrebbe essere visualizzato uno dei seguenti messaggi di errore: 
        "projects for connect, stackdriver and cloudAuditLogging must be the
        same when specified during cluster creation.""locations for connect, gkeOnPremAPI, stackdriver and
        cloudAuditLogging must be in the same region when specified during
        cluster creation.""locations for stackdriver and cloudAuditLogging must be the same
        when specified during cluster creation." Un aggiornamento o un upgrade del cluster di amministrazione richiede a onprem-admin-cluster-controllerdi riconciliare il cluster di amministrazione in un cluster kind. Quando lo stato del cluster di amministrazione viene ripristinato nel cluster kind, il webhook del cluster di amministrazione non può distinguere se l'oggettoOnPremAdminClusterè per la creazione di un cluster di amministrazione o per riprendere le operazioni per un aggiornamento o un upgrade. Alcune convalide di sola creazione
      vengono richiamate durante l'aggiornamento e l'upgrade in modo imprevisto. 
 Soluzione temporanea: Aggiungi l'annotazione
      onprem.cluster.gke.io/skip-project-location-sameness-validation: trueall'oggettoOnPremAdminCluster: 
        Modifica la risorsa cluster onpremadminclusters:kubectl edit onpremadminclusters ADMIN_CLUSTER_NAME -n kube-system –kubeconfig ADMIN_CLUSTER_KUBECONFIGSostituisci quanto segue: 
            ADMIN_CLUSTER_NAME: il nome del cluster di amministrazione.ADMIN_CLUSTER_KUBECONFIG: il percorso
            del file kubeconfig del cluster di amministrazione.Aggiungi l'annotazione
        onprem.cluster.gke.io/skip-project-location-sameness-validation: truee salva la risorsa personalizzata.A seconda del tipo di cluster di amministrazione, completa uno dei
        seguenti passaggi:
          
            Per i cluster di amministrazione non HA con un file checkpoint, aggiungi il
            parametro disable-update-from-checkpointnel
            comando di aggiornamento oppure aggiungi il parametro
            `disable-upgrade-from-checkpoint` nel comando di upgrade. Questi
            parametri sono necessari solo per la prossima volta che esegui il
            comandoupdateoupgrade:
              
gkectl update admin --config ADMIN_CONFIG_file --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
  --disable-update-from-checkpoint
gkectl upgrade admin --config ADMIN_CONFIG_file --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
  --disable-upgrade-from-checkpointPer i cluster di amministrazione HA o il file checkpoint è disattivato:
            aggiorna o esegui l'upgrade del cluster di amministrazione normalmente. Non sono necessari parametri aggiuntivi
            nei comandi di aggiornamento. | 
  
  
    | Operazione | 1.16.0-1.16.2 | L'eliminazione del cluster utente non riesce quando si utilizza una workstation di amministrazione gestita dall'utenteQuando accedi a una 
      workstation amministrativa gestita dall'utente, il comando gkectl delete clusterpotrebbe scadere e non riuscire a eliminare il cluster utente. Ciò accade se
      hai eseguito primagkectlsulla workstation gestita dall'utente per
      creare, aggiornare o eseguire l'upgrade del cluster utente. Quando si verifica questo errore,
      viene visualizzato il seguente messaggio quando provi a eliminare il cluster: 
      failed to wait for user cluster management namespace "USER_CLUSTER_NAME-gke-onprem-mgmt"
      to be deleted: timed out waiting for the condition
      Durante l'eliminazione, un cluster elimina prima tutti i relativi oggetti. L'eliminazione degli oggetti di convalida (creati durante la creazione, l'aggiornamento o l'upgrade) è bloccata nella fase di eliminazione. Ciò accade
      perché un finalizer blocca l'eliminazione dell'oggetto, il che causa
      l'esito negativo dell'eliminazione del cluster.
       Soluzione temporanea: 
      Ottieni i nomi di tutti gli oggetti Validation:
        
         kubectl  --kubeconfig ADMIN_KUBECONFIG get validations \
           -n USER_CLUSTER_NAME-gke-onprem-mgmt
        
      Per ogni oggetto Validation, esegui questo comando per rimuovere il finalizer dall'oggetto Validation:
      
      kubectl --kubeconfig ADMIN_KUBECONFIG patch validation/VALIDATION_OBJECT_NAME \
        -n USER_CLUSTER_NAME-gke-onprem-mgmt -p '{"metadata":{"finalizers":[]}}' --type=merge
      
      Dopo aver rimosso il finalizer da tutti gli oggetti di convalida, gli oggetti
      vengono rimossi e l'operazione di eliminazione del cluster utente viene completata
      automaticamente. Non devi intraprendere ulteriori azioni.
       | 
  
  
    | Networking | 1.15, 1.16 | Il traffico del gateway NAT in uscita verso il server esterno non va a buon fineSe il pod di origine e il pod del gateway NAT in uscita si trovano su due nodi worker diversi, il traffico dal pod di origine non può raggiungere alcun servizio esterno. Se i pod si trovano sullo stesso host, la connessione al
      servizio o all'applicazione esterni viene stabilita. Questo problema è causato da vSphere che elimina i pacchetti VXLAN quando l'aggregazione
      dei tunnel è abilitata. Esiste un problema noto con NSX e VMware che
      invia solo traffico aggregato sulle porte VXLAN note (4789). 
 Soluzione temporanea: Modifica la porta VXLAN utilizzata da Cilium in 4789: 
        Modifica il ConfigMap cilium-config:kubectl edit cm -n kube-system cilium-config --kubeconfig USER_CLUSTER_KUBECONFIGAggiungi quanto segue a ConfigMap cilium-config:tunnel-port: 4789Riavvia il DaemonSet anetd:
kubectl rollout restart ds anetd -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIG Questa soluzione alternativa viene ripristinata ogni volta che viene eseguito l'upgrade del cluster. Devi
    riconfigurare dopo ogni upgrade. VMware deve risolvere il problema in vSphere
    per una correzione permanente. | 
  
  
    | Upgrade | 1.15.0-1.15.4 | L'upgrade di un cluster di amministrazione con la crittografia dei secret sempre attiva abilitata non va a buon fineL'upgrade del cluster di amministrazione dalla versione 1.14.x alla 1.15.x con
         crittografia dei secret sempre attiva abilitata non riesce a causa di una mancata corrispondenza tra la
        chiave di crittografia generata dal controller e la chiave che persiste sul
        disco di dati master di amministrazione. L'output di gkectl upgrade
        admincontiene il seguente messaggio di errore: 
      E0926 14:42:21.796444   40110 console.go:93] Exit with error:
      E0926 14:42:21.796491   40110 console.go:93] Failed to upgrade the admin cluster: failed to create admin cluster: failed to wait for OnPremAdminCluster "admin-cluster-name" to become ready: failed to wait for OnPremAdminCluster "admin-cluster-name" to be ready: error: timed out waiting for the condition, message: failed to wait for OnPremAdminCluster "admin-cluster-name" to stay in ready status for duration "2m0s": OnPremAdminCluster "non-prod-admin" is not ready: ready condition is not true: CreateOrUpdateControlPlane: Creating or updating credentials for cluster control plane
      L'esecuzione di kubectl get secrets -A --kubeconfig KUBECONFIG`non riesce e viene visualizzato il seguente errore: 
      Internal error occurred: unable to transform key "/registry/secrets/anthos-identity-service/ais-secret": rpc error: code = Internal desc = failed to decrypt: unknown jwk
      Soluzione alternativaSe hai un backup del cluster di amministrazione, segui questi passaggi per
         risolvere il problema dell'upgrade non riuscito: 
        
          
          Disattiva secretsEncryptionnel file di configurazione del cluster di amministrazione e aggiorna il cluster utilizzando il seguente comando:gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig KUBECONFIG
        Quando viene creata la nuova VM master amministratore, esegui SSH nella VM master amministratore,
        sostituisci la nuova chiave sul disco di dati con quella precedente dal
        backup. La chiave si trova in /opt/data/gke-k8s-kms-plugin/generatedkeyssull'amministratore principale.
        Aggiorna il file manifest del pod statico kms-plugin.yaml in /etc/kubernetes/manifestsper aggiornare--kek-idin modo che corrisponda al campokidnella chiave di crittografia originale.
        Riavvia il pod statico kms-plugin spostando
        /etc/kubernetes/manifests/kms-plugin.yamlin un'altra
        directory e poi riportandolo indietro.
        Riprendi l'upgrade dell'amministratore eseguendo di nuovo gkectl upgrade admin. Prevenzione dell'errore di upgradeSe non hai ancora eseguito l'upgrade, ti consigliamo di non eseguire l'upgrade
         alla versione 1.15.0-1.15.4. Se devi eseguire l'upgrade a una versione interessata, segui
         i passaggi riportati di seguito prima di eseguire l'upgrade del cluster di amministrazione:
       
        
          
          Esegui il backup del cluster di amministrazione.
        
          
          Disattiva secretsEncryptionnel file di configurazione del cluster di amministrazione e aggiorna il cluster utilizzando il seguente comando:gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig KUBECONFIGEsegui l'upgrade del cluster di amministrazione.
            Riabilita la crittografia dei secret sempre attiva. | 
  
  
    | Archiviazione | 1.11-1.16 | Errori del disco e mancato collegamento durante l'utilizzo di Change Block Tracking (CBT)Google Distributed Cloud non supporta il monitoraggio dei blocchi modificati (CBT) sui
      dischi. Alcuni software di backup utilizzano la funzionalità CBT per monitorare lo stato del disco ed eseguire backup, il che impedisce al disco di connettersi a una VM che esegue Google Distributed Cloud. Per ulteriori informazioni, consulta l'articolo della Knowledge Base di VMware. 
 Soluzione temporanea: Non eseguire il backup delle VM Google Distributed Cloud, in quanto il software di backup di terze parti
      potrebbe causare l'attivazione di CBT sui dischi. Non è necessario eseguire il backup di queste VM. Non attivare CBT sul nodo, perché questa modifica non verrà mantenuta
      durante gli aggiornamenti. Se disponi già di dischi con CBT abilitato, segui i passaggi della
      soluzione nell'
      articolo della Knowledge Base di VMware per disattivare CBT sul disco First Class. | 
  
  
    | Archiviazione | 1.14, 1.15, 1.16 | Corruzione dei dati su NFSv3 quando gli accodamenti paralleli a un file condiviso vengono
      eseguiti da più hostSe utilizzi array di archiviazione Nutanix per fornire condivisioni NFSv3 agli host, potresti riscontrare un danneggiamento dei dati o l'impossibilità di eseguire i pod correttamente. Questo problema è causato da un problema di compatibilità noto
      tra alcune versioni di VMware e Nutanix. Per ulteriori
      informazioni, consulta l'articolo
      della knowledge base di VMware. 
 Soluzione temporanea: L'articolo della Knowledge Base di VMware non è aggiornato e indica che non esiste
      una soluzione attuale. Per risolvere il problema, esegui l'aggiornamento all'ultima versione
      di ESXi sugli host e all'ultima versione di Nutanix sugli array di
      archiviazione. | 
  | Sistema operativo | 1.13.10, 1.14.6, 1.15.3 | Mancata corrispondenza della versione tra kubelet e il control plane KubernetesPer alcune release di Google Distributed Cloud, il kubelet in esecuzione sui nodi utilizza una versione diversa da quella del piano di controllo Kubernetes. Si verifica una
    mancata corrispondenza perché il binario kubelet precaricato sull'immagine del sistema operativo utilizza una
    versione diversa.
     La tabella seguente elenca le mancate corrispondenze delle versioni identificate: 
      
        | Versione di Google Distributed Cloud | Versione kubelet | Versione di Kubernetes |  
        | 1.13.10 | v1.24.11-gke.1200 | v1.24.14-gke.2100 |  
        | 1.14.6 | v1.25.8-gke.1500 | v1.25.10-gke.1200 |  
        | 1.15.3 | v1.26.2-gke.1001 | v1.26.5-gke.2100 |  Soluzione temporanea: Non è richiesto alcun intervento. L'incoerenza riguarda solo le versioni patch di Kubernetes e non sono stati causati problemi da questa discrepanza di versione.
      | 
  | Upgrade, aggiornamenti | 1.15.0-1.15.4 | L'upgrade o l'aggiornamento di un cluster di amministrazione con una versione della CA superiore a 1 non riesceQuando un cluster di amministrazione ha una versione dell'autorità di certificazione (CA) maggiore
    di 1, un aggiornamento o un upgrade non riesce a causa della convalida della versione della CA nel
    webhook. L'output dell'aggiornamento di
    gkectlcontiene il seguente messaggio di errore:     CAVersion must start from 1
    Soluzione temporanea: 
      
        Ridimensiona il deployment auto-resize-controllernel
        cluster di amministrazione per disattivare il ridimensionamento automatico dei nodi. Ciò è necessario
        perché un nuovo campo introdotto nella risorsa personalizzata del cluster di amministrazione nella versione
        1.15 può causare un errore di puntatore nullo inauto-resize-controller. kubectl scale deployment auto-resize-controller -n kube-system --replicas=0 --kubeconfig KUBECONFIG
      
        Esegui i comandi gkectlcon il flag--disable-admin-cluster-webhook.Ad esempio:        gkectl upgrade admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig KUBECONFIG --disable-admin-cluster-webhook
         | 
  | Operazione | 1.13, 1.14.0-1.14.8, 1.15.0-1.15.4, 1.16.0-1.16.1 | Eliminazione del cluster Controlplane V2 non HA bloccata fino al timeoutQuando un cluster Controlplane V2 non HA viene eliminato, rimane bloccato all'eliminazione del nodo fino al timeout. Soluzione temporanea: Se il cluster contiene un StatefulSet con dati critici, contatta
    l'assistenza clienti Google Cloud per
    risolvere il problema. In caso contrario, segui questi passaggi:
       
     Elimina tutte le VM del cluster da vSphere. Puoi eliminare le VM tramite l'interfaccia utente vSphere o eseguire il seguente comando:
            govc vm.destroy.Forza di nuovo l'eliminazione del cluster:
          gkectl delete cluster --cluster USER_CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG --force
      | 
  | Archiviazione | 1.15.0+, 1.16.0+ | Le attività di collegamento del volume CNS costanti vengono visualizzate ogni minuto per PVC/PV in-tree
    dopo l'upgrade alla versione 1.15 o successiveQuando un cluster contiene volumi permanenti vSphere in-tree (ad esempio PVC creati con StorageClass standard), vengono attivate attività com.vmware.cns.tasks.attachvolume ogni minuto da vCenter. 
 Soluzione temporanea: Modifica ConfigMap della funzionalità vSphere CSI e imposta list-volumes su false:      kubectl edit configmap internal-feature-states.csi.vsphere.vmware.com -n kube-system --kubeconfig KUBECONFIG
     Riavvia i pod controller CSI vSphere:      kubectl rollout restart deployment vsphere-csi-controller -n kube-system --kubeconfig KUBECONFIG
     | 
  | Archiviazione | 1.16.0 | Avvisi falsi contro i PVCQuando un cluster contiene volumi permanenti vSphere in-tree, i comandi
    gkectl diagnoseegkectl upgradepotrebbero generare
    avvisi errati relativi alle richieste di volume permanente (PVC) durante
    la convalida delle impostazioni di archiviazione del cluster. Il messaggio di avviso è simile
    al seguente     CSIPrerequisites pvc/pvc-name: PersistentVolumeClaim pvc-name bounds to an in-tree vSphere volume created before CSI migration enabled, but it doesn't have the annotation pv.kubernetes.io/migrated-to set to csi.vsphere.vmware.com after CSI migration is enabled
    
 Soluzione temporanea: Esegui questo comando per controllare le annotazioni di una PVC con l'avviso
    precedente:     kubectl get pvc PVC_NAME -n PVC_NAMESPACE -oyaml --kubeconfig KUBECONFIG
    Se il campo annotationsnell'output contiene quanto segue, puoi ignorare l'avviso:       pv.kubernetes.io/bind-completed: "yes"
      pv.kubernetes.io/bound-by-controller: "yes"
      volume.beta.kubernetes.io/storage-provisioner: csi.vsphere.vmware.com
     | 
  
  
    | Upgrade, aggiornamenti | 1.15.0+, 1.16.0+ | La rotazione della chiave del service account non riesce quando sono scadute più chiaviSe il cluster non utilizza un registro privato e le chiavi dell'account di servizio di accesso ai componenti e dell'account di servizio Logging-monitoring (o Connect-register) sono scadute, quando ruoti le chiavi dell'account di servizio, gkectl update credentialsviene visualizzato un errore simile al seguente: Error: reconciliation failed: failed to update platform: ... Soluzione temporanea: Innanzitutto, ruota la chiave del account di servizio di accesso ai componenti. Sebbene venga visualizzato lo stesso messaggio di errore, dovresti essere in grado di ruotare le altre chiavi dopo la rotazione della chiave dell'account di servizio di accesso ai componenti.
       Se l'aggiornamento non va ancora a buon fine, contatta l'assistenza clienti Google Cloud
      per risolvere il problema. | 
  | Upgrade | 1.16.0-1.16.5 | 1.15 La macchina master utente viene ricreata in modo imprevisto quando il controller del cluster utente viene aggiornato alla versione 1.16Durante l'upgrade di un cluster utente, dopo l'upgrade del controller del cluster utente alla versione 1.16, se hai altri cluster utente 1.15 gestiti dallo stesso cluster di amministrazione, la macchina master utente potrebbe essere ricreata in modo imprevisto. Esiste un bug nel controller del cluster utente 1.16 che può attivare la ricreazione della macchina master utente 1.15. La soluzione alternativa che adotti dipende da come si verifica il problema. Soluzione alternativa per l'upgrade del cluster utente utilizzando la console Google Cloud : Opzione 1: utilizza una versione 1.16.6+ di GKE on VMware con la correzione. Opzione 2: segui questi passaggi: 
    Aggiungi manualmente l'annotazione di replica con il seguente comando:
    kubectl edit onpremuserclusters USER_CLUSTER_NAME -n USER_CLUSTER_NAME-gke-onprem-mgmt --kubeconfig ADMIN_KUBECONFIG L'annotazione relativa alla replica è: onprem.cluster.gke.io/server-side-preflight-rerun: trueMonitora l'avanzamento dell'upgrade controllando il campo statusdi OnPremUserCluster. Soluzione alternativa per l'upgrade del cluster utente utilizzando la tua workstation di amministrazione: Opzione 1: utilizza una versione 1.16.6+ di GKE on VMware con la correzione. Opzione 2: segui questi passaggi: 
      Aggiungi il file di informazioni sulla build /etc/cloud/build.infocon i seguenti contenuti. In questo modo, i controlli preliminari vengono eseguiti localmente sulla workstation amministrativa anziché sul server.gke_on_prem_version: GKE_ON_PREM_VERSIONAd esempio: gke_on_prem_version: 1.16.0-gke.669Esegui di nuovo il comando di upgrade.Al termine dell'upgrade, elimina il file build.info. | 
  | Crea | 1.16.0-1.16.5, 1.28.0-1.28.100 | Il controllo preliminare non riesce quando il nome host non è presente nel file di blocco IP.Durante la creazione del cluster, se non specifichi un nome host per ogni indirizzo IP nel file del blocco IP, il controllo preliminare non riesce e viene visualizzato il seguente messaggio di errore:
     multiple VMs found by DNS name  in xxx datacenter. Anthos Onprem doesn't support duplicate hostname in the same vCenter and you may want to rename/delete the existing VM.`
    Esiste un bug nel controllo preliminare che considera il nome host vuoto come duplicato. Soluzione temporanea: Opzione 1: utilizza una versione con la correzione. Opzione 2: ignora questo controllo preflight aggiungendo il flag --skip-validation-net-config. Opzione 3: specifica un nome host univoco per ogni indirizzo IP nel file del blocco IP. | 
| Upgrade, aggiornamenti | 1,16 | Errore di montaggio del volume durante l'upgrade/l'aggiornamento del cluster di amministrazione se utilizzi un cluster di amministrazione non ad alta disponibilità e un cluster utente con control plane v1Per un cluster di amministrazione non ad alta disponibilità e un cluster utente con control plane v1, quando esegui l'upgrade o l'aggiornamento del cluster di amministrazione, la ricreazione della macchina master del cluster di amministrazione potrebbe avvenire contemporaneamente al riavvio della macchina master del cluster utente, il che può causare una race condition.
In questo modo, i pod del control plane del cluster utente non possono comunicare con il control plane del cluster di amministrazione, il che causa problemi di collegamento del volume per kube-etcd e kube-apiserver sul control plane del cluster utente. Per verificare il problema, esegui i seguenti comandi per il pod interessato: kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace USER_CLUSTER_NAME describe pod IMPACTED_POD_NAMEe vedrai gli eventi come: 
Events:
  Type     Reason       Age                  From               Message
  ----     ------       ----                 ----               -------
  Warning  FailedMount  101s                 kubelet            Unable to attach or mount volumes: unmounted volumes=[kube-audit], unattached volumes=[], failed to process volumes=[]: timed out waiting for the condition
  Warning  FailedMount  86s (x2 over 3m28s)  kubelet            MountVolume.SetUp failed for volume "pvc-77cd0635-57c2-4392-b191-463a45c503cb" : rpc error: code = FailedPrecondition desc = volume ID: "bd313c62-d29b-4ecd-aeda-216648b0f7dc" does not appear staged to "/var/lib/kubelet/plugins/kubernetes.io/csi/csi.vsphere.vmware.com/92435c96eca83817e70ceb8ab994707257059734826fedf0c0228db6a1929024/globalmount"
 Soluzione temporanea: 
    
    Accedi tramite SSH al nodo del control plane utente, poiché si tratta di un cluster utente con control plane v1, il nodo del control plane utente si trova nel cluster di amministrazione.
    
    Riavvia kubelet utilizzando il seguente comando:
        sudo systemctl restart kubelet
    Dopo il riavvio, kubelet può ricostruire correttamente il montaggio globale dello stage. | 
  | Upgrade, aggiornamenti | 1.16.0 | Impossibile creare il nodo del control planeDurante un upgrade o un aggiornamento di un cluster di amministrazione, una race condition potrebbe
    causare l'eliminazione imprevista di un nuovo nodo del piano di controllo da parte di vSphere Cloud Controller Manager. In questo modo, clusterapi-controller rimane bloccato
    in attesa della creazione del nodo e alla fine l'upgrade/l'aggiornamento
    scade. In questo caso, l'output del comando di upgrade/aggiornamento gkectlè simile al seguente:     controlplane 'default/gke-admin-hfzdg' is not ready: condition "Ready": condition is not ready with reason "MachineInitializing", message "Wait for the control plane machine "gke-admin-hfzdg-6598459f9zb647c8-0\" to be rebooted"...
    Per identificare il sintomo, esegui il comando riportato di seguito per accedere al log in vSphere Cloud Controller Manager nel cluster di amministrazione:     kubectl get pods --kubeconfig ADMIN_KUBECONFIG -n kube-system | grep vsphere-cloud-controller-manager
    kubectl logs -f vsphere-cloud-controller-manager-POD_NAME_SUFFIX --kubeconfig ADMIN_KUBECONFIG -n kube-system
    Ecco un esempio di messaggio di errore del comando precedente: 
         node name: 81ff17e25ec6-qual-335-1500f723 has a different uuid. Skip deleting this node from cache.
    Soluzione temporanea: 
      
      Riavvia la macchina non riuscita per ricreare l'oggetto nodo eliminato.
      
      Accedi tramite SSH a ogni nodo del control plane e riavvia il pod statico di vSphere Cloud Controller Manager:
            sudo crictl ps | grep vsphere-cloud-controller-manager | awk '{print $1}'
      sudo crictl stop PREVIOUS_COMMAND_OUTPUT
      
      Esegui di nuovo il comando di upgrade/aggiornamento.
       | 
  | Operazione | 1,16 | L'hostname duplicato nello stesso data center causa errori di creazione o upgrade del clusterL'upgrade di un cluster 1.15 o la creazione di un cluster 1.16 con IP statici non riesce se sono presenti nomi host duplicati nello stesso data center. Questo errore si verifica perché
    vSphere Cloud Controller Manager non riesce ad aggiungere un IP esterno e un ID fornitore
    nell'oggetto nodo. Ciò causa il timeout dell'upgrade/della creazione del cluster. Per identificare il problema, recupera i log del pod vSphere Cloud Controller Manager
    per il cluster. Il comando che utilizzi dipende dal tipo di cluster,
    come segue: 
      Cluster di amministrazione:
            kubectl get pods --kubeconfig ADMIN_KUBECONFIG -n kube-system | grep vsphere-cloud-controller-manager
      kubectl logs -f vsphere-cloud-controller-manager-POD_NAME_SUFFIX --kubeconfig ADMIN_KUBECONFIG -n kube-system
      Cluster utente con enableControlplaneV2false:      kubectl get pods --kubeconfig ADMIN_KUBECONFIG -n USER_CLUSTER_NAME | grep vsphere-cloud-controller-manager
      kubectl logs -f vsphere-cloud-controller-manager-POD_NAME_SUFFIX --kubeconfig ADMIN_KUBECONFIG -n USER_CLUSTER_NAME
      Cluster utente con enableControlplaneV2true:      kubectl get pods --kubeconfig USER_KUBECONFIG -n kube-system | grep vsphere-cloud-controller-manager
      kubectl logs -f vsphere-cloud-controller-manager-POD_NAME_SUFFIX --kubeconfig USER_KUBECONFIG -n kube-system
       Ecco un esempio di messaggio di errore:     I1003 17:17:46.769676       1 search.go:152] Finding node admin-vm-2 in vc=vcsa-53598.e5c235a1.asia-northeast1.gve.goog and datacenter=Datacenter
    E1003 17:17:46.771717       1 datacenter.go:111] Multiple vms found VM by DNS Name. DNS Name: admin-vm-2
    Controlla se il nome host è duplicato nel data center:Puoi utilizzare il seguente approccio per verificare se il nome host è duplicato
    ed eseguire una soluzione alternativa, se necessario.           export GOVC_DATACENTER=GOVC_DATACENTER
          export GOVC_URL=GOVC_URL
          export GOVC_USERNAME=GOVC_USERNAME
          export GOVC_PASSWORD=GOVC_PASSWORD
          export GOVC_INSECURE=true
          govc find . -type m -guest.hostName HOSTNAME
          Comandi e output di esempio:          export GOVC_DATACENTER=mtv-lifecycle-vc01
          export GOVC_URL=https://mtv-lifecycle-vc01.anthos/sdk
          export GOVC_USERNAME=xxx
          export GOVC_PASSWORD=yyy
          export GOVC_INSECURE=true
          govc find . -type m -guest.hostName f8c3cd333432-lifecycle-337-xxxxxxxz
          ./vm/gke-admin-node-6b7788cd76-wkt8g
          ./vm/gke-admin-node-6b7788cd76-99sg2
          ./vm/gke-admin-master-5m2jb
          La soluzione alternativa che esegui dipende dall'operazione non riuscita. Soluzione temporanea per gli upgrade: Applica la soluzione alternativa per il tipo di cluster applicabile. 
        Cluster utente:
          
          
          Aggiorna il nome host della macchina interessata in user-ip-block.yaml con un nome univoco e attiva un aggiornamento forzato:
           gkectl update cluster --kubeconfig ADMIN_KUBECONFIG --config NEW_USER_CLUSTER_CONFIG --force
          
          Esegui nuovamente gkectl upgrade clusterCluster di amministrazione:
          
          Aggiorna il nome host della macchina interessata in admin-ip-block.yaml con un nome univoco e attiva un aggiornamento forzato:
           gkectl update admin --kubeconfig ADMIN_KUBECONFIG --config NEW_ADMIN_CLUSTER_CONFIG --force --skip-cluster-ready-check
          Se si tratta di un cluster di amministrazione non HA e la VM master di amministrazione utilizza un nome host duplicato, devi anche:Recuperare il nome della macchina master di amministrazione
           kubectl get machine --kubeconfig ADMIN_KUBECONFIG -owide -A
          Aggiorna l'oggetto macchina master amministratoreNota:NEW_ADMIN_MASTER_HOSTNAME deve essere uguale a quello impostato in admin-ip-block.yaml nel passaggio 1.
 
           kubectl patch machine ADMIN_MASTER_MACHINE_NAME --kubeconfig ADMIN_KUBECONFIG --type='json' -p '[{"op": "replace", "path": "/spec/providerSpec/value/networkSpec/address/hostname", "value":"NEW_ADMIN_MASTER_HOSTNAME"}]'
          Verifica che il nome host sia aggiornato nell'oggetto macchina master amministratore:
           kubectl get machine ADMIN_MASTER_MACHINE_NAME --kubeconfig ADMIN_KUBECONFIG -oyaml
          kubectl get machine ADMIN_MASTER_MACHINE_NAME --kubeconfig ADMIN_KUBECONFIG -o jsonpath='{.spec.providerSpec.value.networkSpec.address.hostname}'
          Esegui di nuovo l'upgrade del cluster di amministrazione con il checkpoint disattivato:
           gkectl upgrade admin --kubeconfig ADMIN_KUBECONFIG --config ADMIN_CLUSTER_CONFIG --disable-upgrade-from-checkpoint
           Soluzione alternativa per le installazioni: Applica la soluzione alternativa per il tipo di cluster applicabile. | 
  | Operazione | 1.16.0, 1.16.1, 1.16.2, 1.16.3 | $e`non sono supportati nel nome utente o nella password di vSphere
Le seguenti operazioni non vanno a buon fine quando il nome utente o la password di vSphere
      contengono $o`: 
        Eseguire l'upgrade di un cluster utente 1.15 con Controlplane V2 abilitato alla versione 1.16Aggiornamento di un cluster di amministrazione ad alta disponibilità (HA) 1.15 alla versione 1.16Creazione di un cluster utente 1.16 con Controlplane V2 abilitatoCreazione di un cluster di amministrazione HA 1.16 Utilizza una versione 1.16.4 o successive di Google Distributed Cloud con la correzione o esegui la soluzione alternativa riportata di seguito. La soluzione alternativa che esegui dipende dall'operazione non riuscita. Soluzione temporanea per gli upgrade: 
      Modifica il nome utente o la password di vCenter sul lato vCenter per rimuovere
       $e`.Aggiorna il nome utente o la password di vCenter nel
        file di configurazione
        delle credenziali.
      Attiva un aggiornamento forzato del cluster.
        Cluster utente:
                gkectl update cluster --kubeconfig ADMIN_KUBECONFIG --config USER_CLUSTER_CONFIG --force
        Cluster di amministrazione:
                gkectl update admin --kubeconfig ADMIN_KUBECONFIG --config ADMIN_CLUSTER_CONFIG --force --skip-cluster-ready-check
         Soluzione alternativa per le installazioni: 
      Modifica il nome utente o la password di vCenter sul lato vCenter per rimuovere
       $e`.Aggiorna il nome utente o la password di vCenter nel
        file di configurazione
        delle credenziali.
      Applica la soluzione alternativa per il tipo di cluster applicabile. | 
  | Archiviazione | 1.11+, 1.12+, 1.13+, 1.14+, 1.15+, 1.16 | Errore di creazione del PVC dopo la ricreazione del nodo con lo stesso nomeDopo l'eliminazione e la ricreazione di un nodo con lo stesso nome,
    esiste una piccola possibilità che la creazione di una successiva PersistentVolumeClaim (PVC)
    non vada a buon fine e venga visualizzato un errore simile al seguente:     The object 'vim.VirtualMachine:vm-988369' has already been deleted or has not been completely created Ciò è dovuto a race condition in cui il controller vSphere CSI non elimina una macchina rimossa dalla cache. 
 Soluzione temporanea: Riavvia i pod controller CSI vSphere:     kubectl rollout restart deployment vsphere-csi-controller -n kube-system --kubeconfig KUBECONFIG
     | 
  
  
    | Operazione | 1.16.0 | gkectl repair admin-master restituisce l'errore di annullamento della serializzazione di kubeconfigQuando esegui il comando gkectl repair admin-mastersu un cluster di amministrazione HA,gkectlrestituisce il seguente messaggio di errore:   Exit with error: Failed to repair: failed to select the template: failed to get cluster name from kubeconfig, please contact Google support. failed to decode kubeconfig data: yaml: unmarshal errors:
    line 3: cannot unmarshal !!seq into map[string]*api.Cluster
    line 8: cannot unmarshal !!seq into map[string]*api.Context
  
 Soluzione temporanea: Aggiungi il flag --admin-master-vm-template=al comando e
      fornisci il modello di VM della macchina da riparare:   gkectl repair admin-master --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
      --config ADMIN_CLUSTER_CONFIG_FILE \
      --admin-master-vm-template=/DATA_CENTER/vm/VM_TEMPLATE_NAME
  Per trovare il modello di VM della macchina: 
        Vai alla pagina Host e cluster nel client vSphere.Fai clic su Modelli VM e filtra in base al nome del cluster di amministrazione.
        Dovresti vedere i tre modelli VM per il cluster di amministrazione.Copia il nome del modello di VM che corrisponde al nome della macchina
        che stai riparando e utilizza il nome del modello nel comando di riparazione.   gkectl repair admin-master \
      --config=/home/ubuntu/admin-cluster.yaml \
      --kubeconfig=/home/ubuntu/kubeconfig \
      --admin-master-vm-template=/atl-qual-vc07/vm/gke-admin-98g94-zx...7vx-0-tmpl | 
  | Networking | 1.10.0+, 1.11.0+, 1.12.0+, 1.13.0+, 1.14.0-1.14.7, 1.15.0-1.15.3, 1.16.0 | VM Seesaw non funzionante a causa dello spazio su disco in esaurimentoSe utilizzi Seesaw come tipo di bilanciatore del carico per il tuo cluster e noti che
    una VM Seesaw non è attiva o non si avvia, potresti visualizzare il seguente messaggio di errore
    nella console vSphere:     GRUB_FORCE_PARTUUID set, initrdless boot failed. Attempting with initrd
    Questo errore indica che lo spazio su disco della VM è insufficiente perché fluent-bit
    in esecuzione sulla VM Seesaw non è configurato con la rotazione dei log corretta. 
 Soluzione temporanea: Individua i file di log che consumano la maggior parte dello spazio su disco utilizzando du -sh -- /var/lib/docker/containers/* | sort -rh. Pulisci il file di log con le dimensioni maggiori e riavvia la VM. Nota: se la VM è completamente inaccessibile, collega il disco a una VM funzionante (ad es. workstation amministrativa), rimuovi il file dal disco collegato, quindi ricollega il disco alla VM Seesaw originale. Per evitare che il problema si ripresenti, connettiti alla VM e modifica il file /etc/systemd/system/docker.fluent-bit.service. Aggiungi--log-opt max-size=10m --log-opt max-file=5nel comando Docker, poi eseguisystemctl restart docker.fluent-bit.service | 
  | Operazione | 1.13, 1.14.0-1.14.6, 1.15 | Errore della chiave pubblica SSH dell'amministratore dopo l'upgrade o l'aggiornamento del cluster di amministrazioneQuando provi a eseguire l'upgrade (gkectl upgrade admin) o l'aggiornamento
    (gkectl update admin) di un cluster di amministrazione non ad alta disponibilità
    con il checkpoint abilitato, l'upgrade o l'aggiornamento potrebbe non riuscire e generare errori come i
    seguenti: Checking admin cluster certificates...FAILURE
    Reason: 20 admin cluster certificates error(s).
Unhealthy Resources:
    AdminMaster clusterCA bundle: failed to get clusterCA bundle on admin master, command [ssh -o IdentitiesOnly=yes -i admin-ssh-key -o StrictHostKeyChecking=no -o ConnectTimeout=30 ubuntu@AdminMasterIP -- sudo cat /etc/kubernetes/pki/ca-bundle.crt] failed with error: exit status 255, stderr: Authorized uses only. All activity may be monitored and reported.
    ubuntu@AdminMasterIP: Permission denied (publickey).failed to ssh AdminMasterIP, failed with error: exit status 255, stderr: Authorized uses only. All activity may be monitored and reported.
    ubuntu@AdminMasterIP: Permission denied (publickey)error dialing ubuntu@AdminMasterIP: failed to establish an authenticated SSH connection: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey]... 
 Soluzione temporanea: Se non riesci a eseguire l'upgrade a una versione patch di Google Distributed Cloud con la correzione,
    contatta l'assistenza Google per ricevere assistenza. | 
  | Upgrade | 1.13.0-1.13.9, 1.14.0-1.14.6, 1.15.1-1.15.2 | L'upgrade di un cluster di amministrazione registrato nell'API GKE On-Prem potrebbe non riuscireQuando un cluster di amministrazione è registrato nell'API GKE On-Prem, l'upgrade del cluster di amministrazione alle versioni interessate potrebbe non riuscire perché l'appartenenza al parco risorse non è stata aggiornata. Quando si verifica questo errore, viene visualizzato il seguente messaggio quando provi a eseguire l'upgrade del cluster:     failed to register cluster: failed to apply Hub Membership: Membership API request failed: rpc error: code = InvalidArgument desc = InvalidFieldError for field endpoint.on_prem_cluster.resource_link: field cannot be updated
    Un cluster di amministrazione viene registrato nell'API quando lo registri esplicitamente o quando esegui l'upgrade di un cluster utente utilizzando un client API GKE On-Prem. 
 Soluzione temporanea:Annulla la registrazione del cluster di amministrazione:     gcloud alpha container vmware admin-clusters unenroll ADMIN_CLUSTER_NAME --project CLUSTER_PROJECT --location=CLUSTER_LOCATION --allow-missing
    e  riprendi
    l'upgrade del cluster di amministrazione. Potresti visualizzare temporaneamente l'errore obsoleto "Impossibile
    registrare il cluster". Dopo un po' dovrebbe aggiornarsi
    automaticamente. | 
  | Upgrade, aggiornamenti | 1.13.0-1.13.9, 1.14.0-1.14.4, 1.15.0 | L'annotazione del link alla risorsa del cluster di amministrazione registrato non viene mantenutaQuando un cluster di amministrazione viene registrato nell'API GKE On-Prem, la relativa annotazione del link alla risorsa viene applicata alla risorsa personalizzata OnPremAdminCluster, che non viene conservata durante gli aggiornamenti successivi del cluster di amministrazione a causa dell'utilizzo della chiave di annotazione errata. In questo modo, il cluster di amministrazione potrebbe essere registrato di nuovo per errore nell'API GKE On-Prem. Un cluster di amministrazione viene registrato nell'API quando lo registri esplicitamente o quando esegui l'upgrade di un cluster utente utilizzando un client API GKE On-Prem. 
 Soluzione temporanea:Annulla la registrazione del cluster di amministrazione:     gcloud alpha container vmware admin-clusters unenroll ADMIN_CLUSTER_NAME --project CLUSTER_PROJECT --location=CLUSTER_LOCATION --allow-missing
    e registra nuovamente
    il cluster di amministrazione. | 
  
  
    | Networking | 1.15.0-1.15.2 | CoreDNS orderPolicynon riconosciutoOrderPolicynon viene riconosciuto come parametro e
      non viene utilizzato. Google Distributed Cloud utilizza sempreRandom.
 Questo problema si verifica perché il modello CoreDNS non è stato aggiornato, il che
      fa sì che orderPolicyvenga ignorato. 
 Soluzione temporanea: Aggiorna il modello CoreDNS e applica la correzione. Questa correzione persiste fino
      a un upgrade. 
        Modifica il modello esistente:
kubectl edit cm -n kube-system coredns-templateSostituisci i contenuti del modello con quanto segue: coredns-template: |-
  .:53 {
    errors
    health {
      lameduck 5s
    }
    ready
    kubernetes cluster.local in-addr.arpa ip6.arpa {
      pods insecure
      fallthrough in-addr.arpa ip6.arpa
    }
{{- if .PrivateGoogleAccess }}
    import zones/private.Corefile
{{- end }}
{{- if .RestrictedGoogleAccess }}
    import zones/restricted.Corefile
{{- end }}
    prometheus :9153
    forward . {{ .UpstreamNameservers }} {
      max_concurrent 1000
      {{- if ne .OrderPolicy "" }}
      policy {{ .OrderPolicy }}
      {{- end }}
    }
    cache 30
{{- if .DefaultDomainQueryLogging }}
    log
{{- end }}
    loop
    reload
    loadbalance
}{{ range $i, $stubdomain := .StubDomains }}
{{ $stubdomain.Domain }}:53 {
  errors
{{- if $stubdomain.QueryLogging }}
  log
{{- end }}
  cache 30
  forward . {{ $stubdomain.Nameservers }} {
    max_concurrent 1000
    {{- if ne $.OrderPolicy "" }}
    policy {{ $.OrderPolicy }}
    {{- end }}
  }
}
{{- end }} | 
  | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13.0-1.13.7, 1.14.0-1.14.3 | Stato di OnPremAdminCluster incoerente tra il checkpoint e la CR effettiva Determinate condizioni di competizione potrebbero causare un'incoerenza dello stato OnPremAdminClustertra il checkpoint e il CR effettivo. Quando si verifica il problema, potresti riscontrare il seguente errore durante l'aggiornamento del cluster di amministrazione dopo l'upgrade: Exit with error:
E0321 10:20:53.515562  961695 console.go:93] Failed to update the admin cluster: OnPremAdminCluster "gke-admin-rj8jr" is in the middle of a create/upgrade ("" -> "1.15.0-gke.123"), which must be completed before it can be updated
Failed to update the admin cluster: OnPremAdminCluster "gke-admin-rj8jr" is in the middle of a create/upgrade ("" -> "1.15.0-gke.123"), which must be completed before it can be updatedPer risolvere questo problema, devi modificare il checkpoint o disattivarlo per l'upgrade/l'aggiornamento. Contatta il nostro team di assistenza per procedere con la soluzione alternativa. | 
  | Operazione | 1.13.0-1.13.9, 1.14.0-1.14.5, 1.15.0-1.15.1 | Il processo di riconciliazione modifica i certificati amministratore sui cluster di amministrazioneGoogle Distributed Cloud modifica i certificati di amministrazione sui control plane del cluster di amministrazione
    a ogni processo di riconciliazione, ad esempio durante l'upgrade di un cluster. Questo comportamento
    aumenta la possibilità di ottenere certificati non validi per il cluster di amministrazione,
    in particolare per i cluster della versione 1.15. Se sei interessato da questo problema, potresti riscontrare problemi come i seguenti: 
 Soluzione temporanea: Esegui l'upgrade a una versione di Google Distributed Cloud con la correzione:
    1.13.10+, 1.14.6+, 1.15.2+.
    Se l'upgrade non è fattibile, contatta l'assistenza clienti Google Cloud per risolvere il problema. | 
  
  
    | Networking, Operation | 1.10, 1.11, 1.12, 1.13, 1.14 | Componenti di Anthos Network Gateway espulsi o in attesa a causa della classe di priorità mancanteI pod gateway di rete in kube-systempotrebbero mostrare lo statoPendingoEvicted, come mostrato nel seguente
      output di esempio compresso: $ kubectl -n kube-system get pods | grep ang-node
ang-node-bjkkc     2/2     Running     0     5d2h
ang-node-mw8cq     0/2     Evicted     0     6m5s
ang-node-zsmq7     0/2     Pending     0     7h Questi errori indicano eventi di espulsione o l'impossibilità di pianificare i pod
      a causa delle risorse del nodo. Poiché i pod Anthos Network Gateway non hanno
      PriorityClass, hanno la stessa priorità predefinita degli altri workload.
      Quando i nodi sono vincolati dalle risorse, i pod del gateway di rete potrebbero essere
      eliminati. Questo comportamento è particolarmente dannoso per il DaemonSet ang-node, poiché questi pod devono essere pianificati su un nodo specifico e non possono essere migrati. 
 Soluzione temporanea: Esegui l'upgrade alla versione 1.15 o successive. Come soluzione a breve termine, puoi assegnare manualmente una
      PriorityClass
      ai componenti di Anthos Network Gateway. Il controller Google Distributed Cloud
      sovrascrive queste modifiche manuali durante una procedura di riconciliazione, ad esempio
      durante un upgrade del cluster. 
        Assegna PriorityClass system-cluster-criticalai deployment dei controller dei clusterang-controller-managereautoscaler.Assegna system-node-criticalPriorityClass al
        DaemonSet del nodoang-daemon. | 
  | Upgrade, aggiornamenti | 1.12, 1.13, 1.14, 1.15.0-1.15.2 | L'upgrade del cluster di amministrazione non va a buon fine dopo la registrazione del cluster con gcloud Dopo aver utilizzato gcloudper registrare un cluster di amministrazione con una sezionegkeConnectnon vuota, potresti visualizzare il seguente errore quando tenti di eseguire l'upgrade del cluster: failed to register cluster: failed to apply Hub Mem\
bership: Membership API request failed: rpc error: code = InvalidArgument desc = InvalidFieldError for field endpoint.o\
n_prem_cluster.admin_cluster: field cannot be updated Elimina lo spazio dei nomi gke-connect: kubectl delete ns gke-connect --kubeconfig=ADMIN_KUBECONFIGRecupera il nome del cluster di amministrazione: kubectl get onpremadmincluster -n kube-system --kubeconfig=ADMIN_KUBECONFIGElimina l'abbonamento al parco risorse: gcloud container fleet memberships delete ADMIN_CLUSTER_NAMEe  riprendi l'upgrade del cluster di amministrazione. | 
  | Operazione | 1.13.0-1.13.8, 1.14.0-1.14.5, 1.15.0-1.15.1 | gkectl diagnose snapshot --log-sincenon riesce a limitare la finestra temporale per
i comandijournalctleseguiti sui nodi del cluster
Ciò non influisce sulla funzionalità di creazione di uno snapshot del cluster, in quanto lo snapshot include comunque tutti i log raccolti per impostazione predefinita eseguendo journalctlsui nodi del cluster. Pertanto,
    non vengono perse informazioni di debug. | 
  | Installazione, upgrade, aggiornamenti | 1.9+, 1.10+, 1.11+, 1.12+ | gkectl prepare windowserrori
gkectl prepare windowsnon riesce a installare Docker sulle versioni di Google Distributed Cloud precedenti alla 1.13 perchéMicrosoftDockerProviderè deprecato.
 
 Soluzione temporanea: L'idea generale per risolvere questo problema è eseguire l'upgrade a Google Distributed Cloud 1.13
    e utilizzare gkectl1.13 per creare un modello di VM Windows e poi creare
    node pool Windows. Esistono due opzioni per passare a Google Distributed Cloud 1.13 dalla tua versione attuale, come mostrato di seguito. Nota:nella tua versione attuale sono disponibili opzioni per risolvere questo problema
    senza dover eseguire l'upgrade alla versione 1.13, ma saranno necessari più passaggi
    manuali. Contatta il nostro team di assistenza se vuoi prendere in considerazione
    questa opzione. 
 Opzione 1: upgrade blu/verde Puoi creare un nuovo cluster utilizzando Google Distributed Cloud versione 1.13+ con pool di nodi Windows ed eseguire la migrazione dei carichi di lavoro al nuovo cluster, quindi eliminare il cluster attuale. Ti consigliamo di utilizzare l'ultima versione secondaria di Google Distributed Cloud. Nota:per eseguire il provisioning del nuovo cluster saranno necessarie risorse aggiuntive, ma
    i tempi di inattività e le interruzioni per i carichi di lavoro esistenti saranno inferiori. 
 Opzione 2: elimina i pool di nodi Windows e aggiungili di nuovo durante
    l'upgrade a Google Distributed Cloud 1.13 Nota:per questa opzione, i workload Windows non potranno essere eseguiti finché
    il cluster non verrà aggiornato alla versione 1.13 e non verranno aggiunti di nuovo i node pool Windows. 
      Elimina i node pool Windows esistenti rimuovendo la configurazione dei node pool Windows
      dal file user-cluster.yaml, quindi esegui il comando:
      gkectl update cluster --kubeconfig=ADMIN_KUBECONFIG --config USER_CLUSTER_CONFIG_FILEEsegui l'upgrade dei cluster di amministrazione e utente solo Linux alla versione 1.12 seguendo la 
      guida all'upgrade per la versione secondaria di destinazione corrispondente.(Assicurati di eseguire questo passaggio prima di eseguire l'upgrade alla versione 1.13) Assicurati che enableWindowsDataplaneV2: truesia configurato inOnPremUserClusterCR, altrimenti il cluster continuerà a utilizzare Docker per i node pool Windows, che non saranno compatibili con il modello di VM Windows 1.13 appena creato in cui non è installato Docker. Se non è configurato o è impostato su false, aggiorna il cluster impostandolo su true in user-cluster.yaml, quindi esegui:gkectl update cluster --kubeconfig=ADMIN_KUBECONFIG --config USER_CLUSTER_CONFIG_FILEEsegui l'upgrade dei cluster di amministrazione e utente solo Linux alla versione 1.13 seguendo la 
      guida all'upgrade.Prepara il modello di VM Windows utilizzando gkectl 1.13:
      gkectl prepare windows --base-vm-template BASE_WINDOWS_VM_TEMPLATE_NAME --bundle-path 1.13_BUNDLE_PATH --kubeconfig=ADMIN_KUBECONFIGAggiungi di nuovo la configurazione del pool di nodi Windows a user-cluster.yaml con il campo OSImageimpostato sul modello di VM Windows appena creato.Aggiorna il cluster per aggiungere pool di nodi Windows
      gkectl update cluster --kubeconfig=ADMIN_KUBECONFIG --config USER_CLUSTER_CONFIG_FILE | 
  | Installazione, upgrade, aggiornamenti | 1.13.0-1.13.9, 1.14.0-1.14.5, 1.15.0-1.15.1 | Configurazione RootDistanceMaxSecnon applicata per i nodiubuntuIl valore predefinito di 5 secondi per RootDistanceMaxSecverrà
    utilizzato sui nodi, anziché 20 secondi, che dovrebbe essere la
    configurazione prevista. Se controlli il log di avvio del nodo tramite SSH nella VM,
    che si trova in `/var/log/startup.log`, puoi trovare il seguente
    errore: + has_systemd_unit systemd-timesyncd
/opt/bin/master.sh: line 635: has_systemd_unit: command not found L'utilizzo di un RootDistanceMaxSecdi 5 secondi potrebbe causare la mancata sincronizzazione dell'orologio di sistema con il server NTP quando la deriva dell'orologio è superiore a 5 secondi. 
 Soluzione temporanea: Applica il seguente DaemonSet al tuo cluster per configurare RootDistanceMaxSec: apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: change-root-distance
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: change-root-distance
  template:
    metadata:
      labels:
        app: change-root-distance
    spec:
      hostIPC: true
      hostPID: true
      tolerations:
      # Make sure pods gets scheduled on all nodes.
      - effect: NoSchedule
        operator: Exists
      - effect: NoExecute
        operator: Exists
      containers:
      - name: change-root-distance
        image: ubuntu
        command: ["chroot", "/host", "bash", "-c"]
        args:
        - |
          while true; do
            conf_file="/etc/systemd/timesyncd.conf.d/90-gke.conf"
            if [ -f $conf_file ] && $(grep -q "RootDistanceMaxSec=20" $conf_file); then
              echo "timesyncd has the expected RootDistanceMaxSec, skip update"
            else
              echo "updating timesyncd config to RootDistanceMaxSec=20"
              mkdir -p /etc/systemd/timesyncd.conf.d
              cat > $conf_file << EOF
          [Time]
          RootDistanceMaxSec=20
          EOF
              systemctl restart systemd-timesyncd
            fi
            sleep 600
          done
        volumeMounts:
        - name: host
          mountPath: /host
        securityContext:
          privileged: true
      volumes:
      - name: host
        hostPath:
          path: / | 
  | Upgrade, aggiornamenti | 1.12.0-1.12.6, 1.13.0-1.13.6, 1.14.0-1.14.2 | gkectl update adminnon riesce a causa del campoosImageTypevuoto
Quando utilizzi la versione 1.13 gkectlper aggiornare un cluster di amministrazione versione 1.12, potresti visualizzare il seguente errore: Failed to update the admin cluster: updating OS image type in admin cluster
is not supported in "1.12.x-gke.x" Quando utilizzi gkectl update adminper i cluster versione 1.13 o 1.14, potresti visualizzare il seguente messaggio nella risposta: Exit with error:
Failed to update the cluster: the update contains multiple changes. Please
update only one feature at a time Se controlli il log gkectl, potresti notare che le modifiche multiple includono l'impostazione diosImageTypeda una stringa vuota aubuntu_containerd. Questi errori di aggiornamento sono dovuti al riempimento improprio del campo
    osImageTypenella configurazione del cluster di amministrazione, poiché è stato
    introdotto nella versione 1.9. 
 Soluzione temporanea: Esegui l'upgrade a una versione di Google Distributed Cloud con la correzione. Se l'upgrade
    non è fattibile per te, contatta l'assistenza clienti Google Cloud per risolvere il problema. | 
  | Installazione, sicurezza | 1.13, 1.14, 1.15, 1.16 | SNI non funziona sui cluster utente con Controlplane V2La possibilità di fornire un certificato di servizio aggiuntivo per il
    server API Kubernetes di un cluster utente con
    
    authentication.sninon funziona quando Controlplane V2 è
    abilitato (enableControlplaneV2: true). 
 Soluzione temporanea: Finché non sarà disponibile una patch di Google Distributed Cloud con la correzione, se
    devi utilizzare SNI, disattiva Controlplane V2 (enableControlplaneV2: false). | 
  | Installazione | 1.0-1.11, 1.12, 1.13.0-1.13.9, 1.14.0-1.14.5, 1.15.0-1.15.1 | $nel nome utente del registro privato causa l'avvio non riuscito della macchina del control plane dell'amministratore
L'avvio della macchina del control plane amministrativo non riesce quando il nome utente del registro privato contiene $.
    Quando controlli/var/log/startup.logsulla macchina del control plane amministrativo, visualizzi il seguente errore: ++ REGISTRY_CA_CERT=xxx
++ REGISTRY_SERVER=xxx
/etc/startup/startup.conf: line 7: anthos: unbound variable 
 Soluzione temporanea: Utilizza un nome utente del registro privato senza $oppure utilizza una versione di Google Distributed Cloud con
    la correzione. | 
  | Upgrade, aggiornamenti | 1.12.0-1.12.4 | Avvisi di falsi positivi relativi a modifiche non supportate durante l'aggiornamento del cluster di amministrazioneQuando 
    aggiorni i cluster di amministrazione, nel log vengono visualizzati i seguenti avvisi di falsi positivi, che puoi ignorare.      console.go:47] detected unsupported changes: &v1alpha1.OnPremAdminCluster{
      ...
      -         CARotation:        &v1alpha1.CARotationConfig{Generated: &v1alpha1.CARotationGenerated{CAVersion: 1}},
      +         CARotation:        nil,
      ...
    } | 
  | Upgrade, aggiornamenti | 1.13.0-1.13.9, 1.14.0-1.14.5, 1.15.0-1.15.1 | Aggiornamento del cluster utente non riuscito dopo la rotazione della chiave di firma KSADopo aver ruotato
    le chiavi di firma KSA e successivamente 
    aggiornato un cluster utente, gkectl updatepotrebbe non riuscire con il
    seguente messaggio di errore: Failed to apply OnPremUserCluster 'USER_CLUSTER_NAME-gke-onprem-mgmt/USER_CLUSTER_NAME':
admission webhook "vonpremusercluster.onprem.cluster.gke.io" denied the request:
requests must not decrement *v1alpha1.KSASigningKeyRotationConfig Version, old version: 2, new version: 1" 
 Soluzione temporanea:Riporta la versione della chiave di firma KSA alla versione 1, ma mantieni i dati della chiave più recenti: 
      Controlla il secret nel cluster di amministrazione nello spazio dei nomi USER_CLUSTER_NAMEe recupera il nome del secret ksa-signing-key:kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME get secrets | grep ksa-signing-keyCopia il secret ksa-signing-key e assegna al secret copiato il nome service-account-cert:
      kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME get secret KSA-KEY-SECRET-NAME -oyaml | \
sed 's/ name: .*/ name: service-account-cert/' | \
kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME apply -f -Elimina il secret ksa-signing-key precedente:
      kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME delete secret KSA-KEY-SECRET-NAMEAggiorna il campo data.datain ksa-signing-key-rotation-stage configmap a'{"tokenVersion":1,"privateKeyVersion":1,"publicKeyVersions":[1]}':kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME \
edit configmap ksa-signing-key-rotation-stageDisabilita il webhook di convalida per modificare le informazioni sulla versione nella risorsa personalizzata OnPremUserCluster:
      kubectl --kubeconfig=ADMIN_KUBECONFIG patch validatingwebhookconfiguration onprem-user-cluster-controller -p '
webhooks:
- name: vonpremnodepool.onprem.cluster.gke.io
  rules:
  - apiGroups:
    - onprem.cluster.gke.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    resources:
    - onpremnodepools
- name: vonpremusercluster.onprem.cluster.gke.io
  rules:
  - apiGroups:
    - onprem.cluster.gke.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    resources:
    - onpremuserclusters
'Aggiorna il campo spec.ksaSigningKeyRotation.generated.ksaSigningKeyRotationa1nella risorsa personalizzata OnPremUserCluster:kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME-gke-onprem-mgmt \
edit onpremusercluster USER_CLUSTER_NAMEAttendi che il cluster di utenti di destinazione sia pronto. Puoi controllare lo stato in questo modo:
      kubectl --kubeconfig=ADMIN_KUBECONFIG -n=USER_CLUSTER_NAME-gke-onprem-mgmt \
get onpremuserclusterRipristina il webhook di convalida per il cluster utente:
      kubectl --kubeconfig=ADMIN_KUBECONFIG patch validatingwebhookconfiguration onprem-user-cluster-controller -p '
webhooks:
- name: vonpremnodepool.onprem.cluster.gke.io
  rules:
  - apiGroups:
    - onprem.cluster.gke.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    - UPDATE
    resources:
    - onpremnodepools
- name: vonpremusercluster.onprem.cluster.gke.io
  rules:
  - apiGroups:
    - onprem.cluster.gke.io
    apiVersions:
    - v1alpha1
    operations:
    - CREATE
    - UPDATE
    resources:
    - onpremuserclusters
'Evita un'altra rotazione della chiave di firma KSA finché il cluster non viene
      aggiornato alla versione con la correzione. | 
  | Operazione | 1.13.1+, 1.14, 1., 1,16 | Quando utilizzi Terraform per eliminare un cluster utente con un bilanciatore del carico F5 BIG-IP, i server virtuali F5 BIG-IP non vengono rimossi dopo l'eliminazione del cluster. 
 Soluzione temporanea: Per rimuovere le risorse F5, segui i passaggi per
    pulire una partizione F5 del cluster utente
   | 
  | Installazione, upgrade, aggiornamenti | 1.13.8, 1.14.4 | Il cluster kind esegue il pull delle immagini container da docker.ioSe crei un cluster di amministrazione versione 1.13.8 o 1.14.4 oppure esegui l'upgrade di un cluster di amministrazione alla versione 1.13.8 o 1.14.4, il cluster kind estrae le seguenti immagini container da docker.io: docker.io/kindest/kindnetddocker.io/kindest/local-path-provisionerdocker.io/kindest/local-path-helperSe docker.ionon è accessibile dalla workstation di amministrazione,
    la creazione o l'upgrade del cluster di amministrazione non riesce a visualizzare il cluster kind.
    L'esecuzione del seguente comando sulla workstation di amministrazione mostra i
    container corrispondenti in attesa conErrImagePull: docker exec gkectl-control-plane kubectl get pods -A La risposta contiene voci come le seguenti: ...
kube-system         kindnet-xlhmr                             0/1
    ErrImagePull  0    3m12s
...
local-path-storage  local-path-provisioner-86666ffff6-zzqtp   0/1
    Pending       0    3m12s
...Queste immagini container devono essere precaricate nell'immagine container del cluster kind. Tuttavia, la versione 0.18.0 di kind presenta
    un problema con le immagini container precaricate,
    che vengono estratte da internet per errore. 
 Soluzione temporanea: Esegui i seguenti comandi sulla workstation di amministrazione mentre il cluster di amministrazione è in attesa di creazione o upgrade: docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af docker.io/kindest/kindnetd:v20230330-48f316cd
docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/kindnetd:v20230330-48f316cd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af docker.io/kindest/kindnetd@sha256:c19d6362a6a928139820761475a38c24c0cf84d507b9ddf414a078cf627497af
docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/local-path-helper:v20230330-48f316cd@sha256:135203f2441f916fb13dad1561d27f60a6f11f50ec288b01a7d2ee9947c36270 docker.io/kindest/local-path-helper:v20230330-48f316cd
docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/local-path-helper:v20230330-48f316cd@sha256:135203f2441f916fb13dad1561d27f60a6f11f50ec288b01a7d2ee9947c36270 docker.io/kindest/local-path-helper@sha256:135203f2441f916fb13dad1561d27f60a6f11f50ec288b01a7d2ee9947c36270
docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501 docker.io/kindest/local-path-provisioner:v0.0.23-kind.0
docker exec gkectl-control-plane ctr -n k8s.io images tag docker.io/kindest/local-path-provisioner:v0.0.23-kind.0@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501 docker.io/kindest/local-path-provisioner@sha256:f2d0a02831ff3a03cf51343226670d5060623b43a4cfc4808bd0875b2c4b9501 | 
  | Operazione | 1.13.0-1.13.7, 1.14.0-1.14.4, 1.15.0 | Failover non riuscito sul cluster utente e sul cluster di amministrazione HA Controlplane V2 quando la rete filtra le richieste GARP duplicateSe le VM del cluster sono connesse a uno switch che filtra le richieste GARP (gratuitous ARP) duplicate, la
    selezione del leader di keepalived potrebbe riscontrare unarace conditione, che causa l'inserimento di voci errate nella tabella ARP di alcuni nodi. I nodi interessati possono pingil VIP del control plane, ma una connessione TCP al VIP del control plane
    scadrà. 
 Soluzione temporanea:Esegui questo comando su ogni nodo del control plane del cluster interessato:     iptables -I FORWARD -i ens192 --destination CONTROL_PLANE_VIP -j DROP
     | 
  | Upgrade, aggiornamenti | 1.13.0-1.13.7, 1.14.0-1.14.4, 1.15.0 | vsphere-csi-controllerdeve essere riavviato dopo la rotazione del certificato vCenter
vsphere-csi-controllerdeve aggiornare il segreto di vCenter dopo la rotazione del certificato vCenter. Tuttavia, il sistema attuale non riavvia correttamente i pod divsphere-csi-controller, causando l'arresto anomalo divsphere-csi-controllerdopo la rotazione.
 Soluzione temporanea: Per i cluster creati con la versione 1.13 e successive, segui le istruzioni riportate di seguito per riavviare vsphere-csi-controller kubectl --kubeconfig=ADMIN_KUBECONFIG rollout restart deployment vsphere-csi-controller -n kube-system | 
  | Installazione | 1.10.3-1.10.7, 1.11, 1.12, 1.13.0-1.13.1 | La creazione del cluster di amministrazione non ha esito negativo in caso di errori di registrazione del clusterAnche quando la registrazione del cluster non riesce durante la creazione del cluster di amministrazione, il comando Per identificare il sintomo, puoi cercare i seguenti messaggi di errore nel log di `gkectl create admin`:gkectl create adminnon genera errori e potrebbe essere eseguito correttamente. In altre parole, la creazione del cluster di amministrazione potrebbe "riuscire" senza essere registrata in un parco risorse. 
Failed to register admin cluster Puoi anche verificare se riesci a trovare il cluster tra i cluster registrati nella console Google Cloud.
    
 Soluzione temporanea: Per i cluster creati nelle versioni 1.12 e successive, segui le istruzioni per riprovare la registrazione del cluster di amministrazione dopo la creazione del cluster. Per i cluster creati nelle versioni precedenti,
       
        
        Aggiungi una coppia chiave-valore fittizia come "foo: bar" al file della chiave SA connect-register
        
        Esegui gkectl update adminper registrare nuovamente il cluster di amministrazione. | 
  | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13.0-1.13.1 | La nuova registrazione del cluster di amministrazione potrebbe essere ignorata durante l'upgrade del cluster di amministrazioneDurante l'upgrade del cluster di amministrazione, se l'upgrade dei nodi del control plane utente scade, il cluster di amministrazione non verrà registrato nuovamente con la versione aggiornata dell'agente Connect. 
 Soluzione temporanea:Controlla se il cluster viene visualizzato tra i cluster registrati.
      Come passaggio facoltativo, accedi al cluster dopo aver configurato l'autenticazione. Se il cluster è ancora registrato, puoi saltare le seguenti istruzioni per riprovare la registrazione.
      Per i cluster di cui è stato eseguito l'upgrade alla versione 1.12 e successive, segui le istruzioni per riprovare la registrazione del cluster di amministrazione dopo la creazione del cluster. Per i cluster di cui è stato eseguito l'upgrade a versioni precedenti, 
        
        Aggiungi una coppia chiave-valore fittizia come "foo: bar" al file della chiave SA connect-register
        
        Esegui gkectl update adminper registrare nuovamente il cluster di amministrazione. | 
  | Configurazione | 1.15.0 | Messaggio di errore errato relativo a vCenter.dataDiskPer un cluster di amministrazione ad alta disponibilità, gkectl preparemostra
    questo messaggio di errore falso: 
vCenter.dataDisk must be present in the AdminCluster spec 
 Soluzione temporanea: Puoi ignorare questo messaggio di errore. | 
  | VMware | 1.15.0 | La creazione del node pool non riesce a causa di regole di affinità VM-host ridondantiDurante la creazione di un pool di nodi che utilizza
    l'affinità VM-host,
    una race condition potrebbe comportare la creazione di più
    regole di affinità VM-host
    con lo stesso nome. Ciò può causare un errore di creazione pool di nodi. 
 Soluzione temporanea: Rimuovi le vecchie regole ridondanti in modo che la creazione pool di nodi possa procedere.
    Queste regole sono denominate [USER_CLUSTER_NAME]-[HASH]. | 
  
  
    | Operazione | 1.15.0 | gkectl repair admin-masterpotrebbe non riuscire a causa difailed
      to delete the admin master node object and reboot the admin master VM
      
Il comando gkectl repair admin-masterpotrebbe non riuscire a causa di una
      race condition con il seguente errore. Failed to repair: failed to delete the admin master node object and reboot the admin master VM 
 Soluzione temporanea: Questo comando è idempotente. Può essere eseguito di nuovo in sicurezza finché il comando
      non ha esito positivo. | 
| Upgrade, aggiornamenti | 1.15.0 | I pod rimangono nello stato Non riuscito dopo la ricreazione o l'aggiornamento di un
    nodo del control planeDopo aver ricreato o aggiornato un nodo del control plane, alcuni pod potrebbero
    rimanere nello stato Faileda causa dell'errore del predicato NodeAffinity. Questi pod in errore non influiscono sul normale funzionamento o sull'integrità del cluster. 
 Soluzione temporanea: Puoi ignorare tranquillamente i pod non riusciti o eliminarli manualmente. | 
  | Sicurezza, configurazione | 1.15.0-1.15.1 | OnPremUserCluster non è pronto a causa delle credenziali del registro privatoSe utilizzi
    credenziali preparate
    e un registro privato, ma non hai configurato le credenziali preparate per
    il tuo registro privato, OnPremUserCluster potrebbe non essere pronto e
    potresti visualizzare il seguente messaggio di errore:
     
failed to check secret reference for private registry … 
 Soluzione temporanea: Prepara le credenziali del registro privato per il cluster utente
    in base alle istruzioni riportate in
    Configurare le credenziali preparate.
     | 
  
  
    | Upgrade, aggiornamenti | 1.15.0 | 
        Durante gkectl upgrade admin, il controllo preliminare dello spazio di archiviazione per la migrazione CSI verifica
        che le StorageClass non abbiano parametri ignorati dopo la migrazione CSI.
        Ad esempio, se esiste una StorageClass con il parametrodiskformat, alloragkectl upgrade admincontrassegna la StorageClass e segnala un errore nella convalida preliminare.
        I cluster di amministrazione creati in Google Distributed Cloud 1.10 e versioni precedenti hanno una StorageClass condiskformat: thinche non supererà questa convalida, ma questa StorageClass funziona
        correttamente dopo la migrazione CSI. Questi errori devono essere interpretati come avvisi. 
        Per maggiori informazioni, consulta la sezione relativa al parametro StorageClass in  Migrazione dei volumi vSphere in-tree al plug-in vSphere Container Storage.
       
 Soluzione temporanea: Dopo aver verificato che il cluster ha una StorageClass con parametri ignorati dopo la migrazione CSI,
      esegui gkectl upgrade admincon il flag--skip-validation-cluster-health. | 
  | Archiviazione | 1.15, 1.16 | I volumi vSphere in-tree migrati utilizzando il file system Windows non possono essere utilizzati con il driver CSI vSphereIn determinate condizioni, i dischi possono essere collegati in modalità di sola lettura ai nodi Windows. Di conseguenza, il volume corrispondente è di sola lettura all'interno di un pod.
    Questo problema si verifica più facilmente quando un nuovo insieme di nodi sostituisce un insieme di nodi precedente (ad esempio, upgrade del cluster o aggiornamento del pool di nodi). I workload
    stateful che prima funzionavano correttamente potrebbero non essere in grado di scrivere nei
    volumi sul nuovo insieme di nodi. 
 Soluzione temporanea: 
       
        
          Ottieni l'UID del pod che non riesce a scrivere nel suo volume:
          kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pod \
    POD_NAME --namespace POD_NAMESPACE \
    -o=jsonpath='{.metadata.uid}{"\n"}'
          Utilizza PersistentVolumeClaim per ottenere il nome di PersistentVolume:
          kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pvc \
    PVC_NAME --namespace POD_NAMESPACE \
    -o jsonpath='{.spec.volumeName}{"\n"}'
        Determina il nome del nodo in cui è in esecuzione il pod:
        kubectl --kubeconfig USER_CLUSTER_KUBECONFIGget pods \
    --namespace POD_NAMESPACE \
    -o jsonpath='{.spec.nodeName}{"\n"}'
        Ottieni l'accesso a PowerShell al nodo tramite SSH o l'interfaccia web vSphere.
        
        Imposta le variabili di ambiente:
        
PS C:\Users\administrator> pvname=PV_NAME
PS C:\Users\administrator> podid=POD_UIDIdentifica il numero del disco associato a PersistentVolume:
        
PS C:\Users\administrator> disknum=(Get-Partition -Volume (Get-Volume -UniqueId ("\\?\"+(Get-Item (Get-Item
"C:\var\lib\kubelet\pods\$podid\volumes\kubernetes.io~csi\$pvname\mount").Target).Target))).DiskNumber
        Verifica che il disco sia readonly:
PS C:\Users\administrator> (Get-Disk -Number $disknum).IsReadonlyIl risultato dovrebbe essere True.Imposta readonlysufalse.
PS C:\Users\administrator> Set-Disk -Number $disknum -IsReadonly $false
PS C:\Users\administrator> (Get-Disk -Number $disknum).IsReadonly
        Elimina il pod in modo che venga riavviato:
        kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete pod POD_NAME \
    --namespace POD_NAMESPACE
        Il pod deve essere pianificato sullo stesso nodo. Tuttavia, se il pod viene
        pianificato su un nuovo nodo, potresti dover ripetere i passaggi precedenti sul
        nuovo nodo.
         | 
  
  
    | Upgrade, aggiornamenti | 1.12, 1.13.0-1.13.7, 1.14.0-1.14.4 | vsphere-csi-secretnon viene aggiornato dopo il giornogkectl update credentials vsphere --admin-cluster
Se aggiorni le credenziali vSphere per un cluster di amministrazione dopo
      l'aggiornamento delle credenziali del cluster,
      potresti notare che vsphere-csi-secretnello spazio dei nomikube-systemdel cluster di amministrazione utilizza ancora le vecchie credenziali. 
 Soluzione temporanea: 
        Recupera il nome del secret vsphere-csi-secret:kubectl --kubeconfig=ADMIN_KUBECONFIG -n=kube-system get secrets | grep vsphere-csi-secretAggiorna i dati del secret vsphere-csi-secretottenuto dal passaggio precedente:kubectl --kubeconfig=ADMIN_KUBECONFIG -n=kube-system patch secret CSI_SECRET_NAME -p \
  "{\"data\":{\"config\":\"$( \
    kubectl --kubeconfig=ADMIN_KUBECONFIG -n=kube-system get secrets CSI_SECRET_NAME -ojsonpath='{.data.config}' \
      | base64 -d \
      | sed -e '/user/c user = \"VSPHERE_USERNAME_TO_BE_UPDATED\"' \
      | sed -e '/password/c password = \"VSPHERE_PASSWORD_TO_BE_UPDATED\"' \
      | base64 -w 0 \
    )\"}}"Riavvia vsphere-csi-controller:kubectl --kubeconfig=ADMIN_KUBECONFIG -n=kube-system rollout restart deployment vsphere-csi-controllerPuoi monitorare lo stato dell'implementazione con:
         kubectl --kubeconfig=ADMIN_KUBECONFIG -n=kube-system rollout status deployment vsphere-csi-controllerUna volta eseguito correttamente il deployment, il controller deve utilizzare vsphere-csi-secretaggiornato. | 
  
  
    | Upgrade, aggiornamenti | 1.10, 1.11, 1.12.0-1.12.6, 1.13.0-1.13.6, 1.14.0-1.14.2 | audit-proxycrashloop durante l'abilitazione di Cloud Audit Logs congkectl update cluster
audit-proxypotrebbe andare in crash loop a causa di--cluster-namevuoto.
      Questo comportamento è causato da un bug nella logica di aggiornamento, in cui il nome del cluster non viene propagato al
      manifest del pod / container audit-proxy.
 
 Soluzione temporanea: Per un cluster utente control plane v2 con enableControlplaneV2: true, connettiti alla macchina del control plane utente utilizzando SSH
      e aggiorna/etc/kubernetes/manifests/audit-proxy.yamlcon--cluster_name=USER_CLUSTER_NAME. Per un cluster utente con control plane v1, modifica il container audit-proxynelkube-apiserverstatefulset per aggiungere--cluster_name=USER_CLUSTER_NAME: kubectl edit statefulset kube-apiserver -n USER_CLUSTER_NAME --kubeconfig=ADMIN_CLUSTER_KUBECONFIG | 
  
  
    | Upgrade, aggiornamenti | 1.11, 1.12, 1.13.0-1.13.5, 1.14.0-1.14.1 | Un ulteriore diritto di redeploy del control plane subito dopo gkectl upgrade clusterSubito dopo gkectl upgrade cluster, i pod del control plane potrebbero essere nuovamente sottoposti a deployment.
      Lo stato del cluster dagkectl list clustersè cambiato daRUNNINGaRECONCILING.
      Le richieste al cluster utente potrebbero scadere. Questo comportamento è dovuto alla rotazione automatica del certificato del control plane dopo
      gkectl upgrade cluster. Questo problema si verifica solo per i cluster utente che NON utilizzano il control plane v2. 
 Soluzione temporanea: Attendi che lo stato del cluster torni a RUNNINGingkectl list clustersoppure esegui l'upgrade alle versioni con la correzione: 1.13.6+, 1.14.2+ o 1.15+. | 
  
  
    | Upgrade, aggiornamenti | 1.12.7 | La release non valida 1.12.7-gke.19 è stata rimossa Google Distributed Cloud 1.12.7-gke.19 è una release non valida
      e non devi utilizzarla. Gli artefatti sono stati rimossi
      dal bucket Cloud Storage.
      
 Soluzione temporanea: Utilizza invece la release 1.12.7-gke.20. | 
  
  
   | Upgrade, aggiornamenti | 1.12.0+, 1.13.0-1.13.7, 1.14.0-1.14.3 | gke-connect-agentcontinua a utilizzare l'immagine precedente dopo l'aggiornamento delle credenziali del registro
Se aggiorni le credenziali del registro utilizzando uno dei seguenti metodi: 
      gkectl update credentials componentaccessse non utilizzi il registro privatogkectl update credentials privateregistryse utilizzi un registro privato potresti notare che gke-connect-agentcontinua a utilizzare l'immagine precedente o che i podgke-connect-agentnon possono essere visualizzati a causa diImagePullBackOff. Questo problema verrà risolto nelle release 1.13.8,
    1.14.4 e successive di Google Distributed Cloud. 
 Soluzione temporanea: Opzione 1: esegui di nuovo il deployment di gke-connect-agentmanualmente: 
      Elimina lo spazio dei nomi gke-connect:kubectl --kubeconfig=KUBECONFIG delete namespace gke-connectEsegui nuovamente il deployment di gke-connect-agentcon la chiave del account di servizio di registrazione originale (non è necessario aggiornare la chiave):
      
      Per il cluster di amministrazione:gkectl update credentials register --kubeconfig=ADMIN_CLUSTER_KUBECONFIG --config ADMIN_CLUSTER_CONFIG_FILE --admin-clusterPer il cluster utente: gkectl update credentials register --kubeconfig=ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG_FILE Opzione 2: puoi modificare manualmente i dati del segreto di pull dell'immagine
    regcredutilizzato dal deployment digke-connect-agent: kubectl --kubeconfig=KUBECONFIG -n=gke-connect patch secrets regcred -p "{\"data\":{\".dockerconfigjson\":\"$(kubectl --kubeconfig=KUBECONFIG -n=kube-system get secrets private-registry-creds -ojsonpath='{.data.\.dockerconfigjson}')\"}}"Opzione 3: puoi aggiungere il secret pull dell'immagine predefinita per il tuo cluster nel deployment di gke-connect-agent: 
      Copia il secret predefinito nello spazio dei nomi gke-connect:kubectl --kubeconfig=KUBECONFIG -n=kube-system get secret private-registry-creds -oyaml | sed 's/ namespace: .*/ namespace: gke-connect/' | kubectl --kubeconfig=KUBECONFIG -n=gke-connect apply -f -Recupera il nome del deployment gke-connect-agent:kubectl --kubeconfig=KUBECONFIG -n=gke-connect get deployment | grep gke-connect-agentAggiungi il secret predefinito al deployment di gke-connect-agent:kubectl --kubeconfig=KUBECONFIG -n=gke-connect patch deployment DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"imagePullSecrets": [{"name": "private-registry-creds"}, {"name": "regcred"}]}}}}' | 
  
  
    | Installazione | 1.13, 1.14 | Errore di controllo della configurazione manuale del bilanciamento del caricoQuando con gkectl check-configconvalidi la configurazione prima di creare un cluster con il bilanciatore del carico manuale, il comando non riesce e vengono visualizzati i seguenti messaggi di errore.  - Validation Category: Manual LB    Running validation check for "Network
configuration"...panic: runtime error: invalid memory address or nil pointer
dereference 
 Soluzione temporanea: Opzione 1: puoi utilizzare le versioni patch 1.13.7 e 1.14.4 che includeranno la correzione. Opzione 2: puoi anche eseguire lo stesso comando per convalidare la configurazione, ma saltare la convalida del bilanciatore del carico. gkectl check-config --skip-validation-load-balancer | 
  
  
    | Operazione | 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13 e 1.14 | etcd watch starvationI cluster che eseguono etcd versione 3.4.13 o precedente potrebbero riscontrare problemi di
        carenza di risorse di monitoraggio e di monitoraggio non operativo, il che può portare ai
        seguenti problemi:
        
         La pianificazione dei pod viene interrottaI nodi non possono registrarsikubelet non osserva le modifiche ai pod Questi problemi possono rendere il cluster non funzionante.
        Questo problema è stato risolto nelle release 1.12.7, 1.13.6,
        1.14.3 e successive di Google Distributed Cloud. Queste versioni più recenti utilizzano etcd versione
        3.4.21. Tutte le versioni precedenti di Google Distributed Cloud sono interessate da
        questo problema.
         Soluzione temporanea Se non puoi eseguire l'upgrade immediatamente, puoi mitigare il rischio di
       errore del cluster riducendo il numero di nodi nel cluster. Rimuovi
       nodi finché la metrica etcd_network_client_grpc_sent_bytes_totalnon è inferiore a 300 MBps. 
        Per visualizzare questa metrica in Metrics Explorer: 
       Vai a Metrics Explorer nella console Google Cloud :
       
       
       Vai a Esplora metriche
Seleziona la scheda Configurazione.
       Espandi Seleziona una metrica, inserisci Kubernetes Containernella barra dei filtri e poi utilizza i sottomenu per selezionare la metrica:
        Nel menu Risorse attive, seleziona Container Kubernetes.
       Nel menu Categorie di metriche attive, seleziona Anthos.Nel menu Metriche attive, seleziona etcd_network_client_grpc_sent_bytes_total.Fai clic su Applica. | 
  
  
    | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 e 1.14 | GKE Identity Service può causare latenze del control planeIn caso di riavvii o upgrade del cluster, GKE Identity Service può essere
       sommerso da traffico costituito da token JWT scaduti inoltrati da
       kube-apiservera GKE Identity Service tramite
       l'webhook di autenticazione. Anche se GKE Identity Service non
       va in crashloop, non risponde più e smette di gestire ulteriori richieste.
       Questo problema alla fine porta a latenze più elevate del control plane. Questo problema è stato risolto nelle seguenti release di Google Distributed Cloud: Per determinare se il problema ti riguarda, segui questi passaggi: 
  Verifica se l'endpoint di GKE Identity Service è raggiungibile esternamente:
  curl -s -o /dev/null -w "%{http_code}" \
    -X POST https://CLUSTER_ENDPOINT/api/v1/namespaces/anthos-identity-service/services/https:ais:https/proxy/authenticate -d '{}'Sostituisci CLUSTER_ENDPOINT
  con il VIP del control plane e la porta del bilanciatore del carico del control plane per il tuo
  cluster (ad esempio, 172.16.20.50:443). Se il problema ti riguarda, il comando restituisce un codice di stato 400. Se la richiesta scade, riavvia il podaise
  riesegui il comandocurlper verificare se il problema viene risolto. Se
  ricevi un codice di stato000, il problema è stato risolto e
  non devi fare altro. Se continui a ricevere un codice di stato400, il
  server HTTP di GKE Identity Service non viene avviato. In questo caso, continua.Controlla i log di GKE Identity Service e kube-apiserver:
  
  Controlla il log di GKE Identity Service:
  kubectl logs -f -l k8s-app=ais -n anthos-identity-service \
    --kubeconfig KUBECONFIGSe il log contiene una voce come la seguente, il problema ti riguarda: I0811 22:32:03.583448      32 authentication_plugin.cc:295] Stopping OIDC authentication for ???. Unable to verify the OIDC ID token: JWT verification failed: The JWT does not appear to be from this identity provider. To match this provider, the 'aud' claim must contain one of the following audiences:Controlla i log di kube-apiserverper i tuoi cluster:Nei seguenti comandi, KUBE_APISERVER_POD è il nome del pod kube-apiserversul cluster specificato. Cluster di amministrazione: kubectl --kubeconfig ADMIN_KUBECONFIG logs \
    -n kube-system KUBE_APISERVER_POD kube-apiserverCluster utente: kubectl --kubeconfig ADMIN_KUBECONFIG logs \
    -n USER_CLUSTER_NAME KUBE_APISERVER_POD kube-apiserverSe i log kube-apiservercontengono voci come le seguenti,
  allora il problema ti riguarda: E0811 22:30:22.656085       1 webhook.go:127] Failed to make webhook authenticator request: error trying to reach service: net/http: TLS handshake timeout
E0811 22:30:22.656266       1 authentication.go:63] "Unable to authenticate the request" err="[invalid bearer token, error trying to reach service: net/http: TLS handshake timeout]" Soluzione temporanea Se non puoi eseguire immediatamente l'upgrade dei cluster per ottenere la correzione, puoi
       identificare e riavviare i pod problematici come soluzione alternativa: 
         Aumenta il livello di verbosità di GKE Identity Service a 9:
         kubectl patch deployment ais -n anthos-identity-service --type=json \
    -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", \
    "value":"--vmodule=cloud/identity/hybrid/charon/*=9"}]' \
    --kubeconfig KUBECONFIGControlla il log di GKE Identity Service per il contesto del token non valido:
  kubectl logs -f -l k8s-app=ais -n anthos-identity-service \
    --kubeconfig KUBECONFIGPer ottenere il payload del token associato a ogni contesto di token non valido,
         analizza ogni secret dell'account di servizio correlato con il seguente comando:
kubectl -n kube-system get secret SA_SECRET \
    --kubeconfig KUBECONFIG \
    -o jsonpath='{.data.token}' | base64 --decodePer decodificare il token e visualizzare il nome e lo spazio dei nomi del pod di origine, copia
        il token nel debugger all'indirizzo jwt.io.
        Riavvia i pod identificati dai token. | 
  
  
    | Operazione | 1.8, 1.9, 1.10 | Il problema dell'aumento dell'utilizzo della memoria dei pod etcd-maintenanceSono interessati i pod di manutenzione etcd che utilizzano l'immagine etcddefrag:gke_master_etcddefrag_20210211.00_p0. Il container `etcddefrag` apre una nuova connessione al server etcd durante ogni ciclo di deframmentazione e le vecchie connessioni non vengono pulite. 
 Soluzione temporanea: Opzione 1: esegui l'upgrade all'ultima versione della patch dalla 1.8 alla 1.11, che contiene la correzione. Opzione 2: se utilizzi una versione patch precedente alla 1.9.6 e alla 1.10.3, devi ridurre lo scale del pod etcd-maintenance per il cluster di amministrazione e utente: kubectl scale --replicas 0 deployment/gke-master-etcd-maintenance -n USER_CLUSTER_NAME --kubeconfig ADMIN_CLUSTER_KUBECONFIG
kubectl scale --replicas 0 deployment/gke-master-etcd-maintenance -n kube-system --kubeconfig ADMIN_CLUSTER_KUBECONFIG | 
  
  
    | Operazione | 1.9, 1.10, 1.11, 1.12, 1.13 | Mancano i controlli di integrità dei pod del control plane del cluster utenteSia il controller di integrità del cluster sia il comando gkectl diagnose clustereseguono una serie di controlli di integrità, inclusi i controlli di integrità dei pod tra gli spazi dei nomi. Tuttavia, iniziano a ignorare per errore i pod del control plane utente. Se utilizzi la modalità control plane v2, questa operazione non influirà sul tuo cluster. 
 Soluzione temporanea: Ciò non influirà sulla gestione di carichi di lavoro o cluster. Se vuoi controllare l'integrità dei pod del control plane, puoi eseguire i seguenti comandi: kubectl get pods -owide -n USER_CLUSTER_NAME --kubeconfig ADMIN_CLUSTER_KUBECONFIG | 
  
  
    | Upgrade, aggiornamenti | 1.6+, 1.7+ | Gli upgrade del cluster di amministrazione 1.6 e 1.7 potrebbero essere interessati dal reindirizzamento k8s.gcr.io->registry.k8s.ioKubernetes ha reindirizzato il traffico da k8s.gcr.ioaregistry.k8s.ioil 20/03/2023. In Google Distributed Cloud 1.6.x e 1.7.x, gli upgrade del cluster di amministrazione utilizzano l'immagine containerk8s.gcr.io/pause:3.2. Se utilizzi un proxy per la workstation amministrativa e il proxy non consenteregistry.k8s.ioe l'immagine containerk8s.gcr.io/pause:3.2non è memorizzata nella cache locale, gli upgrade del cluster di amministrazione non riusciranno durante il pull dell'immagine container. 
 Soluzione temporanea: Aggiungi registry.k8s.ioalla lista consentita del proxy per la workstation amministrativa. | 
  
  
    | Networking | 1.10, 1.11, 1.12.0-1.12.6, 1.13.0-1.13.6, 1.14.0-1.14.2 | Errore di convalida di Seesaw durante la creazione del bilanciatore del caricogkectl create loadbalancernon riesce con il seguente messaggio di errore:
 - Validation Category: Seesaw LB - [FAILURE] Seesaw validation: xxx cluster lb health check failed: LB"xxx.xxx.xxx.xxx" is not healthy: Get "http://xxx.xxx.xxx.xxx:xxx/healthz": dial tcpxxx.xxx.xxx.xxx:xxx: connect: no route to host Ciò è dovuto all'esistenza del file del gruppo altalena. e il controllo preliminare
       tenta di convalidare un bilanciatore del carico Seesaw inesistente. Soluzione temporanea: Rimuovi il file del gruppo altalena esistente per questo cluster. Il nome del file
       è seesaw-for-gke-admin.yamlper il cluster di amministrazione eseesaw-for-{CLUSTER_NAME}.yamlper un cluster utente. | 
  
  
    | Networking | 1,14 | Timeout dell'applicazione causati da errori di inserimento nella tabella conntrackGoogle Distributed Cloud versione 1.14 è soggetto a errori di inserimento della tabella di monitoraggio delle connessioni (conntrack) di netfilter quando si utilizzano immagini del sistema operativo Ubuntu o COS. Gli errori di inserimento causano timeout
       dell'applicazione casuali e possono verificarsi anche quando la tabella conntrack ha spazio
       per nuove voci. Gli errori sono causati da modifiche al
       kernel 5.15 e versioni successive che limitano gli inserimenti di tabelle in base alla lunghezza della catena.  Per verificare se il problema ti riguarda, puoi controllare le statistiche del sistema di monitoraggio delle connessioni in-kernel su ogni nodo con il seguente comando: sudo conntrack -S La risposta è simile alla seguente: cpu=0       found=0 invalid=4 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0 clash_resolve=0 chaintoolong=0
cpu=1       found=0 invalid=0 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0 clash_resolve=0 chaintoolong=0
cpu=2       found=0 invalid=16 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0 clash_resolve=0 chaintoolong=0
cpu=3       found=0 invalid=13 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0 clash_resolve=0 chaintoolong=0
cpu=4       found=0 invalid=9 insert=0 insert_failed=0 drop=0 early_drop=0 error=0 search_restart=0 clash_resolve=0 chaintoolong=0
cpu=5       found=0 invalid=1 insert=0 insert_failed=0 drop=0 early_drop=0 error=519 search_restart=0 clash_resolve=126 chaintoolong=0
... Se un valore chaintoolongnella risposta è un numero diverso da zero, il problema ti riguarda. Soluzione temporanea La mitigazione a breve termine consiste nell'aumentare le dimensioni sia della tabella hash netfiler (nf_conntrack_buckets) sia della tabella di monitoraggio delle connessioni netfilter (nf_conntrack_max). Utilizza i seguenti comandi su ogni nodo del cluster per aumentare le dimensioni delle tabelle: sysctl -w net.netfilter.nf_conntrack_buckets=TABLE_SIZE
sysctl -w net.netfilter.nf_conntrack_max=TABLE_SIZE Sostituisci TABLE_SIZE con le nuove dimensioni in byte. Il valore
     predefinito per la dimensione della tabella è 262144. Ti consigliamo di impostare un valore
     pari a 65.536 volte il numero di core sul nodo. Ad esempio,
     se il nodo ha otto core, imposta la dimensione della tabella su524288. | 
  
  
   | Networking | 1.13.0-1.13.2 | calico-typha o anetd-operator crash loop sui nodi Windows con Controlplane V2Con
    
    Controlplane V2 abilitato, calico-typhaoanetd-operatorpotrebbero essere pianificati per i nodi Windows ed entrare in un ciclo di arresti anomali. Il motivo è che i due deployment tollerano tutti i taint, incluso il taint del nodo Windows. 
 Soluzione temporanea: Esegui l'upgrade alla versione 1.13.3 o successive oppure esegui i seguenti comandi per modificare il deployment di `calico-typha` o `anetd-operator`:     # If dataplane v2 is not used.
    kubectl edit deployment -n kube-system calico-typha --kubeconfig USER_CLUSTER_KUBECONFIG
    # If dataplane v2 is used.
    kubectl edit deployment -n kube-system anetd-operator --kubeconfig USER_CLUSTER_KUBECONFIG
    Rimuovi i seguenti spec.template.spec.tolerations:     - effect: NoSchedule
      operator: Exists
    - effect: NoExecute
      operator: Exists
    e aggiungi la seguente tolleranza:     - key: node-role.kubernetes.io/master
      operator: Exists
     | 
  
  
    | Configurazione | 1.14.0-1.14.2 | Impossibile caricare il file delle credenziali del registro privato del cluster utentePotresti non riuscire a creare un cluster di utenti se specifichi la
      sezione privateRegistrycon le credenzialifileRef.
      Il controllo preliminare potrebbe non riuscire con il seguente messaggio: 
[FAILURE] Docker registry access: Failed to login.
 
 Soluzione temporanea: 
      Se non intendevi specificare il campo o vuoi utilizzare le stesse
      credenziali del registro privato del cluster di amministrazione, puoi semplicemente rimuovere o
      commentare la sezione privateRegistrynel file di configurazione del cluster utente.Se vuoi utilizzare una credenziale del registro privato specifica per il tuo
      cluster utente, puoi specificare temporaneamente la sezione privateRegistryin questo modo:privateRegistry:
  address: PRIVATE_REGISTRY_ADDRESS
  credentials:
    username: PRIVATE_REGISTRY_USERNAME
    password: PRIVATE_REGISTRY_PASSWORD
  caCertPath: PRIVATE_REGISTRY_CACERT_PATH(NOTE: questa è solo una correzione temporanea e questi campi sono già
      deprecati. Ti consigliamo di utilizzare il file delle credenziali quando esegui l'upgrade alla versione 1.14.3 o successive.) | 
  
  
   | Operazioni | 1.10+ | Cloud Service Mesh e altre service mesh non compatibili con Dataplane v2Dataplane V2 assume il controllo del bilanciamento del carico e crea un socket del kernel anziché un DNAT basato su pacchetti. Ciò significa che Cloud Service Mesh
    non può eseguire l'ispezione dei pacchetti perché il pod viene ignorato e non utilizza mai IPTables. Ciò si manifesta in modalità gratuita di kube-proxy con la perdita di connettività o un routing del traffico errato per i servizi con Cloud Service Mesh, poiché il sidecar non può eseguire l'ispezione dei pacchetti. Questo problema è presente in tutte le versioni di Google Distributed Cloud 1.10, ma alcune versioni più recenti di 1.10 (1.10.2+) hanno una soluzione alternativa. 
 Soluzione temporanea: Esegui l'upgrade alla versione 1.11 per la piena compatibilità oppure, se utilizzi la versione 1.10.2 o successive, esegui:     kubectl edit cm -n kube-system cilium-config --kubeconfig USER_CLUSTER_KUBECONFIG
    Aggiungi bpf-lb-sock-hostns-only: truea configmap e poi riavvia il daemonset anetd:       kubectl rollout restart ds anetd -n kube-system --kubeconfig USER_CLUSTER_KUBECONFIG
     | 
  
  
    | Archiviazione | 1.12+, 1.13.3 | kube-controller-managerpotrebbe scollegare i volumi permanenti
      forzatamente dopo 6 minuti
kube-controller-managerpotrebbe scadere con timeout durante il distacco
      di PV/PVC dopo 6 minuti e forzare il distacco di PV/PVC. Log dettagliati
      dikube-controller-managermostrano eventi simili ai
      seguenti:
 
$ cat kubectl_logs_kube-controller-manager-xxxx | grep "DetachVolume started" | grep expired
kubectl_logs_kube-controller-manager-gke-admin-master-4mgvr_--container_kube-controller-manager_--kubeconfig_kubeconfig_--request-timeout_30s_--namespace_kube-system_--timestamps:2023-01-05T16:29:25.883577880Z W0105 16:29:25.883446       1 reconciler.go:224] attacherDetacher.DetachVolume started for volume "pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16" (UniqueName: "kubernetes.io/csi/csi.vsphere.vmware.com^126f913b-4029-4055-91f7-beee75d5d34a") on node "sandbox-corp-ant-antho-0223092-03-u-tm04-ml5m8-7d66645cf-t5q8f"
This volume is not safe to detach, but maxWaitForUnmountDuration 6m0s expired, force detaching
 Per verificare il problema, accedi al nodo ed esegui i seguenti comandi: # See all the mounting points with disks
lsblk -f
# See some ext4 errors
sudo dmesg -T Nel log di kubelet vengono visualizzati errori simili ai seguenti: 
Error: GetDeviceMountRefs check failed for volume "pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16" (UniqueName: "kubernetes.io/csi/csi.vsphere.vmware.com^126f913b-4029-4055-91f7-beee75d5d34a") on node "sandbox-corp-ant-antho-0223092-03-u-tm04-ml5m8-7d66645cf-t5q8f" :
the device mount path "/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16/globalmount" is still mounted by other references [/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8bb4780b-ba8e-45f4-a95b-19397a66ce16/globalmount
 
 Soluzione temporanea: Connettiti al nodo interessato utilizzando SSH e riavvialo. | 
  
  
    | Upgrade, aggiornamenti | 1.12+, 1.13+, 1.14+ | L'upgrade del cluster è bloccato se viene utilizzato il driver CSI di terze partiPotresti non riuscire ad eseguire l'upgrade di un cluster se utilizzi un driver CSI di terze parti. Il comando gkectl cluster diagnosepotrebbe restituire
      il seguente errore: 
"virtual disk "kubernetes.io/csi/csi.netapp.io^pvc-27a1625f-29e3-4e4f-9cd1-a45237cc472c" IS NOT attached to machine "cluster-pool-855f694cc-cjk5c" but IS listed in the Node.Status"
 
 Soluzione temporanea: Esegui l'upgrade utilizzando l'opzione --skip-validation-all. | 
  
  
    | Operazione | 1.10+, 1.11+, 1.12+, 1.13+, 1.14+ | gkectl repair admin-mastercrea la VM master amministratore
      senza eseguire l'upgrade della versione hardware della VM
Il nodo master amministratore creato tramite gkectl repair admin-masterpotrebbe utilizzare una versione hardware della VM inferiore a quella prevista. Quando si verifica il problema,
      visualizzerai l'errore nel reportgkectl diagnose cluster. CSIPrerequisites [VM Hardware]: The current VM hardware versions are lower than vmx-15 which is unexpected. Please contact Anthos support to resolve this issue. 
 Soluzione temporanea: Arresta il nodo master amministratore, segui
      https://kb.vmware.com/s/article/1003746
      per eseguire l'upgrade del nodo alla versione prevista descritta nel messaggio di errore
      e poi avvia il nodo. | 
  
  
    | Sistema operativo | 1.10+, 1.11+, 1.12+, 1.13+, 1.14+, 1.15+, 1.16+, , 1.28+, 1.29+, 1.30+, 1.31+, 1.32+ | La VM rilascia il lease DHCP in caso di arresto/riavvio imprevisto, il che potrebbe
      comportare modifiche all'IPIn systemd v244, systemd-networkdha un
      cambiamento del comportamento predefinito
      nella configurazioneKeepConfiguration. Prima di questa modifica,
      le VM non inviavano un messaggio di rilascio del lease DHCP al server DHCP
      durante l'arresto o il riavvio. Dopo questa modifica, le VM inviano un messaggio di questo tipo e
      restituiscono gli IP al server DHCP. Di conseguenza, l'IP rilasciato potrebbe essere
      riassegnato a una VM diversa e/o alla VM potrebbe essere assegnato un IP diverso, con conseguente conflitto IP (a livello di Kubernetes, non di vSphere)
      e/o modifica dell'IP sulle VM, il che può interrompere i cluster in vari modi. Ad esempio, potresti notare i seguenti sintomi. 
       
        L'interfaccia utente di vCenter mostra che nessuna VM utilizza lo stesso IP, ma kubectl get
        nodes -o widerestituisce nodi con IP duplicati.
NAME   STATUS    AGE  VERSION          INTERNAL-IP    EXTERNAL-IP    OS-IMAGE            KERNEL-VERSION    CONTAINER-RUNTIME
node1  Ready     28h  v1.22.8-gke.204  10.180.85.130  10.180.85.130  Ubuntu 20.04.4 LTS  5.4.0-1049-gkeop  containerd://1.5.13
node2  NotReady  71d  v1.22.8-gke.204  10.180.85.130  10.180.85.130  Ubuntu 20.04.4 LTS  5.4.0-1049-gkeop  containerd://1.5.13Impossibile avviare i nuovi nodi a causa dell'errore calico-node
2023-01-19T22:07:08.817410035Z 2023-01-19 22:07:08.817 [WARNING][9] startup/startup.go 1135: Calico node 'node1' is already using the IPv4 address 10.180.85.130.
2023-01-19T22:07:08.817514332Z 2023-01-19 22:07:08.817 [INFO][9] startup/startup.go 354: Clearing out-of-date IPv4 address from this node IP="10.180.85.130/24"
2023-01-19T22:07:08.825614667Z 2023-01-19 22:07:08.825 [WARNING][9] startup/startup.go 1347: Terminating
2023-01-19T22:07:08.828218856Z Calico node failed to start 
 Soluzione temporanea: Esegui il deployment del seguente DaemonSet sul cluster per ripristinare la
      modifica del comportamento predefinito di systemd-networkd. Le VM che eseguono
      questo DaemonSet non rilasceranno gli IP al server DHCP in caso di
      arresto/riavvio. Gli IP verranno liberati automaticamente dal server DHCP
      alla scadenza dei lease.       apiVersion: apps/v1
      kind: DaemonSet
      metadata:
        name: set-dhcp-on-stop
      spec:
        selector:
          matchLabels:
            name: set-dhcp-on-stop
        template:
          metadata:
            labels:
              name: set-dhcp-on-stop
          spec:
            hostIPC: true
            hostPID: true
            hostNetwork: true
            containers:
            - name: set-dhcp-on-stop
              image: ubuntu
              tty: true
              command:
              - /bin/bash
              - -c
              - |
                set -x
                date
                while true; do
                  export CONFIG=/host/run/systemd/network/10-netplan-ens192.network;
                  grep KeepConfiguration=dhcp-on-stop "${CONFIG}" > /dev/null
                  if (( $? != 0 )) ; then
                    echo "Setting KeepConfiguration=dhcp-on-stop"
                    sed -i '/\[Network\]/a KeepConfiguration=dhcp-on-stop' "${CONFIG}"
                    cat "${CONFIG}"
                    chroot /host systemctl restart systemd-networkd
                  else
                    echo "KeepConfiguration=dhcp-on-stop has already been set"
                  fi;
                  sleep 3600
                done
              volumeMounts:
              - name: host
                mountPath: /host
              resources:
                requests:
                  memory: "10Mi"
                  cpu: "5m"
              securityContext:
                privileged: true
            volumes:
            - name: host
              hostPath:
                path: /
            tolerations:
            - operator: Exists
              effect: NoExecute
            - operator: Exists
              effect: NoSchedule
       | 
  
  
    | Funzionamento, upgrade, aggiornamenti | 1.12.0-1.12.5, 1.13.0-1.13.5, 1.14.0-1.14.1 | Chiave del account di servizio di accesso ai componenti cancellata dopo l'upgrade del cluster di amministrazione dalla versione 1.11.xQuesto problema interesserà solo i cluster di amministrazione di cui è stato eseguito l'upgrade
      dalla versione 1.11.x e non interesserà i cluster di amministrazione creati dopo
      la versione 1.12. Dopo l'upgrade di un cluster 1.11.x alla versione 1.12.x, il campo component-access-sa-keynel secretadmin-cluster-credsverrà cancellato e sarà vuoto.
      Puoi verificarlo eseguendo questo comando: kubectl --kubeconfig ADMIN_KUBECONFIG -n kube-system get secret admin-cluster-creds -o yaml | grep 'component-access-sa-key'Se l'output è vuoto, significa che la chiave è stata cancellata. Dopo l'eliminazione della chiave dell'account di servizio di accesso ai componenti,
      l'installazione di nuovi cluster utente o l'upgrade di quelli esistenti
      non andrà a buon fine. Di seguito sono elencati alcuni messaggi di errore che potresti visualizzare:
       
        Errore di preflight di convalida lenta con messaggio di errore: "Failed
        to create the test VMs: failed to get service account key: service
        account is not configured."Prepare by gkectl preparenon riuscito, messaggio di errore:"Failed to prepare OS images: dialing: unexpected end of JSON
        input"Se esegui l'upgrade di un cluster utente 1.13 utilizzando la console Google Cloud o gcloud CLI, quando esegui
        gkectl update admin --enable-preview-user-cluster-central-upgradeper eseguire il deployment del controller della piattaforma di upgrade, il comando non va a buon fine
        e viene visualizzato il messaggio:"failed to download bundle to disk: dialing:
        unexpected end of JSON input"(puoi visualizzare questo messaggio
        nel campostatusnell'output dikubectl --kubeconfig 
        ADMIN_KUBECONFIG -n kube-system get onprembundle -oyaml). 
 Soluzione temporanea:   Aggiungi di nuovo manualmente la chiave del account di servizio di accesso ai componenti al secret
      eseguendo questo comando:
       kubectl --kubeconfig ADMIN_KUBECONFIG -n kube-system get secret admin-cluster-creds -ojson | jq --arg casa "$(cat COMPONENT_ACESS_SERVICE_ACOOUNT_KEY_PATH | base64 -w 0)" '.data["component-access-sa-key"]=$casa' | kubectl --kubeconfig ADMIN_KUBECONFIG apply -f - | 
  
  
    | Operazione | 1.13.0+, 1.14.0+ | Il gestore della scalabilità automatica dei cluster non funziona quando è abilitato Controlplane V2 Per i cluster utente creati con Controlplane V2
      abilitato, i node pool con la scalabilità automatica abilitata utilizzano sempre il autoscaling.minReplicasinuser-cluster.yaml. Il log del pod cluster-autoscaler
      mostra un errore simile al seguente:   > kubectl --kubeconfig $USER_CLUSTER_KUBECONFIG -n kube-system \
  logs $CLUSTER_AUTOSCALER_POD --container_cluster-autoscaler
 TIMESTAMP  1 gkeonprem_provider.go:73] error getting onpremusercluster ready status: Expected to get a onpremusercluster with id foo-user-cluster-gke-onprem-mgmt/foo-user-cluster
 TIMESTAMP 1 static_autoscaler.go:298] Failed to get node infos for groups: Expected to get a onpremusercluster with id foo-user-cluster-gke-onprem-mgmt/foo-user-cluster
  Il pod del gestore della scalabilità automatica del cluster può essere trovato eseguendo i seguenti comandi.   > kubectl --kubeconfig $USER_CLUSTER_KUBECONFIG -n kube-system \
   get pods | grep cluster-autoscaler
cluster-autoscaler-5857c74586-txx2c                          4648017n    48076Ki    30s
   
 Soluzione temporanea:  Disabilita la scalabilità automatica in tutti i pool di nodi con `gkectl update cluster` fino all'upgrade a una versione con la correzione. | 
  
  
    | Installazione | 1.12.0-1.12.4, 1.13.0-1.13.3, 1.14.0 | Il CIDR non è consentito nel file del blocco IPQuando gli utenti utilizzano CIDR nel file di blocco IP, la convalida della configurazione non riesce e viene visualizzato il seguente errore:
   - Validation Category: Config Check
    - [FAILURE] Config: AddressBlock for admin cluster spec is invalid: invalid IP:
172.16.20.12/30
  
 Soluzione temporanea:  Includi singoli IP nel file di blocco IP fino all'upgrade a una versione con la correzione: 1.12.5, 1.13.4, 1.14.1+. | 
  
  
    | Upgrade, aggiornamenti | 1.14.0-1.14.1 | L'aggiornamento del tipo di immagine del sistema operativo in admin-cluster.yaml non attende la ricreazione delle macchine del control plane utenteQuando Aggiorni il tipo di immagine del sistema operativo del control plane in admin-cluster.yaml e se il cluster utente corrispondente è stato creato con enableControlplaneV2impostato sutrue, le macchine del control plane utente potrebbero non completare la ricreazione al termine del comandogkectl. 
 Soluzione temporanea:  Al termine dell'aggiornamento, continua ad attendere il completamento della ricreazione delle macchine del piano di controllo utente monitorando i tipi di immagini del sistema operativo dei nodi utilizzando kubectl --kubeconfig USER_KUBECONFIG get nodes -owide. Ad esempio, se esegui l'aggiornamento da Ubuntu a COS, devi attendere che tutte le macchine del control plane passino completamente da Ubuntu a COS anche dopo il completamento del comando di aggiornamento. | 
  
  
    | Operazione | 1.10, 1.11, 1.12, 1.13, 1.14.0 | Errori di creazione o eliminazione dei pod dovuti a un problema con il token di autenticazione del account di servizio CNI CalicoUn problema con Calico in Google Distributed Cloud 1.14.0
      causa l'errore di creazione ed eliminazione dei pod con il seguente messaggio di errore
      nell'output di kubectl describe pods: 
  error getting ClusterInformation: connection is unauthorized: Unauthorized
   Questo problema si verifica solo 24 ore dopo la creazione o l'upgrade del cluster alla versione 1.14 utilizzando Calico. I cluster di amministrazione utilizzano sempre Calico, mentre per il cluster utente è presente
      un campo di configurazione `enableDataPlaneV2` in user-cluster.yaml. Se questo campo è
      impostato su `false` o non specificato, significa che stai utilizzando Calico nel cluster
      utente. Il container install-cnidei nodi crea un file kubeconfig con un token valido per 24 ore. Questo token deve essere rinnovato periodicamente
      dal podcalico-node. Il podcalico-nodenon è in grado di rinnovare il token perché non ha accesso alla directory
      che contiene il file kubeconfig sul nodo. 
 Soluzione temporanea: Questo problema è stato risolto nella versione 1.14.1 di Google Distributed Cloud. Esegui l'upgrade
      a questa o a una versione successiva. Se non puoi eseguire l'upgrade immediatamente, applica la seguente patch al
      DaemonSet calico-nodenel cluster di amministrazione e nel cluster utente:   kubectl -n kube-system get daemonset calico-node \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG -o json \
    | jq '.spec.template.spec.containers[0].volumeMounts += [{"name":"cni-net-dir","mountPath":"/host/etc/cni/net.d"}]' \
    | kubectl apply --kubeconfig ADMIN_CLUSTER_KUBECONFIG -f -
  kubectl -n kube-system get daemonset calico-node \
    --kubeconfig USER_CLUSTER_KUBECONFIG -o json \
    | jq '.spec.template.spec.containers[0].volumeMounts += [{"name":"cni-net-dir","mountPath":"/host/etc/cni/net.d"}]' \
    | kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f -
  Sostituisci quanto segue:
            ADMIN_CLUSTER_KUBECONFIG: il percorso
            del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG_FILE: il percorso
            del file di configurazione del cluster utente. | 
  
  
    | Installazione | 1.12.0-1.12.4, 1.13.0-1.13.3, 1.14.0 | La convalida del blocco IP non va a buon fine quando si utilizza CIDRLa creazione del cluster non va a buon fine nonostante l'utente disponga della configurazione corretta. L'utente vede la creazione non riuscita perché il cluster non ha IP sufficienti. 
 Soluzione temporanea:  Dividi i CIDR in diversi blocchi CIDR più piccoli, ad esempio 10.0.0.0/30diventa10.0.0.0/31, 10.0.0.2/31. Finché sono presenti N+1 CIDR, dove N è il numero di nodi nel cluster, questo dovrebbe essere sufficiente. | 
    
  
    | Funzionamento, upgrade, aggiornamenti | 1.11.0 - 1.11.1, 1.10.0 - 1.10.4, 1.9.0 - 1.9.6 | 
        Il backup del cluster di amministrazione non include le chiavi e la configurazione della crittografia dei secret sempre attiva
      
        Quando la funzionalità di crittografia dei secret sempre attiva è abilitata insieme al backup del cluster, il backup del cluster di amministrazione non include le chiavi di crittografia e la configurazione richieste dalla funzionalità di crittografia dei secret sempre attiva. Di conseguenza, la riparazione del master amministratore con questo backup utilizzando gkectl repair admin-master --restore-from-backupgenera il seguente errore: Validating admin master VM xxx ...
Waiting for kube-apiserver to be accessible via LB VIP (timeout "8m0s")...  ERROR
Failed to access kube-apiserver via LB VIP. Trying to fix the problem by rebooting the admin master
Waiting for kube-apiserver to be accessible via LB VIP (timeout "13m0s")...  ERROR
Failed to access kube-apiserver via LB VIP. Trying to fix the problem by rebooting the admin master
Waiting for kube-apiserver to be accessible via LB VIP (timeout "18m0s")...  ERROR
Failed to access kube-apiserver via LB VIP. Trying to fix the problem by rebooting the admin master Soluzione alternativa: 
         Utilizza il file binario gkectl dell'ultima versione patch disponibile per la versione secondaria corrispondente per eseguire il backup del cluster di amministrazione dopo le operazioni critiche del cluster.  Ad esempio, se il cluster esegue la versione 1.10.2, utilizza il binario gkectl 1.10.5 per eseguire un backup manuale del cluster di amministrazione, come descritto in Backup e ripristino di un cluster di amministrazione con gkectl.
         | 
  
    | Funzionamento, upgrade, aggiornamenti | 1.10+ | 
          Ricreare la VM master di amministrazione con un nuovo disco di avvio (ad es. gkectl repair admin-master) non andrà a buon fine se la funzionalità di crittografia dei secret sempre attiva è abilitata utilizzando il comando `gkectl update`.
          Se la funzionalità di crittografia dei secret sempre attiva non è abilitata al momento della creazione del cluster, ma viene abilitata in un secondo momento utilizzando l'operazione gkectl update,gkectl repair admin-masternon riesce a riparare il nodo del control plane del cluster di amministrazione. Ti consigliamo di abilitare la funzionalità di crittografia dei secret sempre attiva al momento della creazione del cluster. Al momento non è disponibile alcuna mitigazione. | 
  
  
    | Upgrade, aggiornamenti | 1,10 | L'upgrade del primo cluster utente dalla versione 1.9 alla 1.10 ricrea i nodi negli altri cluster utenteL'upgrade del primo cluster utente dalla versione 1.9 alla 1.10 potrebbe ricreare i nodi in altri cluster utente nello stesso cluster di amministrazione. La ricreazione viene eseguita in modo continuo. disk_labelè stato rimosso daMachineTemplate.spec.template.spec.providerSpec.machineVariables, il che ha attivato un aggiornamento imprevisto su tutti iMachineDeployment.
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativa | 
  
  
    | Upgrade, aggiornamenti | 1.10.0 | Docker si riavvia di frequente dopo l'upgrade del clusterL'upgrade del cluster utente alla versione 1.10.0 potrebbe causare riavvii frequenti di Docker. Puoi rilevare questo problema eseguendo kubectl describe node NODE_NAME --kubeconfig USER_CLUSTER_KUBECONFIG Una condizione del nodo mostrerà se il riavvio di Docker è frequente. Ecco un output di esempio: Normal   FrequentDockerRestart    41m (x2 over 141m)     systemd-monitor  Node condition FrequentDockerRestart is now: True, reason: FrequentDockerRestart Per comprendere la causa principale, devi accedere tramite SSH al nodo che presenta il sintomo ed eseguire comandi come sudo journalctl --utc -u dockerosudo journalctl -x. 
 Soluzione temporanea: | 
  
  
    | Upgrade, aggiornamenti | 1.11, 1.12 | Componenti GMP autodeployati non conservati dopo l'upgrade alla versione 1.12Se utilizzi una versione di Google Distributed Cloud precedente alla 1.12 e hai configurato manualmente i componenti Prometheus gestito da Google (GMP) nello spazio dei nomi gmp-systemper il tuo cluster, i componenti non vengono conservati quando esegui l'upgrade alla versione 1.12.x. A partire dalla versione 1.12, i componenti GMP nello spazio dei nomi gmp-systeme le CRD sono gestiti dall'oggettostackdriver, con il flagenableGMPForApplicationsimpostato sufalseper impostazione predefinita. Se esegui il deployment manuale dei componenti GMP nello spazio dei nomi prima dell'upgrade alla versione 1.12, le risorse verranno eliminate dastackdriver. 
 Soluzione temporanea: | 
  
  
    | Operazione | 1.11, 1.12, 1.13.0 - 1.13.1 | Oggetti ClusterAPI mancanti nello scenario systemdello snapshot del clusterNello scenario system, lo snapshot del cluster non include risorse nello spazio dei nomidefault. Tuttavia, alcune risorse Kubernetes come gli oggetti Cluster API che si trovano in questo spazio dei nomi contengono informazioni di debug utili. Lo snapshot del cluster deve includerli.  
 Soluzione temporanea: Puoi eseguire manualmente i seguenti comandi per raccogliere le informazioni di debug. export KUBECONFIG=USER_CLUSTER_KUBECONFIG
kubectl get clusters.cluster.k8s.io -o yaml
kubectl get controlplanes.cluster.k8s.io -o yaml
kubectl get machineclasses.cluster.k8s.io -o yaml
kubectl get machinedeployments.cluster.k8s.io -o yaml
kubectl get machines.cluster.k8s.io -o yaml
kubectl get machinesets.cluster.k8s.io -o yaml
kubectl get services -o yaml
kubectl describe clusters.cluster.k8s.io
kubectl describe controlplanes.cluster.k8s.io
kubectl describe machineclasses.cluster.k8s.io
kubectl describe machinedeployments.cluster.k8s.io
kubectl describe machines.cluster.k8s.io
kubectl describe machinesets.cluster.k8s.io
kubectl describe servicesdove: USER_CLUSTER_KUBECONFIG è il file kubeconfig del cluster utente. | 
  
  
    | Upgrade, aggiornamenti | 1.11.0-1.11.4, 1.12.0-1.12.3, 1.13.0-1.13.1 | L'eliminazione del cluster utente è bloccata al drenaggio dei nodi per la configurazione di vSANQuando elimini, aggiorni o esegui l'upgrade di un cluster utente, lo svuotamento dei nodi potrebbe bloccarsi nei seguenti scenari: 
        Il cluster di amministrazione utilizza il driver CSI vSphere su vSAN dalla versione 1.12.x eNon sono presenti oggetti PVC/PV creati dai plug-in vSphere in-tree nel cluster di amministrazione e nel cluster utente. Per identificare il sintomo, esegui il comando riportato di seguito: kubectl logs clusterapi-controllers-POD_NAME_SUFFIX  --kubeconfig ADMIN_KUBECONFIG -n USER_CLUSTER_NAMESPACE Ecco un esempio di messaggio di errore del comando precedente: E0920 20:27:43.086567 1 machine_controller.go:250] Error deleting machine object [MACHINE]; Failed to delete machine [MACHINE]: failed to detach disks from VM "[MACHINE]": failed to convert disk path "kubevols" to UUID path: failed to convert full path "ds:///vmfs/volumes/vsan:[UUID]/kubevols": ServerFaultCode: A general system error occurred: Invalid fault kubevolsè la directory predefinita per il driver in-tree di vSphere. Quando non vengono creati oggetti PVC/PV, potresti riscontrare un bug per cui lo svuotamento del nodo rimane bloccato alla ricerca dikubevols, poiché l'implementazione attuale presuppone chekubevolsesista sempre.
 
 Soluzione temporanea: Crea la directory kubevolsnel datastore in cui viene creato il nodo. Questo valore è definito nel campovCenter.datastoredei fileuser-cluster.yamloadmin-cluster.yaml. | 
    
  
    | Configurazione | 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14 | Cluster Autoscaler clusterrolebinding e clusterrole vengono eliminati dopo l'eliminazione di un cluster utente.
Quando viene eliminato un cluster utente, vengono eliminati anche clusterroleeclusterrolebindingcorrispondenti per il gestore della scalabilità automatica del cluster. Ciò influisce su tutti gli altri cluster utente nello stesso cluster di amministrazione con il gestore della scalabilità automatica dei cluster abilitato. Questo perché lo stesso clusterrole e clusterrolebinding vengono utilizzati per tutti i pod del gestore della scalabilità automatica del cluster all'interno dello stesso cluster di amministrazione. I sintomi sono i seguenti: 
        cluster-autoscalerlogkubectl logs --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n kube-system \
cluster-autoscalerdove ADMIN_CLUSTER_KUBECONFIG è il file kubeconfig del cluster di amministrazione.
        Ecco un esempio di messaggi di errore che potresti visualizzare: 2023-03-26T10:45:44.866600973Z W0326 10:45:44.866463       1 reflector.go:424] k8s.io/client-go/dynamic/dynamicinformer/informer.go:91: failed to list *unstructured.Unstructured: onpremuserclusters.onprem.cluster.gke.io is forbidden: User "..." cannot list resource "onpremuserclusters" in API group "onprem.cluster.gke.io" at the cluster scope
2023-03-26T10:45:44.866646815Z E0326 10:45:44.866494       1 reflector.go:140] k8s.io/client-go/dynamic/dynamicinformer/informer.go:91: Failed to watch *unstructured.Unstructured: failed to list *unstructured.Unstructured: onpremuserclusters.onprem.cluster.gke.io is forbidden: User "..." cannot list resource "onpremuserclusters" in API group "onprem.cluster.gke.io" at the cluster scope
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativa Verifica se clusterrole e clusterrolebinding non sono presenti nel cluster di amministrazione
 
kubectl get clusterrolebindings --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n kube-system | grep cluster-autoscaler
kubectl get clusterrole --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n kube-system | grep cluster-autoscaler Applica clusterrole e clusterrolebinding seguenti al cluster di amministrazione se mancano. Aggiungi i soggetti del account di servizio al clusterrolebinding per ogni cluster utente. 
  
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-autoscaler
rules:
- apiGroups: ["cluster.k8s.io"]
  resources: ["clusters"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["cluster.k8s.io"]
  resources: ["machinesets","machinedeployments", "machinedeployments/scale","machines"]
  verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups: ["onprem.cluster.gke.io"]
  resources: ["onpremuserclusters"]
  verbs: ["get", "list", "watch"]
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  resourceNames: ["cluster-autoscaler"]
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
- apiGroups:
  - ""
  resources:
  - nodes
  verbs: ["get", "list", "watch", "update", "patch"]
- apiGroups:
  - ""
  resources:
  - pods
  verbs: ["get", "list", "watch"]
- apiGroups:
  - ""
  resources:
  - pods/eviction
  verbs: ["create"]
# read-only access to cluster state
- apiGroups: [""]
  resources: ["services", "replicationcontrollers", "persistentvolumes", "persistentvolumeclaims"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["daemonsets", "replicasets"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["statefulsets"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["batch"]
  resources: ["jobs"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["policy"]
  resources: ["poddisruptionbudgets"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses", "csinodes"]
  verbs: ["get", "list", "watch"]
# misc access
- apiGroups: [""]
  resources: ["events"]
  verbs: ["create", "update", "patch"]
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create"]
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["cluster-autoscaler-status"]
  verbs: ["get", "update", "patch", "delete"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: cluster-autoscaler
  name: cluster-autoscaler
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-autoscaler
subjects:
  - kind: ServiceAccount
  name: cluster-autoscaler
  namespace:  NAMESPACE_OF_USER_CLUSTER_1 
  - kind: ServiceAccount
  name: cluster-autoscaler
  namespace:  NAMESPACE_OF_USER_CLUSTER_2 
  ... | 
  
  
    | Configurazione | 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13 | admin cluster cluster-health-controllerandvsphere-metrics-exporterdo not work after deleting user clusterQuando viene eliminato un cluster utente, viene eliminato anche il corrispondente clusterrole, il che comporta la mancata funzionalità di riparazione automatica e dell'esportatore di metriche vSphere I sintomi sono i seguenti: 
        cluster-health-controllerlogkubectl logs --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n kube-system \
cluster-health-controllerdove ADMIN_CLUSTER_KUBECONFIG è il file kubeconfig del cluster di amministrazione.
        Ecco un esempio di messaggi di errore che potresti visualizzare: error retrieving resource lock default/onprem-cluster-health-leader-election: configmaps "onprem-cluster-health-leader-election" is forbidden: User "system:serviceaccount:kube-system:cluster-health-controller" cannot get resource "configmaps" in API group "" in the namespace "default": RBAC: clusterrole.rbac.authorization.k8s.io "cluster-health-controller-role" not found
 vsphere-metrics-exporterlogkubectl logs --kubeconfig ADMIN_CLUSTER_KUBECONFIG -n kube-system \
vsphere-metrics-exporterdove ADMIN_CLUSTER_KUBECONFIG è il file kubeconfig del cluster di amministrazione.
        Ecco un esempio di messaggi di errore che potresti visualizzare: vsphere-metrics-exporter/cmd/vsphere-metrics-exporter/main.go:68: Failed to watch *v1alpha1.Cluster: failed to list *v1alpha1.Cluster: clusters.cluster.k8s.io is forbidden: User "system:serviceaccount:kube-system:vsphere-metrics-exporter" cannot list resource "clusters" in API group "cluster.k8s.io" in the namespace "default"
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaApplica il seguente file YAML al cluster di amministrazione 
Per vsphere-metrics-exporterkind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: vsphere-metrics-exporter
rules:
  - apiGroups:
      - cluster.k8s.io
    resources:
      - clusters
    verbs: [get, list, watch]
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs: [get, list, watch]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  labels:
    k8s-app: vsphere-metrics-exporter
  name: vsphere-metrics-exporter
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: vsphere-metrics-exporter
subjects:
  - kind: ServiceAccount
    name: vsphere-metrics-exporter
    namespace: kube-systemPer cluster-health-controllerapiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-health-controller-role
rules:
- apiGroups:
  - "*"
  resources:
  - "*"
  verbs:
  - "*" | 
  
  
    | Configurazione | 1.12.1-1.12.3, 1.13.0-1.13.2 | gkectl check-confignon riesce a convalidare l'immagine del sistema operativo
Un problema noto che potrebbe causare l'esito negativo di gkectl check-configsenza eseguiregkectl prepare. Questo è fuorviante perché suggeriamo di eseguire il comando prima di eseguiregkectl prepare Il sintomo è che il comando gkectl check-confignon andrà a buon fine e verrà visualizzato il seguente messaggio di errore: Validator result: {Status:FAILURE Reason:os images [OS_IMAGE_NAME] don't exist, please run `gkectl prepare` to upload os images. UnhealthyResources:[]}
 Soluzione temporanea: Opzione 1: esegui gkectl prepareper caricare le immagini del sistema operativo mancanti. Opzione 2: utilizza gkectl check-config --skip-validation-os-imagesper ignorare la convalida delle immagini del sistema operativo. | 
  
  
    | Upgrade, aggiornamenti | 1.11, 1.12, 1.13 | gkectl update admin/clusternon riesce ad aggiornare i gruppi anti-affinità
Un problema noto che potrebbe causare errori durante l'aggiornamento di anti affinity groups.gkectl update admin/cluster Il sintomo è che il comando gkectl updatenon andrà a buon fine e verrà visualizzato il seguente messaggio di errore: Waiting for machines to be re-deployed...  ERROR
Exit with error:
Failed to update the cluster: timed out waiting for the condition 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaAffinché l'aggiornamento abbia effetto, le macchine devono essere ricreate afterl'aggiornamento non riuscito. Per l'aggiornamento del cluster di amministrazione, è necessario ricreare i nodi master utente e del componente aggiuntivo di amministrazione Per l'aggiornamento del cluster utente, è necessario ricreare i nodi worker utente Per ricreare i nodi worker utenteOpzione 1Nella versione 1.11 della documentazione, segui le istruzioni per
      aggiornare un node pool e modificare la CPU o la memoria per attivare una ricreazione in sequenza dei nodi.
 Opzione 2: utilizza kubectl delete per ricreare le macchine una alla volta
 kubectl delete machines MACHINE_NAME --kubeconfig USER_KUBECONFIG Per ricreare i nodi master utenteOpzione 1Nella versione 1.11 della documentazione, segui le istruzioni per
      ridimensionare il control plane e modifica la CPU o la memoria per attivare una ricreazione in sequenza dei nodi.
 Opzione 2: utilizza kubectl delete per ricreare le macchine una alla volta
 kubectl delete machines MACHINE_NAME --kubeconfig ADMIN_KUBECONFIG Per ricreare i nodi dei componenti aggiuntivi amministrativiUtilizza kubectl delete per ricreare le macchine una alla volta kubectl delete machines MACHINE_NAME --kubeconfig ADMIN_KUBECONFIG | 
  
  
    | Installazione, upgrade, aggiornamenti | 1.13.0-1.13.8, 1.14.0-1.14.4, 1.15.0 | La registrazione dei nodi non riesce durante la creazione, l'upgrade e l'aggiornamento del cluster e
      la riparazione automatica dei nodi, quando ipMode.typeèstatice
      il nome host configurato nel
      file di blocco IP contiene uno
      o più punti. In questo caso, le richieste di firma del certificato (CSR) per un
      nodo non vengono approvate automaticamente. Per visualizzare le richieste CSR in attesa per un nodo, esegui questo comando: kubectl get csr -A -o wide Controlla i seguenti log per i messaggi di errore: 
        Visualizza i log nel cluster di amministrazione per il contenitore
        clusterapi-controller-managernel podclusterapi-controllers:kubectl logs clusterapi-controllers-POD_NAME \
    -c clusterapi-controller-manager -n kube-system \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIGPer visualizzare gli stessi log nel cluster utente, esegui questo comando:
kubectl logs clusterapi-controllers-POD_NAME \
    -c clusterapi-controller-manager -n USER_CLUSTER_NAME \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIGwhere:
          Ecco un esempio di messaggi di errore che potresti visualizzare:ADMIN_CLUSTER_KUBECONFIG è il file kubeconfig del cluster di amministrazione.USER_CLUSTER_NAME è il nome del cluster di utenti. "msg"="failed
        to validate token id" "error"="failed to find machine for node
        node-worker-vm-1" "validate"="csr-5jpx9"Visualizza i log di kubeletsul nodo problematico:journalctl --u kubeletEcco un esempio di messaggi di errore che potresti visualizzare: "Error getting
        node" err="node \"node-worker-vm-1\" not found" Se specifichi un nome di dominio nel campo del nome host di un file di blocco IP,
      tutti i caratteri successivi al primo punto verranno ignorati. Ad esempio, se
      specifichi il nome host come bob-vm-1.bank.plc, il nome host
      della VM e il nome del nodo verranno impostati subob-vm-1. Quando la verifica dell'ID nodo è abilitata, l'approvatore della CSR confronta il
      nome del nodo con il nome host nella specifica della macchina e non riesce a riconciliare
      il nome. L'approvatore rifiuta la CSR e il nodo non riesce
      a eseguire il bootstrap. 
 Soluzione temporanea: Cluster di utenti Disattiva la verifica dell'ID nodo completando i seguenti passaggi: 
        Aggiungi i seguenti campi nel file di configurazione del cluster utente:
disableNodeIDVerification: true
disableNodeIDVerificationCSRSigning: trueSalva il file e aggiorna il cluster utente eseguendo il comando
        seguente:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG_FILESostituisci quanto segue:
          ADMIN_CLUSTER_KUBECONFIG: il percorso
          del file kubeconfig del cluster di amministrazione.USER_CLUSTER_CONFIG_FILE: il percorso
          del file di configurazione del cluster utente. Cluster di amministrazione 
        Apri la risorsa personalizzata OnPremAdminClusterper
        la modifica:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    edit onpremadmincluster -n kube-systemAggiungi la seguente annotazione alla risorsa personalizzata:
features.onprem.cluster.gke.io/disable-node-id-verification: enabledModifica il manifest kube-controller-managernel control plane del cluster di amministrazione:
          Accedi tramite SSH al
          nodo del control plane del cluster di amministrazione.Apri il manifest kube-controller-managerper
          la modifica:sudo vi /etc/kubernetes/manifests/kube-controller-manager.yamlTrova l'elenco di controllers:--controllers=*,bootstrapsigner,tokencleaner,-csrapproving,-csrsigningAggiorna questa sezione come mostrato di seguito:
--controllers=*,bootstrapsigner,tokencleanerApri il controller API del cluster di deployment per la modifica:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    edit deployment clusterapi-controllers -n kube-systemModifica i valori di node-id-verification-enabledenode-id-verification-csr-signing-enabledinfalse:--node-id-verification-enabled=false
--node-id-verification-csr-signing-enabled=false | 
  | Installazione, upgrade, aggiornamenti | 1.11.0-1.11.4 | Errore di avvio della macchina del control plane amministrativo causato dal bundle di certificati del registro privatoLa creazione/l'upgrade del cluster di amministrazione è bloccata al seguente log per sempre
    e alla fine si verifica il timeout: 
Waiting for Machine gke-admin-master-xxxx to become ready...
 Nella versione 1.11 della documentazione, il log del controller dell'API Cluster
    nell'
    istantanea del cluster esterno include il seguente log: 
Invalid value 'XXXX' specified for property startup-data
 Di seguito è riportato un esempio di percorso file per il log del controller API cluster: kubectlCommands/kubectl_logs_clusterapi-controllers-c4fbb45f-6q6g6_--container_vsphere-controller-manager_--kubeconfig_.home.ubuntu..kube.kind-config-gkectl_--request-timeout_30s_--namespace_kube-system_--timestamps
    VMware has a 64k vApp property size limit. In the identified versions,
    the data passed via vApp property is close to the limit. When the private
    registry certificate contains a certificate bundle, it may cause the final
    data to exceed the 64k limit. 
 Workaround: Only include the required certificates in the private registry
    certificate file configured in privateRegistry.caCertPathin
    the admin cluster config file. Or upgrade to a version with the fix when available. | 
  
  
    | Networking | 1.10, 1.11.0-1.11.3, 1.12.0-1.12.2, 1.13.0 | NetworkGatewayNodesmarked unhealthy from concurrent
      status update conflict
In networkgatewaygroups.status.nodes, some nodes switch
      betweenNotHealthyandUp. Logs for the ang-daemonPod running on that node reveal
      repeated errors: 
2022-09-16T21:50:59.696Z ERROR ANGd Failed to report status {"angNode": "kube-system/my-node", "error": "updating Node CR status: sending Node CR update: Operation cannot be fulfilled on networkgatewaynodes.networking.gke.io \"my-node\": the object has been modified; please apply your changes to the latest version and try again"}
Lo stato NotHealthyimpedisce al controller di
      assegnare IP mobili aggiuntivi al nodo. Ciò può comportare un carico maggiore
      su altri nodi o una mancanza di ridondanza per l'alta disponibilità. L'attività del piano dati non è interessata. La contesa sull'oggetto networkgatewaygroupcausa il mancato aggiornamento di alcuni
      stati a causa di un errore nella gestione dei nuovi tentativi. Se troppi
      aggiornamenti di stato non vanno a buon fine,ang-controller-managerconsidera il nodo
      come scaduto il limite di tempo del battito cardiaco e lo contrassegna comeNotHealthy. Il problema nella gestione dei nuovi tentativi è stato risolto nelle versioni successive. 
 Soluzione temporanea: Esegui l'upgrade a una versione corretta, quando disponibile. | 
  
  
    | Upgrade, aggiornamenti | 1.12.0-1.12.2, 1.13.0 | La condizione di competizione blocca l'eliminazione dell'oggetto macchina durante un aggiornamento o
      un upgradeUn problema noto che potrebbe causare il blocco dell'upgrade o dell'aggiornamento del cluster
      in attesa dell'eliminazione del vecchio oggetto macchina. Questo perché
      il finalizer non può essere rimosso dall'oggetto macchina. Ciò influisce su qualsiasi
      operazione di aggiornamento in sequenza per i node pool. Il sintomo è che il comando gkectlva in timeout con il seguente messaggio di errore: 
E0821 18:28:02.546121   61942 console.go:87] Exit with error:
E0821 18:28:02.546184   61942 console.go:87] error: timed out waiting for the condition, message: Node pool "pool-1" is not ready: ready condition is not true: CreateOrUpdateNodePool: 1/3 replicas are updated
Check the status of OnPremUserCluster 'cluster-1-gke-onprem-mgmt/cluster-1' and the logs of pod 'kube-system/onprem-user-cluster-controller' for more detailed debugging information.
 Nei log dei pod clusterapi-controller, gli errori sono simili a
      quelli riportati di seguito: 
$ kubectl logs clusterapi-controllers-[POD_NAME_SUFFIX] -n cluster-1
    -c vsphere-controller-manager --kubeconfig [ADMIN_KUBECONFIG]
    | grep "Error removing finalizer from machine object"
[...]
E0821 23:19:45.114993       1 machine_controller.go:269] Error removing finalizer from machine object cluster-1-pool-7cbc496597-t5d5p; Operation cannot be fulfilled on machines.cluster.k8s.io "cluster-1-pool-7cbc496597-t5d5p": the object has been modified; please apply your changes to the latest version and try again
L'errore si ripete per la stessa macchina per diversi minuti per
      le esecuzioni riuscite anche senza questo problema. Per la maggior parte del tempo, l'errore può
      essere risolto rapidamente, ma in alcuni rari casi può rimanere bloccato in questa condizione di
      competizione per diverse ore. Il problema è che la VM sottostante è già stata eliminata in vCenter, ma
      l'oggetto macchina corrispondente non può essere rimosso, che è bloccato nella
      rimozione del finalizzatore a causa di aggiornamenti molto frequenti da altri controller.
      Ciò può causare il timeout del comando gkectl, ma il
      controller continua a riconciliare il cluster, quindi il processo di upgrade o aggiornamento
      alla fine viene completato. 
 Soluzione temporanea: Abbiamo preparato diverse opzioni di mitigazione per questo problema,
      a seconda dell'ambiente e dei requisiti. 
        Opzione 1: attendi il completamento dell'upgrade.
 In base all'analisi e alla riproduzione nel tuo ambiente, l'upgrade
        può essere completato automaticamente senza alcun intervento manuale. L'avvertenza
di questa opzione è che non è certo quanto tempo ci vorrà
per l'eliminazione del finalizzatore per ogni oggetto macchina. Se hai fortuna, può essere completato
        immediatamente, altrimenti potrebbe durare diverse ore
        se la riconciliazione del controller del set di macchine è troppo veloce e il controller
        della macchina non ha mai la possibilità di rimuovere il finalizer tra le
        riconciliazioni.
 
 Il vantaggio è che questa opzione non richiede alcun intervento da parte tua e i carichi di lavoro non verranno interrotti. È necessario più tempo
        per completare l'upgrade.
Opzione 2: applica l'annotazione di riparazione automatica a tutti gli oggetti macchina precedenti.
 Il controller del set di macchine filtrerà le macchine con l'annotazione di riparazione automatica e il timestamp di eliminazione diverso da zero e non continuerà a emettere chiamate di eliminazione su queste macchine, il che può contribuire a evitare la race condition.
 
 Lo svantaggio è che i pod sulle macchine verranno eliminati direttamente
        anziché espulsi, il che significa che non rispetteranno la configurazione PDB,
        e questo potrebbe potenzialmente causare tempi di inattività per i tuoi carichi di lavoro.
 
 Il comando per ottenere tutti i nomi delle macchine:
 kubectl --kubeconfig CLUSTER_KUBECONFIG get machinesIl comando per applicare l'annotazione di riparazione automatica per ogni macchina: kubectl annotate --kubeconfig CLUSTER_KUBECONFIG \
    machine MACHINE_NAME \
    onprem.cluster.gke.io/repair-machine=true Se riscontri questo problema e l'upgrade o l'aggiornamento non
      riesce ancora a completarsi dopo molto tempo,
      contatta
      il nostro team di assistenza per soluzioni. | 
  
  
    | Installazione, upgrade, aggiornamenti | 1.10.2, 1.11, 1.12, 1.13 | gkectlprepare OS image validation preflight failure
Il comando gkectl preparenon è riuscito con: 
- Validation Category: OS Images
    - [FAILURE] Admin cluster OS images exist: os images [os_image_name] don't exist, please run `gkectl prepare` to upload os images.
I controlli preflight di gkectl prepareincludevano una
      convalida errata. 
 Soluzione temporanea: Esegui lo stesso comando con un flag aggiuntivo
      --skip-validation-os-images. | 
  
  
    | Installazione | 1.7, 1.8, 1.9, 1.10, 1.11, 1.12, 1.13 | L'URL vCenter con prefisso https://ohttp://potrebbe causare l'avvio del cluster non riuscitoLa creazione del cluster di amministrazione non è riuscita con il seguente errore: 
Exit with error:
Failed to create root cluster: unable to apply admin base bundle to external cluster: error: timed out waiting for the condition, message:
Failed to apply external bundle components: failed to apply bundle objects from admin-vsphere-credentials-secret 1.x.y-gke.z to cluster external: Secret "vsphere-dynamic-credentials" is invalid:
[data[https://xxx.xxx.xxx.username]: Invalid value: "https://xxx.xxx.xxx.username": a valid config key must consist of alphanumeric characters, '-', '_' or '.'
(e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+'), data[https://xxx.xxx.xxx.password]:
Invalid value: "https://xxx.xxx.xxx.password": a valid config key must consist of alphanumeric characters, '-', '_' or '.'
(e.g. 'key.name', or 'KEY_NAME', or 'key-name', regex used for validation is '[-._a-zA-Z0-9]+')]
 L'URL viene utilizzato come parte di una chiave segreta, che non
      supporta "/" o ":". 
 Soluzione temporanea: Rimuovi il prefisso https://ohttp://dal campovCenter.Addressnel file YAML di configurazione del cluster di amministrazione o del cluster utente. | 
  
    | Installazione, upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | gkectl preparepanic onutil.CheckFileExists
gkectl preparepuò generare un errore irreversibile con la seguente
      stacktrace:
 
panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0xde0dfa]
goroutine 1 [running]:
gke-internal.googlesource.com/syllogi/cluster-management/pkg/util.CheckFileExists(0xc001602210, 0x2b, 0xc001602210, 0x2b) pkg/util/util.go:226 +0x9a
gke-internal.googlesource.com/syllogi/cluster-management/gkectl/pkg/config/util.SetCertsForPrivateRegistry(0xc000053d70, 0x10, 0xc000f06f00, 0x4b4, 0x1, 0xc00015b400)gkectl/pkg/config/util/utils.go:75 +0x85
...
 Il problema è che gkectl prepareha creato la directory dei certificati del registro privato con un'autorizzazione errata. 
 Soluzione temporanea: Per risolvere il problema, esegui i seguenti comandi sulla workstation di amministrazione: sudo mkdir -p /etc/docker/certs.d/PRIVATE_REGISTRY_ADDRESS
sudo chmod 0755 /etc/docker/certs.d/PRIVATE_REGISTRY_ADDRESS | 
  
    | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | gkectl repair admin-mastere l'upgrade amministratore ripristinabile non funzionano insieme
Dopo un tentativo di upgrade del cluster di amministrazione non riuscito, non eseguire gkectl
      repair admin-master. In questo modo, i successivi tentativi di upgrade dell'amministratore
      potrebbero non riuscire a causa di problemi quali l'accensione del master amministratore non riuscita o
      l'inaccessibilità della VM. 
 Soluzione temporanea: Se hai già riscontrato questo scenario di errore,
      contatta l'assistenza. | 
  
    | Upgrade, aggiornamenti | 1.10, 1.11 | La ripresa dell'upgrade del cluster di amministrazione può comportare la perdita del modello di VM del control plane di amministrazioneSe la macchina del control plane di amministrazione non viene ricreata dopo un tentativo di upgrade del cluster di amministrazione ripreso, il modello di VM del control plane di amministrazione viene eliminato. Il modello di VM del control plane di amministrazione è il modello del master di amministrazione utilizzato per recuperare la macchina del control plane con gkectl
      repair admin-master. 
 Soluzione temporanea: Il modello di VM del control plane di amministrazione verrà rigenerato durante il successivo
      upgrade del cluster di amministrazione. | 
  
    | Sistema operativo | 1.12, 1.13 | cgroup v2 potrebbe influire sui workloadNella versione 1.12.0, cgroup v2 (unificato) è abilitato per impostazione predefinita per i nodi Container-Optimized OS (COS). Ciò potrebbe potenzialmente causare
      instabilità per i tuoi workload in un cluster COS. 
 Soluzione temporanea: Nella versione 1.12.1 siamo tornati a cgroup v1 (ibrido). Se utilizzi
      nodi COS, ti consigliamo di eseguire l'upgrade alla versione 1.12.1 non appena
      viene rilasciata. | 
  
    | Identità | 1.10, 1.11, 1.12, 1.13 | Risorsa personalizzata ClientConfiggkectl updateannulla tutte le modifiche manuali apportate
      alla risorsa personalizzata ClientConfig.
 
 Soluzione temporanea: Ti consigliamo vivamente di eseguire il backup della risorsa ClientConfig dopo
      ogni modifica manuale. | 
  
    | Installazione | 1.10, 1.11, 1.12, 1.13 | La convalida di gkectl check-confignon riesce: impossibile trovare le partizioni F5
      BIG-IPLa convalida non riesce perché non è possibile trovare le partizioni F5 BIG-IP, anche
      se esistono. Un problema con l'API F5 BIG-IP può causare un errore di convalida. 
 Soluzione temporanea: Prova a eseguire di nuovo gkectl check-config. | 
  
    | Installazione | 1,12 | L'installazione del cluster utente non è riuscita a causa di un problema di selezione del leader di cert-manager/ca-injectorPotresti notare un errore di installazione a causa di
      cert-manager-cainjectorin crashloop, quando apiserver/etcd
      è lento: 
# These are logs from `cert-manager-cainjector`, from the command
# `kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-system
  cert-manager-cainjector-xxx`
I0923 16:19:27.911174       1 leaderelection.go:278] failed to renew lease kube-system/cert-manager-cainjector-leader-election: timed out waiting for the condition
E0923 16:19:27.911110       1 leaderelection.go:321] error retrieving resource lock kube-system/cert-manager-cainjector-leader-election-core:
  Get "https://10.96.0.1:443/api/v1/namespaces/kube-system/configmaps/cert-manager-cainjector-leader-election-core": context deadline exceeded
I0923 16:19:27.911593       1 leaderelection.go:278] failed to renew lease kube-system/cert-manager-cainjector-leader-election-core: timed out waiting for the condition
E0923 16:19:27.911629       1 start.go:163] cert-manager/ca-injector "msg"="error running core-only manager" "error"="leader election lost"
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaEsegui i seguenti comandi per risolvere il problema. Per prima cosa, fare lo scale down di monitoring-operatorin modo che non
        ripristini le modifiche al deploymentcert-manager: kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-system \
    scale deployment monitoring-operator --replicas=0Modifica il cert-manager-cainjectorDeployment per disattivare
        la selezione del leader, perché è in esecuzione una sola replica. Non è
        obbligatorio per una singola replica: # Add a command line flag for cainjector: `--leader-elect=false`
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \
    -n kube-system deployment cert-manager-cainjectorLo snippet YAML pertinente per il deployment di cert-manager-cainjectordovrebbe essere simile al seguente esempio: 
...
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cert-manager-cainjector
  namespace: kube-system
...
spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
      - name: cert-manager
        image: "gcr.io/gke-on-prem-staging/cert-manager-cainjector:v1.0.3-gke.0"
        args:
        ...
        - --leader-elect=false
...
Mantieni le repliche di monitoring-operatora 0 come mitigazione
        fino al termine dell'installazione. In caso contrario, la modifica verrà annullata. Al termine dell'installazione e dopo che il cluster è attivo e in esecuzione,
        attiva monitoring-operatorper le operazioni del secondo giorno: kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-system \
    scale deployment monitoring-operator --replicas=1Dopo ogni upgrade, le modifiche vengono annullate. Esegui di nuovo gli stessi
        passaggi per risolvere il problema finché non verrà corretto in una release
        futura. | 
  
    | VMware | 1.10, 1.11, 1.12, 1.13 | Riavvio o upgrade di vCenter per le versioni precedenti alla 7.0U2Se vCenter, per le versioni precedenti alla 7.0U2, viene riavviato dopo un
      upgrade o altro, il nome della rete nelle informazioni della VM di vCenter è
      errato e la macchina si trova in uno stato Unavailable. Ciò alla fine porta alla riparazione automatica dei nodi per crearne
      di nuovi. Related govmomi
      bug. 
 Soluzione temporanea: Questa soluzione alternativa è fornita dall'assistenza VMware: 
        Il problema è stato risolto nelle versioni 7.0U2 e successive di vCenter.Per le versioni precedenti, fai clic con il tasto destro del mouse sull'host e poi seleziona
        Connessione > Disconnetti. Quindi, riconnettiti, il che forza un aggiornamento
        del gruppo di porte della VM. | 
  
    | Sistema operativo | 1.10, 1.11, 1.12, 1.13 | La connessione SSH è stata chiusa dall'host remotoPer Google Distributed Cloud versione 1.7.2 e successive, le immagini del sistema operativo Ubuntu
      sono protette con il 
      benchmark del server CIS L1. Per soddisfare la regola CIS "5.2.16 Ensure SSH Idle Timeout Interval is
      configured", /etc/ssh/sshd_configha le seguenti
      impostazioni: 
ClientAliveInterval 300
ClientAliveCountMax 0
 Lo scopo di queste impostazioni è terminare una sessione client dopo 5
      minuti di inattività. Tuttavia, il valore ClientAliveCountMax 0causa un comportamento imprevisto. Quando utilizzi la sessione SSH sulla
      workstation amministrativa o su un nodo del cluster, la connessione SSH potrebbe essere
      interrotta anche se il client SSH non è inattivo, ad esempio quando esegui un
      comando che richiede molto tempo e il comando potrebbe essere terminato con il
      seguente messaggio: 
Connection to [IP] closed by remote host.
Connection to [IP] closed.
 
 Soluzione temporanea: Puoi: 
        Utilizza nohupper impedire la terminazione del comando in caso di disconnessione SSH.nohup gkectl upgrade admin --config admin-cluster.yaml \
    --kubeconfig kubeconfigAggiorna sshd_configper utilizzare un valoreClientAliveCountMaxdiverso da zero. La regola CIS consiglia di utilizzare
        un valore inferiore a 3:sudo sed -i 's/ClientAliveCountMax 0/ClientAliveCountMax 1/g' \
    /etc/ssh/sshd_config
sudo systemctl restart sshd Assicurati di riconnettere la sessione SSH. | 
  
    | Installazione | 1.10, 1.11, 1.12, 1.13 | Installazione di cert-managerin conflittoNelle release 1.13, monitoring-operatorinstallerà
      cert-manager nello spazio dei nomicert-manager. Se per determinati
      motivi devi installare il tuo cert-manager, segui le seguenti
      istruzioni per evitare conflitti: Devi applicare questa soluzione alternativa una sola volta per ogni cluster e le
      modifiche verranno mantenute durante l'upgrade del cluster.Nota: un sintomo comune dell'installazione di un proprio cert-manager
      è che la versione o l'immagine di cert-manager(ad esempio
      v1.7.2) potrebbe tornare alla versione precedente. Questo problema è causato damonitoring-operatorche tenta di riconciliarecert-managere ripristina la versione durante la procedura.
 Soluzione temporanea:<pEvitare conflitti durante l'upgrade 
        Disinstalla la tua versione di cert-manager. Se hai definito
        le tue risorse, ti consigliamo di
        eseguirne il backup
        .Esegui l'upgrade.Segui le istruzioni riportate di seguito per ripristinare il tuo
        cert-manager. Ripristinare il proprio cert-manager nei cluster utente 
        Scala il deployment monitoring-operatora 0:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    -n USER_CLUSTER_NAME \
    scale deployment monitoring-operator --replicas=0Scala i deployment di cert-managergestiti damonitoring-operatora 0:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    -n cert-manager scale deployment cert-manager --replicas=0
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    -n cert-manager scale deployment cert-manager-cainjector\
    --replicas=0
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    -n cert-manager scale deployment cert-manager-webhook --replicas=0Reinstalla la tua versione di cert-manager.
        Ripristina
        le risorse personalizzate, se le hai.Puoi saltare questo passaggio se utilizzi
        
        l'installazione predefinita upstream di cert-manager o se hai la certezza che
        cert-manager sia installato nello spazio dei nomi cert-manager.
        In caso contrario, copia le risorsemetrics-cacert-manager.io/v1
        Certificate emetrics-pki.cluster.localIssuer
        dacert-managerallo spazio dei nomi delle risorse del cluster
        di cert-manager installato.relevant_fields='
{
  apiVersion: .apiVersion,
  kind: .kind,
  metadata: {
    name: .metadata.name,
    namespace: "YOUR_INSTALLED_CERT_MANAGER_NAMESPACE"
  },
  spec: .spec
}
'
f1=$(mktemp)
f2=$(mktemp)
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    get issuer -n cert-manager metrics-pki.cluster.local -o json \
    | jq "${relevant_fields}" > $f1
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    get certificate -n cert-manager metrics-ca -o json \
    | jq "${relevant_fields}" > $f2
kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f $f1
kubectl apply --kubeconfig USER_CLUSTER_KUBECONFIG -f $f2 Ripristinare il proprio cert-manager nei cluster di amministrazione In generale, non è necessario reinstallare cert-manager nei cluster di amministrazione perché questi eseguono solo i carichi di lavoro del control plane di Google Distributed Cloud. Nei rari casi in cui devi installare anche il tuo
      cert-manager nei cluster di amministrazione, segui le istruzioni riportate di seguito
      per evitare conflitti. Tieni presente che se sei un cliente Apigee e
      hai bisogno di cert-manager solo per Apigee, non devi eseguire i comandi del cluster di amministrazione. 
        </pScala il deployment di monitoring-operatora 0.kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    -n kube-system scale deployment monitoring-operator --replicas=0Scala i deployment di cert-managergestiti damonitoring-operatora 0.kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    -n cert-manager scale deployment cert-manager \
    --replicas=0
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
     -n cert-manager scale deployment cert-manager-cainjector \
     --replicas=0
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    -n cert-manager scale deployment cert-manager-webhook \
    --replicas=0Reinstalla la tua versione di cert-manager.
        Ripristina
        le risorse personalizzate, se le hai.Puoi saltare questo passaggio se utilizzi
        
        l'installazione predefinita upstream di cert-manager o se hai la certezza che
        cert-manager sia installato nello spazio dei nomi cert-manager.
        In caso contrario, copia le risorsemetrics-cacert-manager.io/v1
        Certificate emetrics-pki.cluster.localIssuer
        dacert-managerallo spazio dei nomi delle risorse del cluster
        di cert-manager installato.relevant_fields='
{
  apiVersion: .apiVersion,
  kind: .kind,
  metadata: {
    name: .metadata.name,
    namespace: "YOUR_INSTALLED_CERT_MANAGER_NAMESPACE"
  },
  spec: .spec
}
'
f3=$(mktemp)
f4=$(mktemp)
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \n
    get issuer -n cert-manager metrics-pki.cluster.local -o json \
    | jq "${relevant_fields}" > $f3
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    get certificate -n cert-manager metrics-ca -o json \
    | jq "${relevant_fields}" > $f4
kubectl apply --kubeconfig ADMIN_CLUSTER_KUBECONFIG -f $f3
kubectl apply --kubeconfig ADMIN_CLUSTER_KUBECONFIG -f $f4 | 
  
    | Sistema operativo | 1.10, 1.11, 1.12, 1.13 | Falsi positivi nella analisi delle vulnerabilità di Docker, containerd e runc
      Docker, containerd e runc nelle immagini del sistema operativo Ubuntu fornite con
      Google Distributed Cloud sono bloccati su versioni speciali utilizzando
      Ubuntu PPA. In questo modo, prima di ogni release, Google Distributed Cloud verificherà
      che le modifiche al runtime del container siano qualificate. Tuttavia, le versioni speciali non sono note al
      tracker CVE di Ubuntu, che viene utilizzato come feed di vulnerabilità da vari strumenti di scansione CVE. Pertanto, vedrai falsi positivi nei risultati dell'analisi delle vulnerabilità di Docker,
      containerd e runc. Ad esempio, potresti visualizzare i seguenti falsi positivi dai risultati della scansione delle CVE. Queste CVE sono già state corrette nelle versioni
      patch più recenti di Google Distributed Cloud. Consulta le note di rilascio
      per eventuali correzioni di CVE. 
 Soluzione temporanea: Canonical è a conoscenza del problema e la correzione è monitorata all'indirizzo
      
      https://github.com/canonical/sec-cvescan/issues/73. | 
  
    | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | La connessione di rete tra il cluster di amministrazione e il cluster utente potrebbe non essere disponibile
      per un breve periodo di tempo durante l'upgrade del cluster non ad alta disponibilitàSe esegui l'upgrade dei cluster non HA dalla versione 1.9 alla 1.10, potresti notare
      che kubectl exec,kubectl loge il webhook
      rispetto ai cluster utente potrebbero non essere disponibili per un breve periodo di tempo. Questo tempo di inattività
      può durare fino a un minuto. Ciò accade perché la richiesta in entrata
      (kubectl exec, kubectl log e webhook) viene gestita da kube-apiserver per
      il cluster utente. kube-apiserver utente è un
      
      Statefulset. In un cluster non HA, esiste una sola replica per
      Statefulset. Pertanto, durante l'upgrade, è possibile che il vecchio kube-apiserver non sia disponibile mentre il nuovo kube-apiserver non è ancora pronto. 
 Soluzione temporanea: Questo tempo di inattività si verifica solo durante la procedura di upgrade. Se vuoi un
      tempo di inattività più breve durante l'upgrade, ti consigliamo di passare ai
      cluster HA. | 
  
    | Installazione, upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | Il controllo di idoneità di Konnectivity non è riuscito nella diagnostica del cluster HA dopo
      la creazione o l'upgrade del clusterSe stai creando o eseguendo l'upgrade di un cluster HA e noti che il controllo di preparazione di konnectivity non è riuscito in cluster diagnose, nella maggior parte dei casi ciò non influirà sulla funzionalità di Google Distributed Cloud (kubectl exec, kubectl log e webhook). Ciò accade perché a volte una o due repliche di
      konnectivity potrebbero non essere pronte per un periodo di tempo a causa di
      problemi di rete instabili o di altro tipo. 
 Soluzione temporanea: La connettività verrà ripristinata automaticamente. Attendi da 30 minuti a 1 ora
      e riesegui la diagnostica del cluster. | 
  
    | Sistema operativo | 1.7, 1.8, 1.9, 1.10, 1.11 | /etc/cron.daily/aideProblema di picco di CPU e memoria
A partire dalla versione 1.7.2 di Google Distributed Cloud, le immagini del sistema operativo Ubuntu
      sono protette con il
      benchmark CIS L1 Server. Di conseguenza, lo script cron /etc/cron.daily/aideè stato
      installato in modo che venga pianificato un controlloaideper garantire
      il rispetto della regola del server CIS L1 "1.4.2 Ensure filesystem integrity is
      regularly checked". Il cron job viene eseguito ogni giorno alle 06:25 UTC. A seconda del numero di
      file nel file system, potresti riscontrare picchi di utilizzo di CPU e memoria
      in quel periodo causati da questo processo aide. 
 Soluzione temporanea: Se i picchi influiscono sul tuo carico di lavoro, puoi disattivare il job cron giornaliero: sudo chmod -x /etc/cron.daily/aide | 
  
    | Networking | 1.10, 1.11, 1.12, 1.13 | I bilanciatori del carico e le regole firewall distribuite con stato NSX-T interagiscono in modo imprevedibileQuando esegui il deployment di Google Distributed Cloud versione 1.9 o successive, se il deployment ha il bilanciatore del carico in bundle Seesaw in un ambiente che utilizza regole firewall distribuite stateful NSX-T, stackdriver-operatorpotrebbe non riuscire a crearegke-metrics-agent-confConfigMap e causare un loop di arresto anomalo deigke-connect-agentpod. Il problema di fondo è che le regole del firewall distribuito stateful NSX-T
      terminano la connessione da un client al server API del cluster utente
      tramite il bilanciatore del carico Seesaw perché Seesaw utilizza flussi di connessione
      asimmetrici. I problemi di integrazione con le regole del firewall distribuito NSX-T
      riguardano tutte le release di Google Distributed Cloud che utilizzano Seesaw. Potresti
      riscontrare problemi di connessione simili nelle tue applicazioni quando
      creano oggetti Kubernetes di grandi dimensioni la cui dimensione è superiore a 32 K. 
 Soluzione temporanea: Nella versione 1.13 della documentazione, segui
      
      queste istruzioni per disattivare le regole firewall distribuite NSX-T o per
      utilizzare regole firewall distribuite stateless per le VM Seesaw. Se i tuoi cluster utilizzano un bilanciatore del carico manuale, segui
      
      queste istruzioni per configurare il bilanciatore del carico in modo che reimposti le connessioni client
      quando rileva un errore del nodo di backend. Senza questa
      configurazione, i client del server API Kubernetes potrebbero smettere di rispondere
      per diversi minuti quando un'istanza del server non funziona. | 
  
    | Logging e monitoraggio | 1.10, 1.11, 1.12, 1.13, 1.14, 1.15 | Fatturazione del monitoraggio imprevista  Per Google Distributed Cloud versioni da 1.10 a 1.15, alcuni clienti hanno
      riscontrato una fatturazione inaspettatamente elevata per Metrics volumenella
      pagina Fatturazione. Questo problema ti riguarda solo quando si verificano tutte le
      seguenti circostanze: 
        Logging e monitoraggio delle applicazioni sono abilitati (enableStackdriverForApplications=true)I pod dell'applicazione hanno l'annotazione prometheus.io/scrap=true. L'installazione di Cloud Service Mesh può anche aggiungere questa annotazione. Per verificare se il problema ti riguarda,
      elenca le
      metriche definite dall'utente. Se vedi la fatturazione per metriche indesiderate con il prefisso del nome external.googleapis.com/prometheuse vedi ancheenableStackdriverForApplicationsimpostato su true nella risposta dikubectl -n kube-system get stackdriver stackdriver -o yaml, allora
      questo problema ti riguarda. 
 Soluzione temporanea  Se il problema ti riguarda, ti consigliamo di eseguire l'upgrade dei cluster alla versione 1.12 o successive, di interrompere l'utilizzo del flag enableStackdriverForApplicationse di passare alla nuova soluzione di monitoraggio delle applicazioni managed-service-for-prometheus, che non si basa più sull'annotazioneprometheus.io/scrap=true. Con la nuova soluzione, puoi anche controllare la raccolta di log e metriche separatamente per le tue applicazioni, con i flagenableCloudLoggingForApplicationseenableGMPForApplications, rispettivamente.  Per non utilizzare più il flag enableStackdriverForApplications, apri l'oggetto `stackdriver` per la modifica: 
kubectl --kubeconfig=USER_CLUSTER_KUBECONFIG --namespace kube-system edit stackdriver stackdriver
  Rimuovi la riga enableStackdriverForApplications: true, salva e chiudi l'editor. Se non riesci a disattivare la raccolta delle metriche basata sulle annotazioni, segui questi passaggi: 
        Trova i pod e i servizi di origine che hanno le metriche fatturate indesiderate.
kubectl --kubeconfig KUBECONFIG \
  get pods -A -o yaml | grep 'prometheus.io/scrape: "true"'
kubectl --kubeconfig KUBECONFIG get \
  services -A -o yaml | grep 'prometheus.io/scrape: "true"'Rimuovi l'annotazione prometheus.io/scrap=truedal
        pod o dal servizio. Se l'annotazione viene aggiunta da Cloud Service Mesh, valuta la possibilità di
        configurare Cloud Service Mesh senza l'opzione Prometheus
        o disattivare la funzionalità di unione delle metriche Istio. | 
  
    | Installazione | 1.11, 1.12, 1.13 | Il programma di installazione non riesce a creare il disco dati vSphere
      Il programma di installazione di Google Distributed Cloud può non riuscire se i ruoli personalizzati sono associati
      al livello di autorizzazione errato. Quando l'associazione dei ruoli non è corretta, la creazione di un datadisk vSphere con
      govcsi blocca e il disco viene creato con una dimensione pari a 0. Per
      risolvere il problema, devi associare il ruolo personalizzato a livello di vSphere vCenter (root). 
 Soluzione temporanea: Se vuoi associare il ruolo personalizzato a livello di DC (o inferiore a
      root), devi anche associare il ruolo di sola lettura all'utente a livello di
      vCenter root. Per ulteriori informazioni sulla creazione dei ruoli, vedi
      
      Privilegi dell'account utente vCenter. | 
  
    | Logging e monitoraggio | 1.9.0-1.9.4, 1.10.0-1.10.1 | Traffico di rete elevato verso monitoring.googleapis.com
      Potresti notare un traffico di rete elevato verso
      monitoring.googleapis.com, anche in un nuovo cluster che non ha
      workload utente. Questo problema riguarda le versioni 1.10.0-1.10.1 e 1.9.0-1.9.4. Questo
      problema è stato risolto nelle versioni 1.10.2 e 1.9.5. 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaEsegui l'upgrade alla versione 1.10.2/1.9.5 o successive. Per risolvere il problema per una versione precedente: 
          Fai lo scale down di `stackdriver-operator`:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system \
    scale deployment stackdriver-operator --replicas=0Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.Apri ConfigMap gke-metrics-agent-confper la modifica:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system \
    edit configmap gke-metrics-agent-confAumenta l'intervallo di probing da 0,1 secondi a 13 secondi:
  processors:
    disk_buffer/metrics:
      backend_endpoint: https://monitoring.googleapis.com:443
      buffer_dir: /metrics-data/nsq-metrics-metrics
      probe_interval: 13s
      retention_size_mib: 6144
  disk_buffer/self:
      backend_endpoint: https://monitoring.googleapis.com:443
      buffer_dir: /metrics-data/nsq-metrics-self
      probe_interval: 13s
      retention_size_mib: 200
    disk_buffer/uptime:
      backend_endpoint: https://monitoring.googleapis.com:443
      buffer_dir: /metrics-data/nsq-metrics-uptime
      probe_interval: 13s
      retention_size_mib: 200Chiudi la sessione di modifica.Modifica la versione di gke-metrics-agentDaemonSet in
          1.1.0-anthos.8:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG  \
  --namespace kube-system  set image daemonset/gke-metrics-agent \
  gke-metrics-agent=gcr.io/gke-on-prem-release/gke-metrics-agent:1.1.0-anthos.8 | 
  
    | Logging e monitoraggio | 1.10, 1.11 | gke-metrics-agentpresenta frequenti errori CrashLoopBackOff
Per Google Distributed Cloud versione 1.10 e successive, il DaemonSet `gke-metrics-agent`
      presenta frequenti errori CrashLoopBackOff quando
      `enableStackdriverForApplications` è impostato su `true` nell'oggetto `stackdriver`. 
 Soluzione temporanea: Per mitigare il problema, disattiva la raccolta delle metriche dell'applicazione
      eseguendo i seguenti comandi. Questi comandi non disattivano
      la raccolta dei log delle applicazioni. 
        Per impedire l'annullamento delle seguenti modifiche, fare lo scale down
        stackdriver-operator:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system scale deploy stackdriver-operator \
    --replicas=0Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.Apri ConfigMap gke-metrics-agent-confper la modifica:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system edit configmap gke-metrics-agent-confIn services.pipelines, commenta l'intera sezionemetrics/app-metrics:services:
  pipelines:
    #metrics/app-metrics:
    #  exporters:
    #  - googlecloud/app-metrics
    #  processors:
    #  - resource
    #  - metric_to_resource
    #  - infer_resource
    #  - disk_buffer/app-metrics
    #  receivers:
    #  - prometheus/app-metrics
    metrics/metrics:
      exporters:
      - googlecloud/metrics
      processors:
      - resource
      - metric_to_resource
      - infer_resource
      - disk_buffer/metrics
      receivers:
      - prometheus/metricsChiudi la sessione di modifica.Riavvia il DaemonSet gke-metrics-agent:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system rollout restart daemonset gke-metrics-agent | 
  
    | Logging e monitoraggio | 1.11, 1.12, 1.13 | Sostituire le metriche ritirate nella dashboardSe le metriche ritirate vengono utilizzate nelle dashboard OOTB, vedrai
      alcuni grafici vuoti. Per trovare le metriche ritirate nelle dashboard di Monitoring, esegui questi comandi: gcloud monitoring dashboards list > all-dashboard.json
# find deprecated metrics
cat all-dashboard.json | grep -E \
  'kube_daemonset_updated_number_scheduled\
    |kube_node_status_allocatable_cpu_cores\
    |kube_node_status_allocatable_pods\
    |kube_node_status_capacity_cpu_cores'È necessario eseguire la migrazione delle seguenti metriche ritirate alle relative
      sostituzioni. 
        | Ritirato | Sostituzione | 
|---|
 
          | kube_daemonset_updated_number_scheduled | kube_daemonset_status_updated_number_scheduled |  
          | kube_node_status_allocatable_cpu_cores
 kube_node_status_allocatable_memory_bytes
 kube_node_status_allocatable_pods | kube_node_status_allocatable |  
          | kube_node_status_capacity_cpu_cores
 kube_node_status_capacity_memory_bytes
 kube_node_status_capacity_pods | kube_node_status_capacity |  
          | kube_hpa_status_current_replicas | kube_horizontalpodautoscaler_status_current_replicas |  
 Soluzione temporanea: Per sostituire le metriche ritirate 
        Elimina "Stato dei nodi GKE On-Prem" nella dashboard Google Cloud Monitoring. Reinstalla "Stato dei nodi GKE On-Prem" seguendo
        
        queste istruzioni.Elimina "Utilizzo dei nodi GKE On-Prem" nella dashboard Google Cloud Monitoring. Reinstalla "Utilizzo dei nodi GKE On-Prem" seguendo
        
        queste istruzioni.Elimina "GKE on-prem vSphere vm health" nella dashboard di monitoraggio di Google Cloud. Reinstalla "GKE on-prem vSphere vm health"
        seguendo
        
        queste istruzioni.Questo ritiro è dovuto all'upgrade dell'agente 
      kube-state-metrics dalla versione 1.9 alla versione 2.4, necessario per Kubernetes 1.22. Puoi sostituire tutte le metriche ritirate
      kube-state-metrics, che hanno il prefissokube_, nelle dashboard personalizzate o nelle norme di avviso. | 
  
    | Logging e monitoraggio | 1.10, 1.11, 1.12, 1.13 | Dati delle metriche sconosciuti in Cloud MonitoringPer Google Distributed Cloud versione 1.10 e successive, i dati per
      i cluster in Cloud Monitoring potrebbero contenere voci di metriche di riepilogo irrilevanti
      come le seguenti: 
Unknown metric: kubernetes.io/anthos/go_gc_duration_seconds_summary_percentile
 Altri tipi di metriche che potrebbero avere metriche di riepilogo non pertinenti
      includono: 
        apiserver_admission_step_admission_duration_seconds_summarygo_gc_duration_secondsscheduler_scheduling_duration_secondsgkeconnect_http_request_duration_seconds_summaryalertmanager_nflog_snapshot_duration_seconds_summary Sebbene queste metriche di tipo riepilogativo siano presenti nell'elenco delle metriche, al momento non sono
      supportate da gke-metrics-agent. | 
  
    | Logging e monitoraggio | 1.10, 1.11, 1.12, 1.13 | Metriche mancanti su alcuni nodiPotresti notare che le seguenti metriche non sono presenti in alcuni nodi, ma non in tutti: 
        kubernetes.io/anthos/container_memory_working_set_byteskubernetes.io/anthos/container_cpu_usage_seconds_totalkubernetes.io/anthos/container_network_receive_bytes_total 
 Soluzione temporanea: Per risolvere il problema, esegui i seguenti passaggi come soluzione alternativa. Per
      [versioni 1.9.5+, 1.10.2+, 1.11.0]:  aumenta la CPU per gke-metrics-agent
      seguendo i passaggi da 1 a 4 
        Apri la risorsa stackdriverper la modifica:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system edit stackdriver stackdriverPer aumentare la richiesta di CPU per gke-metrics-agentda10ma50m, il limite di CPU da100ma200maggiungi la seguente sezioneresourceAttrOverrideal manifeststackdriver:spec:
  resourceAttrOverride:
    gke-metrics-agent/gke-metrics-agent:
      limits:
        cpu: 100m
        memory: 4608Mi
      requests:
        cpu: 10m
        memory: 200MiLa risorsa modificata dovrebbe essere simile alla seguente:spec:
  anthosDistribution: on-prem
  clusterLocation: us-west1-a
  clusterName: my-cluster
  enableStackdriverForApplications: true
  gcpServiceAccountSecretName: ...
  optimizedMetrics: true
  portable: true
  projectID: my-project-191923
  proxyConfigSecretName: ...
  resourceAttrOverride:
    gke-metrics-agent/gke-metrics-agent:
      limits:
        cpu: 200m
        memory: 4608Mi
      requests:
        cpu: 50m
        memory: 200MiSalva le modifiche e chiudi l'editor di testo.Per verificare che le modifiche siano state applicate, esegui questo comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system get daemonset gke-metrics-agent -o yaml \
    | grep "cpu: 50m"Il comando trovacpu: 50mse le modifiche sono state applicate. | 
  
  
    | Logging e monitoraggio | 1.11.0-1.11.2, 1.12.0 |  Metriche di pianificazione e controller-manager mancanti nel cluster di amministrazione
      Se il cluster amministratore è interessato da questo problema, mancano le metriche dello scheduler e del controller-manager. Ad esempio, queste due metriche
      non sono presenti 
# scheduler metric example
scheduler_pending_pods
# controller-manager metric example
replicaset_controller_rate_limiter_use
 
 Soluzione temporanea: Esegui l'upgrade alla versione v1.11.3+, v1.12.1+ o v1.13+. | 
  
  
    |  | 1.11.0-1.11.2, 1.12.0 | Metriche di pianificazione e controller-manager mancanti nel cluster utente Se il tuo cluster utente è interessato da questo problema, mancano le metriche di scheduler e
      controller-manager. Ad esempio, mancano queste due metriche: 
# scheduler metric example
scheduler_pending_pods
# controller-manager metric example
replicaset_controller_rate_limiter_use
 
 Soluzione temporanea: Questo problema è stato risolto in Google Distributed Cloud versione 1.13.0 e successive.
      Esegui l'upgrade del cluster a una versione con la correzione. | 
  
    | Installazione, upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | Impossibile registrare il cluster amministratore durante la creazioneSe crei un cluster di amministrazione per la versione 1.9.x o 1.10.0 e se il
      cluster di amministrazione non riesce a registrarsi con la specifica gkeConnectfornita durante la creazione, viene visualizzato il seguente errore. 
Failed to create root cluster: failed to register admin cluster: failed to register cluster: failed to apply Hub Membership: Membership API request failed: rpc error:  ode = PermissionDenied desc = Permission 'gkehub.memberships.get' denied on PROJECT_PATH
 Potrai comunque utilizzare questo cluster di amministrazione, ma riceverai il seguente errore se in un secondo momento tenti di eseguire l'upgrade del cluster di amministrazione alla versione 1.10.y. 
failed to migrate to first admin trust chain: failed to parse current version "": invalid version: "" failed to migrate to first admin trust chain: failed to parse current version "": invalid version: ""
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaSe si verifica questo errore, segui questi passaggi per risolvere il problema di registrazione del cluster. Dopo aver eseguito questa correzione, puoi eseguire l'upgrade del cluster di amministrazione. 
          Esegui gkectl update adminper registrare il cluster di amministrazione
          con la chiave del account di servizio corretta.Crea un account di servizio dedicato per l'applicazione di patch alla risorsa personalizzata OnPremAdminCluster.export KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG
# Create Service Account modify-admin
kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
  name: modify-admin
  namespace: kube-system
EOF
# Create ClusterRole
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  name: modify-admin-role
rules:
- apiGroups:
  - "onprem.cluster.gke.io"
  resources:
  - "onpremadminclusters/status"
  verbs:
  - "patch"
EOF
# Create ClusterRoleBinding for binding the permissions to the modify-admin SA
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: null
  name: modify-admin-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: modify-admin-role
subjects:
- kind: ServiceAccount
  name: modify-admin
  namespace: kube-system
EOFSostituisci ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig
          del cluster di amministrazione.Esegui questi comandi per aggiornare la risorsa personalizzata OnPremAdminCluster.export KUBECONFIG=ADMIN_CLUSTER_KUBECONFIG
SERVICE_ACCOUNT=modify-admin
SECRET=$(kubectl get serviceaccount ${SERVICE_ACCOUNT} \
    -n kube-system -o json \
    | jq -Mr '.secrets[].name | select(contains("token"))')
TOKEN=$(kubectl get secret ${SECRET} -n kube-system -o json \
    | jq -Mr '.data.token' | base64 -d)
kubectl get secret ${SECRET} -n kube-system -o json \
    | jq -Mr '.data["ca.crt"]' \
    | base64 -d > /tmp/ca.crt
APISERVER=https://$(kubectl -n default get endpoints kubernetes \
    --no-headers | awk '{ print $2 }')
# Find out the admin cluster name and gkeOnPremVersion from the OnPremAdminCluster CR
ADMIN_CLUSTER_NAME=$(kubectl get onpremadmincluster -n kube-system \
    --no-headers | awk '{ print $1 }')
GKE_ON_PREM_VERSION=$(kubectl get onpremadmincluster \
    -n kube-system $ADMIN_CLUSTER_NAME \
    -o=jsonpath='{.spec.gkeOnPremVersion}')
# Create the Status field and set the gkeOnPremVersion in OnPremAdminCluster CR
curl -H "Accept: application/json" \
    --header "Authorization: Bearer $TOKEN" -XPATCH \
    -H "Content-Type: application/merge-patch+json" \
    --cacert /tmp/ca.crt \
    --data '{"status": {"gkeOnPremVersion": "'$GKE_ON_PREM_VERSION'"}}' \
    $APISERVER/apis/onprem.cluster.gke.io/v1alpha1/namespaces/kube-system/onpremadminclusters/$ADMIN_CLUSTER_NAME/statusProva a eseguire di nuovo l'upgrade del cluster di amministrazione con il
          flag --disable-upgrade-from-checkpoint.gkectl upgrade admin --config ADMIN_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --disable-upgrade-from-checkpointSostituisci ADMIN_CLUSTER_CONFIG con il percorso del file di configurazione del cluster di amministrazione. | 
  
    | Identità | 1.10, 1.11, 1.12, 1.13 | L'utilizzo di GKE Identity Service può causare il riavvio imprevedibile dell'agente Connect
      Se utilizzi la funzionalità GKE Identity Service per gestire 
      GKE Identity Service ClientConfig, 
      Connect Agent potrebbe riavviarsi in modo imprevisto. 
 Soluzione temporanea: Se hai riscontrato questo problema con un cluster esistente, puoi procedere in uno dei seguenti modi: 
        Disabilita GKE Identity Service. Se disabiliti
        GKE Identity Service, non verrà rimosso il binario
        GKE Identity Service di cui è stato eseguito il deployment
        o ClientConfig di GKE Identity Service. Per disabilitare
        GKE Identity Service, esegui questo comando:
gcloud container fleet identity-service disable \
    --project PROJECT_IDSostituisci PROJECT_ID con l'ID del progetto host del parco
        
        del cluster.Aggiorna il cluster alla versione 1.9.3 o successive oppure alla versione 1.10.1 o
        successive per eseguire l'upgrade della versione di Connect Agent. | 
  
    | Networking | 1.10, 1.11, 1.12, 1.13 | Cisco ACI non funziona con Direct Server Return (DSR)Seesaw viene eseguito in modalità DSR e per impostazione predefinita non funziona in Cisco ACI
      a causa dell'apprendimento IP del piano dati. 
 Soluzione temporanea: Una possibile soluzione alternativa è disattivare l'apprendimento IP aggiungendo l'indirizzo IP Seesaw come IP virtuale L4-L7 in Cisco Application Policy Infrastructure Controller (APIC). Puoi configurare l'opzione IP virtuale L4-L7 andando a Tenant >
      Application Profiles > Application EPGs o uSeg EPGs. Se l'apprendimento IP non viene disattivato, l'endpoint IP oscillerà tra diverse posizioni nel fabric API Cisco. | 
  
    | VMware | 1.10, 1.11, 1.12, 1.13 | Problemi relativi a vSphere 7.0 Update 3VMWare ha recentemente identificato problemi critici con le seguenti
      versioni di vSphere 7.0 Update 3: 
        vSphere ESXi 7.0 Update 3 (build 18644231)vSphere ESXi 7.0 Update 3a (build 18825058)vSphere ESXi 7.0 Update 3b (build 18905247)vSphere vCenter 7.0 Update 3b (build 18901211) 
 Soluzione temporanea: VMWare ha rimosso queste release. Devi eseguire l'upgrade dei
      ESXi e
      vCenter a una versione più recente. | 
  
    | Sistema operativo | 1.10, 1.11, 1.12, 1.13 | Impossibile montare il volume emptyDir come execnel pod in esecuzione
      sui nodi COSPer i pod in esecuzione su nodi che utilizzano immagini Container-Optimized OS (COS),
      non puoi montare il volume emptyDir come exec. Viene montato comenoexece riceverai il seguente errore:exec user
      process caused: permission denied. Ad esempio, visualizzerai questo
      messaggio di errore se esegui il deployment del seguente pod di test: 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: test
  name: test
spec:
  containers:
  - args:
    - sleep
    - "5000"
    image: gcr.io/google-containers/busybox:latest
    name: test
    volumeMounts:
      - name: test-volume
        mountPath: /test-volume
    resources:
      limits:
        cpu: 200m
        memory: 512Mi
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  volumes:
    - emptyDir: {}
      name: test-volume
Nel pod di test, se esegui mount | grep test-volume,
      viene visualizzata l'opzione noexec: 
/dev/sda1 on /test-volume type ext4 (rw,nosuid,nodev,noexec,relatime,commit=30)
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaApplica una risorsa DaemonSet, ad esempio: 
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fix-cos-noexec
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: fix-cos-noexec
  template:
    metadata:
      labels:
        app: fix-cos-noexec
    spec:
      hostIPC: true
      hostPID: true
      containers:
      - name: fix-cos-noexec
        image: ubuntu
        command: ["chroot", "/host", "bash", "-c"]
        args:
        - |
          set -ex
          while true; do
            if ! $(nsenter -a -t 1 findmnt -l | grep -qe "^/var/lib/kubelet\s"); then
              echo "remounting /var/lib/kubelet with exec"
              nsenter -a -t 1 mount --bind /var/lib/kubelet /var/lib/kubelet
              nsenter -a -t 1 mount -o remount,exec /var/lib/kubelet
            fi
            sleep 3600
          done
        volumeMounts:
        - name: host
          mountPath: /host
        securityContext:
          privileged: true
      volumes:
      - name: host
        hostPath:
          path: /
 | 
  
    | Upgrade, aggiornamenti | 1.10, 1.11, 1.12, 1.13 | L'aggiornamento delle repliche del pool di nodi del cluster non funziona dopo che la scalabilità automatica è stata
      disabilitata nel pool di nodiLe repliche del node pool non vengono aggiornate una volta che la scalabilità automatica è stata abilitata e
      disabilitata in unpool di nodil. 
 Soluzione temporanea: Rimozione delle annotazioni
      cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-sizeecluster.x-k8s.io/cluster-api-autoscaler-node-group-min-sizedal deployment della macchina del pool di nodi corrispondente. | 
  
    | Logging e monitoraggio | 1.11, 1.12, 1.13 | Le dashboard di monitoraggio di Windows mostrano i dati dei cluster LinuxA partire dalla versione 1.11, nelle dashboard di monitoraggio pronte all'uso, le dashboard
      Stato pod Windows e Stato nodo Windows mostrano anche
      i dati dei cluster Linux. Questo perché le metriche del nodo Windows e del pod
      vengono esposte anche sui cluster Linux. | 
    
  
    | Logging e monitoraggio | 1.10, 1.11, 1.12 | stackdriver-log-forwarderin CrashLoopBackOff costante
Per Google Distributed Cloud versione 1.10, 1.11 e 1.12, stackdriver-log-forwarderDaemonSet potrebbe presentare erroriCrashLoopBackOffquando sono presenti
      log bufferizzati danneggiati sul disco. 
 Soluzione temporanea: Per risolvere il problema, dobbiamo ripulire i log memorizzati nel buffer sul nodo. 
        Per evitare comportamenti imprevisti, fare lo scale down
        stackdriver-log-forwarder:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    -n kube-system patch daemonset stackdriver-log-forwarder -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}'Sostituisci USER_CLUSTER_KUBECONFIG con il percorso del file kubeconfig del cluster utente.Esegui il deployment del DaemonSet di pulizia per pulire i blocchi danneggiati:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    -n kube-system -f - << EOF
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluent-bit-cleanup
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: fluent-bit-cleanup
  template:
    metadata:
      labels:
        app: fluent-bit-cleanup
    spec:
      containers:
      - name: fluent-bit-cleanup
        image: debian:10-slim
        command: ["bash", "-c"]
        args:
        - |
          rm -rf /var/log/fluent-bit-buffers/
          echo "Fluent Bit local buffer is cleaned up."
          sleep 3600
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        securityContext:
          privileged: true
      tolerations:
      - key: "CriticalAddonsOnly"
        operator: "Exists"
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      - key: node-role.gke.io/observability
        effect: NoSchedule
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
EOFPer assicurarti che il DaemonSet di pulizia abbia ripulito tutti i blocchi,
        puoi eseguire i seguenti comandi. L'output dei due comandi
        deve essere uguale al numero del nodo nel cluster:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
  logs -n kube-system -l app=fluent-bit-cleanup | grep "cleaned up" | wc -l
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
  -n kube-system get pods -l app=fluent-bit-cleanup --no-headers | wc -lElimina il DaemonSet di pulizia:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
  -n kube-system delete ds fluent-bit-cleanupRiprendi stackdriver-log-forwarder:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
  -n kube-system patch daemonset stackdriver-log-forwarder --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]' | 
    
  
    | Logging e monitoraggio | 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16 | stackdriver-log-forwardernon invia log a Cloud Logging
Se non visualizzi i log in Cloud Logging dai tuoi cluster e noti il seguente errore nei log:
       2023-06-02T10:53:40.444017427Z [2023/06/02 10:53:40] [error] [input chunk] chunk 1-1685703077.747168499.flb would exceed total limit size in plugin stackdriver.0
2023-06-02T10:53:40.444028047Z [2023/06/02 10:53:40] [error] [input chunk] no available chunk
      È probabile che la velocità di input dei log superi il limite dell'agente di logging,
      il che impedisce astackdriver-log-forwarderdi inviare i log.
      Questo problema si verifica in tutte le versioni di Google Distributed Cloud.Soluzione alternativa: Per risolvere il problema, devi aumentare il limite delle risorse
      nell'agente di logging. 
        Apri la risorsa stackdriverper la modifica:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system edit stackdriver stackdriverPer aumentare la richiesta di CPU per stackdriver-log-forwarder, aggiungi la seguente sezioneresourceAttrOverrideal manifeststackdriver:spec:
  resourceAttrOverride:
    stackdriver-log-forwarder/stackdriver-log-forwarder:
      limits:
        cpu: 1200m
        memory: 600Mi
      requests:
        cpu: 600m
        memory: 600MiLa risorsa modificata dovrebbe essere simile alla seguente:spec:
  anthosDistribution: on-prem
  clusterLocation: us-west1-a
  clusterName: my-cluster
  enableStackdriverForApplications: true
  gcpServiceAccountSecretName: ...
  optimizedMetrics: true
  portable: true
  projectID: my-project-191923
  proxyConfigSecretName: ...
  resourceAttrOverride:
    stackdriver-log-forwarder/stackdriver-log-forwarder:
      limits:
        cpu: 1200m
        memory: 600Mi
      requests:
        cpu: 600m
        memory: 600MiSalva le modifiche e chiudi l'editor di testo.Per verificare che le modifiche siano state applicate, esegui questo comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    --namespace kube-system get daemonset stackdriver-log-forwarder -o yaml \
    | grep "cpu: 1200m"Il comando trovacpu: 1200mse le modifiche sono state applicate. | 
  
    | Sicurezza | 1,13 | Il servizio Kubelet non sarà temporaneamente disponibile dopo NodeReadyper un breve periodo il nodo è pronto, ma il certificato del server kubelet
      non è pronto. kubectl execekubectl logsnon sono disponibili durante questi secondi.
      Questo perché il nuovo approvatore del certificato del server impiega del tempo per
      visualizzare gli IP validi aggiornati del nodo. Questo problema riguarda solo il certificato del server kubelet e non influirà sulla pianificazione dei pod. | 
  
  
    | Upgrade, aggiornamenti | 1,12 | L'upgrade parziale del cluster di amministrazione non blocca l'upgrade successivo del cluster utenteL'upgrade del cluster utente non è riuscito con il seguente errore: 
.LBKind in body is required (Check the status of OnPremUserCluster 'cl-stg-gdl-gke-onprem-mgmt/cl-stg-gdl' and the logs of pod 'kube-system/onprem-user-cluster-controller' for more detailed debugging information.
 Il cluster di amministrazione non è stato completamente aggiornato e la versione di stato è ancora 1.10. L'upgrade del cluster utente alla versione 1.12 non verrà bloccato da alcun controllo preflight e non andrà a buon fine a causa di un problema di asimmetria di versione. 
 Soluzione temporanea: Completa l'upgrade del cluster di amministrazione alla versione 1.11, quindi esegui l'upgrade
      del cluster utente alla versione 1.12. | 
  
  
    | Archiviazione | 1.10.0-1.10.5, 1.11.0-1.11.2, 1.12.0 | Datastore segnala erroneamente spazio libero insufficienteIl comando gkectl diagnose clusternon è riuscito con: 
Checking VSphere Datastore FreeSpace...FAILURE
    Reason: vCenter datastore: [DATASTORE_NAME] insufficient FreeSpace, requires at least [NUMBER] GB
La convalida dello spazio libero del datastore non deve essere utilizzata per i node pool del cluster esistenti ed è stata aggiunta in gkectl diagnose clusterper errore. 
 Soluzione temporanea: Puoi ignorare il messaggio di errore o saltare la convalida utilizzando
      --skip-validation-infra. | 
  
    | Operazione, networking | 1.11, 1.12.0-1.12.1 | Potresti non riuscire ad aggiungere un nuovo cluster utente se il cluster di amministrazione è
      configurato con un bilanciamento del carico MetalLB. Il processo di eliminazione del cluster utente potrebbe bloccarsi per qualche motivo, il che
      comporta l'invalidazione di ConfigMap di MetalLB. Non sarà possibile
      aggiungere un nuovo cluster di utenti in questo stato. 
 Soluzione temporanea: Puoi 
      forzare l'eliminazione del cluster utente. | 
  
  
    | Installazione, Sistema operativo | 1.10, 1.11, 1.12, 1.13 | Errore durante l'utilizzo di Container-Optimized OS (COS) per il cluster utenteSe osImageTypeutilizzacosper il cluster di amministrazione e quandogkectl check-configviene eseguito dopo la creazione del cluster di amministrazione e prima della creazione del cluster utente, l'operazione non riesce su: 
Failed to create the test VMs: VM failed to get IP addresses on the network.
 La VM di test creata per il cluster utente check-configutilizza
      per impostazione predefinita lo stessoosImageTypedel cluster di amministrazione e
      attualmente la VM di test non è ancora compatibile con COS. 
 Soluzione temporanea: Per evitare il lento controllo preliminare che crea la VM di test, utilizza
      gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config
      USER_CLUSTER_CONFIG --fast. | 
  
    | Logging e monitoraggio | 1.12.0-1.12.1 | Grafana nel cluster di amministrazione non riesce a raggiungere i cluster utenteQuesto problema interessa i clienti che utilizzano Grafana nel cluster di amministrazione per monitorare i cluster utente nelle versioni 1.12.0 e 1.12.1 di Google Distributed Cloud. Deriva da una mancata corrispondenza dei certificati pushprox-client nei cluster utente e della lista consentita in pushprox-server nel cluster di amministrazione.
      Il sintomo è pushprox-client nei cluster utente che stampa log di errori come
      il seguente: 
level=error ts=2022-08-02T13:34:49.41999813Z caller=client.go:166 msg="Error reading request:" err="invalid method \"RBAC:\""
 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativasegui questi passaggi: 
          Ridimensiona il deployment di monitoring-operator nello spazio dei nomi kube-system del cluster di amministrazione.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --namespace kube-system scale deploy monitoring-operator \
    --replicas=0Modifica il ConfigMap pushprox-server-rbac-proxy-confignello spazio dei nomi kube-system del cluster di amministrazione.kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --namespace kube-system edit cm pushprox-server-rbac-proxy-configIndividua la rigaprincipalsper il
          listenerexternal-pushprox-server-auth-proxye correggiprincipal_nameper tutti i cluster utente rimuovendo la
          sottostringakube-systemdapushprox-client.metrics-consumers.kube-system.cluster.La nuova configurazione dovrebbe essere simile alla seguente:
permissions:
- or_rules:
    rules:
    - header: { name: ":path", exact_match: "/poll" }
    - header: { name: ":path", exact_match: "/push" }
principals: [{"authenticated":{"principal_name":{"exact":"pushprox-client.metrics-consumers.kube-system.cluster.local"}}},{"authenticated":{"principal_name":{"exact":"pushprox-client.metrics-consumers.kube-system.cluster."}}},{"authenticated":{"principal_name":{"exact":"pushprox-client.metrics-consumers.cluster."}}}]
Riavvia il deployment di pushprox-servernel cluster di amministrazione e il deployment dipushprox-clientnei cluster utente interessati:kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace kube-system rollout restart deploy pushprox-server
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG --namespace kube-system rollout restart deploy pushprox-clientI passaggi precedenti dovrebbero risolvere il problema. Una volta eseguito l'upgrade del cluster alla versione 1.12.2 e successive in cui il problema è stato risolto, aumenta lo scale up dell'operatore di monitoraggio kube-system del cluster di amministrazione in modo che possa gestire nuovamente la pipeline.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG --namespace kube-system scale deploy monitoring-operator --replicas=1 | 
  
  
    | Altro | 1.11.3 | gkectl repair admin-masternon fornisce il modello di VM da utilizzare per il ripristino
Il comando gkectl repair admin-masternon è riuscito con: 
Failed to repair: failed to select the template: no VM templates is available for repairing the admin master (check if the admin cluster version >= 1.4.0 or contact support
 gkectl repair admin-masternon è in grado di recuperare il modello di VM da utilizzare per la riparazione della VM del control plane di amministrazione se il nome della VM del control plane di amministrazione termina con i caratterit,m,pol.
 
 Soluzione temporanea: Esegui di nuovo il comando con --skip-validation. | 
  
    | Logging e monitoraggio | 1.11, 1.12, 1.13, 1.14, 1.15, 1.16 | Errore di audit logging di Cloud a causa dell'autorizzazione negata
      Cloud Audit Logs richiede una configurazione speciale delle autorizzazioni che
      attualmente viene eseguita automaticamente solo per i cluster utente tramite GKE Hub.
      È consigliabile avere almeno un cluster utente che utilizzi lo stesso
      ID progetto e lo stesso account di servizio del cluster di amministrazione per
      Cloud Audit Logs, in modo che il cluster di amministrazione disponga dell'autorizzazione
      richiesta. Tuttavia, nei casi in cui il cluster di amministrazione utilizza un ID progetto diverso o
      un account di servizio diverso da qualsiasi cluster utente, i log di controllo del cluster di amministrazione
      non verranno inseriti in Google Cloud. Il sintomo è una
      serie di errori Permission Deniednel
      podaudit-proxynel cluster di amministrazione. Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaPer risolvere il problema, l'autorizzazione può essere configurata interagendo con
        la funzionalità Hub di cloudauditlogging: 
          Per prima cosa, controlla gli account di servizio esistenti consentiti per
           Cloud Audit Logs nel tuo progetto:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://gkehub.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/features/cloudauditloggingA seconda della risposta, esegui una delle seguenti operazioni:
            
              Se hai ricevuto un errore 404 Not_found, significa che
              non è presente alcun account di servizio nella lista consentita per questo ID progetto. Puoi
              inserire nella lista consentita unaccount di serviziot attivando la
              funzionalità Hubcloudauditlogging:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://gkehub.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/features?feature_id=cloudauditlogging -d \
    '{"spec":{"cloudauditlogging":{"allowlistedServiceAccounts":["SERVICE_ACCOUNT_EMAIL"]}}}'Se hai ricevuto una specifica della funzionalità che contiene
              "lifecycleState": "ENABLED"con"code":
              "OK"e un elenco di service account inallowlistedServiceAccounts, significa che esistono
              service account consentiti per questo progetto. Puoi utilizzare un
              account di servizio di questo elenco nel tuo cluster o aggiungere un nuovo service
              account alla lista consentita:curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://gkehub.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/features/cloudauditlogging?update_mask=spec.cloudauditlogging.allowlistedServiceAccounts -d \
    '{"spec":{"cloudauditlogging":{"allowlistedServiceAccounts":["SERVICE_ACCOUNT_EMAIL"]}}}'Se hai ricevuto una specifica della funzionalità che contiene
              "lifecycleState": "ENABLED"con"code":
              "FAILED", significa che la configurazione dell'autorizzazione non è riuscita.
              Prova a risolvere i problemi nel campodescriptiondella
              risposta oppure esegui il backup della lista consentita attuale, elimina la
              funzionalità hub Cloud Audit Logging e riattivala seguendo di nuovo il passaggio 1 di
              questa sezione. Puoi eliminare la funzionalità
              dell'hubcloudauditlogging:curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    https://gkehub.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/features/cloudauditlogging Nei comandi riportati sopra: | 
  
    | Operazione, Sicurezza | 1,11 | gkectl diagnosecontrollo dei certificati non riuscito
Se la tua workstation non ha accesso ai nodi worker del cluster utente,
      si verificheranno i seguenti errori durante l'esecuzione di
      gkectl diagnose: 
Checking user cluster certificates...FAILURE
    Reason: 3 user cluster certificates error(s).
    Unhealthy Resources:
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
Se la tua workstation non ha accesso ai nodi worker del cluster di amministrazione
      o ai nodi worker del cluster di amministrazione, si verificheranno i seguenti errori durante
      l'esecuzione di gkectl diagnose: 
Checking admin cluster certificates...FAILURE
    Reason: 3 admin cluster certificates error(s).
    Unhealthy Resources:
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
    Node kubelet CA and certificate on node xxx: failed to verify kubelet certificate on node xxx: dial tcp xxx.xxx.xxx.xxx:10250: connect: connection timed out
 Soluzione temporanea: Puoi ignorare questi messaggi. | 
  
  
    | Sistema operativo | 1.8, 1.9, 1.10, 1.11, 1.12, 1.13 | /var/log/audit/che riempiono lo spazio su disco delle VM
/var/log/audit/è pieno di audit log. Puoi controllare
      l'utilizzo del disco eseguendosudo du -h -d 1 /var/log/audit.
 Alcuni comandi gkectlsulla workstation di amministrazione, ad esempiogkectl diagnose snapshot, contribuiscono all'utilizzo dello spazio su disco. A partire da Google Distributed Cloud v1.8, l'immagine Ubuntu è protetta con il benchmark CIS di livello 2. Una delle regole di conformità, "4.1.2.2 Ensure audit logs are
      not automatically deleted", garantisce l'impostazione auditd
      max_log_file_action = keep_logs. In questo modo, tutte le
      regole di controllo vengono conservate sul disco. 
 Soluzione temporanea: Visualizzare i passaggi della soluzione alternativaWorkstation di amministrazione Per la workstation amministrativa, puoi modificare manualmente le impostazioni di auditd
        per ruotare automaticamente i log, quindi riavviare il servizio
        auditd: sed -i 's/max_log_file_action = keep_logs/max_log_file_action = rotate/g' /etc/audit/auditd.conf
sed -i 's/num_logs = .*/num_logs = 250/g' /etc/audit/auditd.conf
systemctl restart auditd L'impostazione precedente fa sì che auditd ruoti automaticamente i log
        una volta generati più di 250 file (ciascuno di 8 MB). Nodi del cluster Per i nodi del cluster, esegui l'upgrade alla versione 1.11.5+, 1.12.4+, 1.13.2+ o 1.14+. Se
        non puoi ancora eseguire l'upgrade a queste versioni, applica il seguente DaemonSet al tuo cluster: apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: change-auditd-log-action
  namespace: kube-system
spec:
  selector:
    matchLabels:
      app: change-auditd-log-action
  template:
    metadata:
      labels:
        app: change-auditd-log-action
    spec:
      hostIPC: true
      hostPID: true
      containers:
      - name: update-audit-rule
        image: ubuntu
        command: ["chroot", "/host", "bash", "-c"]
        args:
        - |
          while true; do
            if $(grep -q "max_log_file_action = keep_logs" /etc/audit/auditd.conf); then
              echo "updating auditd max_log_file_action to rotate with a max of 250 files"
              sed -i 's/max_log_file_action = keep_logs/max_log_file_action = rotate/g' /etc/audit/auditd.conf
              sed -i 's/num_logs = .*/num_logs = 250/g' /etc/audit/auditd.conf
              echo "restarting auditd"
              systemctl restart auditd
            else
              echo "auditd setting is expected, skip update"
            fi
            sleep 600
          done
        volumeMounts:
        - name: host
          mountPath: /host
        securityContext:
          privileged: true
      volumes:
      - name: host
        hostPath:
          path: /Tieni presente che questa modifica alla configurazione di auditd violerebbe la regola CIS di livello 2 "4.1.2.2 Ensure audit logs are not automatically deleted". | 
  
  
    | Networking | 1.10, 1.11.0-1.11.3, 1.12.0-1.12.2, 1.13.0 | NetworkGatewayGroupL'IP mobile è in conflitto con l'indirizzo del nodo
Gli utenti non possono creare o aggiornare oggetti NetworkGatewayGroupa causa del seguente errore del webhook di convalida: 
[1] admission webhook "vnetworkgatewaygroup.kb.io" denied the request: NetworkGatewayGroup.networking.gke.io "default" is invalid: [Spec.FloatingIPs: Invalid value: "10.0.0.100": IP address conflicts with node address with name: "my-node-name"
 Nelle versioni interessate, kubelet può erroneamente eseguire il binding a un indirizzo IP mobile
      assegnato al nodo e segnalarlo come indirizzo del nodo in
      node.status.addresses. Il webhook di convalida controlla
      gli indirizzi IP mobiliNetworkGatewayGrouprispetto a tutti gli indirizzi IP mobilinode.status.addressesnel cluster e lo considera un
      conflitto. 
 Soluzione temporanea: Nello stesso cluster in cui la creazione o l'aggiornamento degli oggetti NetworkGatewayGroupnon va a buon fine, disattiva temporaneamente il webhook di convalida ANG e invia la modifica: 
        Salva la configurazione del webhook in modo che possa essere ripristinata alla fine:
kubectl -n kube-system get validatingwebhookconfiguration \
    ang-validating-webhook-configuration -o yaml > webhook-config.yamlModifica la configurazione del webhook:
kubectl -n kube-system edit validatingwebhookconfiguration \
    ang-validating-webhook-configurationRimuovi l'elemento vnetworkgatewaygroup.kb.iodall'elenco di configurazione dei webhook e chiudi per applicare le modifiche.Crea o modifica l'oggetto NetworkGatewayGroup.Applica di nuovo la configurazione webhook originale:
kubectl -n kube-system apply -f webhook-config.yaml | 
  
    | Installazione, upgrade, aggiornamenti | 1.10.0-1.10.2 | Timeout per la creazione o l'upgrade del cluster di amministrazioneDurante un tentativo di upgrade del cluster di amministrazione, la VM del piano di controllo di amministrazione
      potrebbe bloccarsi durante la creazione. La VM del control plane amministrativo entra in un
      ciclo di attesa infinito durante l'avvio e nel file /var/log/cloud-init-output.logviene visualizzato il seguente errore di ciclo infinito: 
+ echo 'waiting network configuration is applied'
waiting network configuration is applied
++ get-public-ip
+++ ip addr show dev ens192 scope global
+++ head -n 1
+++ grep -v 192.168.231.1
+++ grep -Eo 'inet ([0-9]{1,3}\.){3}[0-9]{1,3}'
+++ awk '{print $2}'
++ echo
+ '[' -n '' ']'
+ sleep 1
+ echo 'waiting network configuration is applied'
waiting network configuration is applied
++ get-public-ip
+++ ip addr show dev ens192 scope global
+++ grep -Eo 'inet ([0-9]{1,3}\.){3}[0-9]{1,3}'
+++ awk '{print $2}'
+++ grep -v 192.168.231.1
+++ head -n 1
++ echo
+ '[' -n '' ']'
+ sleep 1
Questo perché quando Google Distributed Cloud tenta di ottenere l'indirizzo IP del nodo nello script di avvio, utilizza grep -v
      ADMIN_CONTROL_PLANE_VIPper ignorare il VIP del control plane del cluster di amministrazione, che può essere assegnato anche alla NIC. Tuttavia, il comando ignora anche
      qualsiasi indirizzo IP con un prefisso del VIP del control plane, il che causa
      il blocco dello script di avvio. Ad esempio, supponiamo che il VIP del control plane del cluster di amministrazione sia
      192.168.1.25. Se l'indirizzo IP della VM del control plane del cluster di amministrazione ha
      lo stesso prefisso, ad esempio 192.168.1.254, la VM del control plane
      si bloccherà durante la creazione. Questo problema può verificarsi anche se l'indirizzo di trasmissione ha lo stesso prefisso del VIP del control plane, ad esempio 192.168.1.255. 
 Soluzione temporanea: 
        Se il motivo del timeout della creazione del cluster di amministrazione è dovuto all'indirizzo IP di broadcast, esegui questo comando sulla VM del control plane del cluster di amministrazione:
ip addr add ${ADMIN_CONTROL_PLANE_NODE_IP}/32 dev ens192In questo modo verrà creata una riga senza un indirizzo di trasmissione e verrà sbloccato
        il processo di avvio. Dopo aver sbloccato lo script di avvio, rimuovi questa
        riga aggiunta eseguendo questo comando:ip addr del ${ADMIN_CONTROL_PLANE_NODE_IP}/32 dev ens192Tuttavia, se il motivo del timeout della creazione del cluster di amministrazione è dovuto
        all'indirizzo IP della VM del control plane, non puoi sbloccare lo
        script di avvio. Passa a un indirizzo IP diverso e ricrea o
        esegui l'upgrade alla versione 1.10.3 o successive. | 
  
    | Sistema operativo, upgrade, aggiornamenti | 1.10.0-1.10.2 | Lo stato del cluster di amministrazione che utilizza l'immagine COS andrà perso in seguito all'upgrade del cluster di amministrazione o alla riparazione del master di amministrazioneDataDisk non può essere montato correttamente sul nodo master del cluster di amministrazione quando
      si utilizza l'immagine COS e lo stato del cluster di amministrazione che utilizza l'immagine COS andrà
      perso in seguito all'upgrade del cluster di amministrazione o alla riparazione del master di amministrazione. (il cluster di amministrazione
      che utilizza l'immagine COS è una funzionalità in anteprima) 
 Soluzione temporanea: Ricrea il cluster di amministrazione con osImageType impostato su ubuntu_containerd Dopo aver creato il cluster di amministrazione con osImageType impostato su cos, recupera
      la chiave SSH del cluster di amministrazione e connettiti tramite SSH al nodo master di amministrazione.
      df -hrisultato contiene/dev/sdb1        98G  209M   93G
      1% /opt/data. Il risultatolsblkcontiene-sdb1
      8:17   0  100G  0 part /opt/data | 
  
    | Sistema operativo | 1,10 | systemd-resolved non è riuscito a eseguire la ricerca DNS sui domini .localNella versione 1.10.0 di Google Distributed Cloud, le risoluzioni dei nomi su Ubuntu
      vengono indirizzate a systemd-resolved locale in ascolto su 127.0.0.53per impostazione predefinita. Il motivo è che nell'immagine Ubuntu 20.04 utilizzata nella versione
      1.10.0,/etc/resolv.confè collegato simbolicamente a/run/systemd/resolve/stub-resolv.conf, che rimanda allo
      stub DNS localhost127.0.0.53. Di conseguenza, la risoluzione dei nomi DNS localhost si rifiuta di controllare i server DNS upstream (specificati in /run/systemd/resolve/resolv.conf) per i nomi con suffisso.local, a meno che i nomi non siano specificati come domini di ricerca. In questo modo, tutte le ricerche di nomi .localnon vanno a buon fine. Ad esempio, durante l'avvio del nodo,kubeletnon riesce a eseguire il pull delle immagini da un registro privato con un suffisso.local. La specifica di un
      indirizzo vCenter con un suffisso.localnon funzionerà su una
      postazione di amministrazione. 
 Soluzione temporanea: Puoi evitare questo problema per i nodi del cluster se specifichi il
      campo searchDomainsForDNSnel file di configurazione del cluster di amministrazione e nel file di configurazione del cluster utente per includere i domini. Al momento gkectl updatenon supporta ancora l'aggiornamento del camposearchDomainsForDNS. Pertanto, se non hai configurato questo campo prima della creazione del cluster,
      devi accedere ai nodi tramite SSH e bypassare lo stub locale systemd-resolved
      modificando il link simbolico di /etc/resolv.confda/run/systemd/resolve/stub-resolv.conf(che contiene lo
      stub locale127.0.0.53) a/run/systemd/resolve/resolv.conf(che punta al DNS
      upstream effettivo): sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf Per quanto riguarda la workstation amministrativa, gkeadmnon supporta
      la specifica dei domini di ricerca, quindi è necessario aggirare questo problema con questo passaggio
      manuale. Questa soluzione non viene mantenuta nelle ricreazioni di VM. Devi
      applicare nuovamente questa soluzione alternativa ogni volta che le VM vengono ricreate. | 
  
    | Installazione, Sistema operativo | 1,10 | L'IP del bridge Docker utilizza 172.17.0.1/16anziché169.254.123.1/24Google Distributed Cloud specifica una subnet dedicata per l'indirizzo IP bridge Docker che utilizza --bip=169.254.123.1/24, in modo da non riservare la subnet172.17.0.1/16predefinita. Tuttavia,
      nella versione 1.10.0, è presente un bug nell'immagine sistema operativo Ubuntu che ha causato
      l'ignoramento della configurazione Docker personalizzata. Di conseguenza, Docker sceglie 172.17.0.1/16come
      subnet dell'indirizzo IP bridge. Ciò potrebbe causare un conflitto di indirizzi IP se
      hai già un carico di lavoro in esecuzione all'interno di questo intervallo di indirizzi IP. 
 Soluzione temporanea: Per risolvere questo problema, devi rinominare il seguente file di configurazione systemd
      per dockerd e poi riavviare il servizio: sudo mv /etc/systemd/system/docker.service.d/50-cloudimg-settings.cfg \
    /etc/systemd/system/docker.service.d/50-cloudimg-settings.conf
sudo systemctl daemon-reload
sudo systemctl restart dockerVerifica che Docker scelga l'indirizzo IP bridge corretto: ip a | grep docker0 Questa soluzione non viene mantenuta nelle ricreazioni di VM. Devi riapplicare
      questa soluzione alternativa ogni volta che le VM vengono ricreate. | 
  
  
    | Upgrade, aggiornamenti | 1,11 | L'upgrade alla versione 1.11 è bloccato dalla preparazione di StackdriverNella versione 1.11.0 di Google Distributed Cloud, sono state apportate modifiche alla definizione delle risorse personalizzate relative a logging e monitoraggio: 
        Il nome del gruppo della risorsa personalizzata stackdriverè cambiato daaddons.sigs.k8s.ioaaddons.gke.io.Il nome del gruppo delle risorse personalizzate monitoringemetricsserverè stato modificato daaddons.k8s.ioaaddons.gke.io.Le specifiche delle risorse precedenti iniziano a essere convalidate in base al relativo schema. In particolare, la specifica resourceAttrOverride e storageSizeOverride nella risorsa personalizzata stackdriverdeve avere il tipo di stringa nei valori delle richieste e dei limiti di CPU, memoria e dimensioni di archiviazione. Le modifiche al nome del gruppo vengono apportate in conformità agli aggiornamenti di CustomResourceDefinition in Kubernetes 1.22. Non è richiesta alcuna azione se non disponi di una logica aggiuntiva che si applica o modifica le risorse personalizzate interessate. La procedura di upgrade di Google Distributed Cloud si occuperà della migrazione delle risorse interessate e manterrà le specifiche esistenti dopo la modifica del nome del gruppo. Tuttavia, se esegui una logica che applica o modifica le risorse interessate, è necessaria un'attenzione particolare. Innanzitutto, devono essere referenziati con il nuovo nome del gruppo nel file manifest. Ad esempio: apiVersion: addons.gke.io/v1alpha1  ## instead of `addons.sigs.k8s.io/v1alpha1`
kind: Stackdriver In secondo luogo, assicurati che i valori delle specifiche resourceAttrOverrideestorageSizeOverridesiano di tipo stringa. Ad esempio: spec:
  resourceAttrOverride:
    stackdriver-log-forwarder/stackdriver-log-forwarder
      limits:
        cpu: 1000m # or "1"
        # cpu: 1 # integer value like this would not work
        memory: 3000MiIn caso contrario, le applicazioni e le modifiche non avranno effetto e potrebbero comportare uno stato imprevisto nei componenti di logging e monitoraggio. I potenziali sintomi possono includere: 
        Log degli errori di riconciliazione in onprem-user-cluster-controller, ad esempio:potential reconciliation error: Apply bundle components failed, requeue after 10s, error: failed to apply addon components: failed to apply bundle objects from stackdriver-operator-addon 1.11.2-gke.53 to cluster my-cluster: failed to create typed live object: .spec.resourceAttrOverride.stackdriver-log-forwarder/stackdriver-log-forwarder.limits.cpu: expected string, got &value.valueUnstructured{Value:1}Errore in kubectl edit stackdriver stackdriver, ad esempio:Error from server (NotFound): stackdrivers.addons.gke.io "stackdriver" not found Se si verificano gli errori sopra indicati, significa che prima dell'upgrade era già presente un tipo non supportato nella specifica CR di Stackdriver. Come soluzione alternativa, puoi modificare manualmente il CR di Stackdriver con il vecchio nome del gruppo kubectl edit stackdrivers.addons.sigs.k8s.io stackdrivere procedere nel seguente modo: 
        Quindi riprendi o riavvia la procedura di upgrade.Modifica le richieste e i limiti delle risorse in modo che siano di tipo stringa.Rimuovi eventuali annotazioni addons.gke.io/migrated-and-deprecated: true, se presenti. | 
  
  
    | Sistema operativo | 1.7 e versioni successive | Le VM COS non mostrano indirizzi IP quando vengono spostate tramite l'arresto forzato dell'host Ogni volta che si verifica un errore in un server ESXi e la funzionalità vCenter HA è stata abilitata per il server, tutte le VM nel server ESXi difettoso attivano il meccanismo vMotion e vengono spostate in un altro server ESXi normale. Le VM COS migrate perderebbero i propri indirizzi IP. Soluzione temporanea: Riavvia la VM | 
  
  
    | Networking | tutte le versioni precedenti a 1.14.7, 1.15.0-1.15.3, 1.16.0 | La risposta GARP inviata da Seesaw non imposta l'IP di destinazioneIl pacchetto GARP (Gratuitous ARP) periodico inviato da Seesaw ogni 20 secondi non imposta
l'IP di destinazione nell'intestazione ARP. Alcune reti potrebbero non accettare questi pacchetti (ad esempio Cisco ACI). Può causare tempi di inattività del servizio più lunghi dopo il ripristino di uno split brain (a causa dell'eliminazione dei pacchetti VRRP).  Soluzione temporanea: Attiva un failover di Seesaw eseguendo sudo seesaw -c failoversu una delle VM di Seesaw. In questo modo
il traffico dovrebbe essere ripristinato. | 
  
  
    | Sistema operativo | 1.16, 1.28.0-1.28.200 | Kubelet è inondato di log che indicano che "/etc/kubernetes/manifests" non esiste sui nodi worker"staticPodPath" è stato impostato erroneamente per i nodi worker Soluzione temporanea: Crea manualmente la cartella "/etc/kubernetes/manifests". |