Risolvi i problemi di Distributed Cloud connesso

Google monitora e gestisce da remoto l'hardware di Google Distributed Cloud connected. A questo scopo, gli ingegneri Google hanno accesso Secure Shell (SSH) all'hardware Distributed Cloud connesso. Se Google rileva un problema, un tecnico di Google ti contatta per risolverlo. Se hai identificato un problema, contatta immediatamente l'Assistenza Google per diagnosticarlo e risolverlo.

Connettività delle macchine di Distributed Cloud connected

Questa sezione descrive come controllare la connettività a internet e Google Cloud per le macchine connesse a Distributed Cloud utilizzando la funzionalità Metrics Explorer di Cloud Monitoring.

Questa procedura utilizza le seguenti metriche di monitoraggio:

  • Attrezzo connesso (/machine/connected): indica se l'attrezzo è connesso a Google Cloud.

  • Connettività di rete (/machine/network/connectivity): indica se l'interfaccia di rete principale della macchina ha connettività a internet.

Per completare i passaggi descritti in questa sezione, devi soddisfare i seguenti prerequisiti:

  1. Accesso alla console Google Cloud e al tuo progetto Distributed Cloud connesso Google Cloud .
  2. Il ruolo IAM Visualizzatore Monitoring, che consente di visualizzare le metriche di Monitoring.
  3. (Facoltativo) il valore machine_id della macchina Distributed Cloud connected di destinazione per filtrare i risultati restituiti.

Utilizza Metrics Explorer per convalidare la connettività della macchina

  1. Vai a Metrics Explorer:

    1. Nella console Google Cloud , vai alla sezione Monitoraggio.

    2. Nell'albero di navigazione a sinistra, fai clic su Esplora metriche.

  2. Seleziona il tipo di risorsa di destinazione:

    1. Nella pagina Metrics Explorer, vai alla pagina Query.

    2. Utilizza la barra di ricerca per cercare il tipo di risorsa Machine. Puoi anche utilizzare l'identificatore di risorsa completo edgecontainer.googleapis.com/Machine.

    3. Nei risultati restituiti, fai clic sul tipo di risorsa Macchina.

  3. Convalida la connessione della macchina a Google Cloud:

    1. Nella sezione Metrica, cerca il valore connected.

    2. Seleziona la metrica Macchina connessa. Il percorso completo è edgecontainer.googleapis.com/machine/connected.

    3. (Facoltativo) Filtra in base al valore machine_id di destinazione utilizzando la sezione Filtro.

    4. Nel grafico temporale visualizzato, verifica che la linea Integrità rimanga al 100% in modo continuo. Se in un determinato momento questo valore è 0% o Non integro, la macchina ha perso la connettività con Google Cloud all'ora indicata.

  4. Convalida la connettività a internet della macchina:

    1. Nella sezione Metrica, cerca il valore connectivity.

    2. Seleziona la metrica Connettività di rete. Il percorso completo è edgecontainer.googleapis.com/machine/network/connectivity.

    3. (Facoltativo) Filtra in base al valore machine_id di destinazione utilizzando la sezione Filtro.

    4. Nel grafico temporale visualizzato, verifica che la linea Integrità rimanga al 100% in modo continuo. Se in un determinato momento questo valore è 0% Non integro, la macchina ha perso la connettività a internet all'ora indicata.

Comprendere i risultati della convalida

La seguente tabella spiega i risultati restituiti da Metrics Explorer.

Stato della macchina Diagnosi Risoluzione
In buono stato
Il valore della metrica "Macchina connessa" è 1
Il valore della metrica "Connettività di rete" è 1
Funzionamento normale. Nessuno.
Disconnesso
Il valore della metrica "Macchina connessa" è 0
Il valore della metrica "Connettività di rete" è 1
La macchina ha la connettività a internet, ma non riesce a connettersi a Google Cloud. Controlla le [regole firewall](distributed-cloud/connected/1.11.0/docs/requirements#connected_management_and_monitoring_traffic) per i servizi Google e gli endpoint API. Verifica che gli agenti connessi a Distributed Cloud siano in esecuzione sulla macchina.
Isolato
Il valore della metrica "Macchina connessa" è 0
Il valore della metrica "Connettività di rete" è 0
La macchina non ha connettività a internet. Controlla i cavi di alimentazione e di rete, la configurazione della rete locale e lo stato del LED della macchina. Verifica la configurazione di VLAN e routing.
Intermittente
Il valore della metrica "Macchina connessa" alterna 0 e 1
Il valore della metrica "Connettività di rete" alterna 0 e 1
Connessione di rete instabile, perdita di pacchetti o latenza eccessiva. Controlla la rete locale per verificare la presenza di congestione e hardware difettoso.

Se noti valori costanti di 0 per una delle metriche, segui i passaggi per la risoluzione dei problemi descritti nella tabella per risolverli. Se il problema persiste, contatta l'Assistenza Google con il valore machine_id della macchina interessata e il timestamp dell'interruzione.

Sessioni BGP danneggiate nelle risorse del router Cloud utilizzate dalle connessioni VPN

Le connessioni Distributed Cloud VPN si basano su sessioni BGP stabilite e gestite dalle risorse router Cloud corrispondenti per annunciare le route tra il cluster connesso a Distributed Cloud e Google Cloud. Se modifichi la configurazione di una risorsa router Cloud associata a una connessione VPN Distributed Cloud, questa connessione potrebbe smettere di funzionare.

Per recuperare la configurazione della sessione BGP danneggiata nel router Cloud interessato, completa i seguenti passaggi:

  1. Nella console Google Cloud , recupera il nome della sessione BGP danneggiata. Ad esempio:

    INTERFACE=anthos-mcc-34987234
    
  2. Recupera gli indirizzi IP BGP peer e BGP del router Cloud per la sessione BGP danneggiata, nonché l'ASN peer utilizzato dalla connessione Distributed Cloud VPN interessata. Ad esempio:

    GDCE_BGP_IP=168.254.208.74
    CLOUD_ROUTER_BGP_IP=168.254.208.73
    PEER_ASN=65506
    

    Se hai eliminato la sessione BGP, recupera queste informazioni dal cluster Distributed Cloud connesso:

    1. Recupera le credenziali del cluster:

      gcloud edge-cloud container clusters get-credentials CLUSTER_ID \
        --location REGION \
        --project PROJECT_ID
      

      Sostituisci quanto segue:

      • CLUSTER_ID: il nome del cluster di destinazione.
      • REGION: la regione Google Cloud in cui viene creato il cluster di destinazione.
      • PROJECT_ID: l'ID del progetto Google Cloud di destinazione.
    2. Ottieni la configurazione della risorsa MultiClusterConnectivityConfig:

      kubectl get multiclusterconnectivityconfig -A
      

      Il comando restituisce un output simile al seguente:

       NAMESPACE     NAME                   LOCAL ASN              PEER ASN
       kube-system   MultiClusterConfig1    65505                   65506
       ```
      
    3. Recupera l'indirizzo IP BGP peer, l'indirizzo IP del router Cloud e l'ASN della sessione BGP:

      kubectl describe multiclusterconnectivityconfig -n kube-system MCC_CONFIG_NAME   
      

      Sostituisci MCC_CONFIG_NAME con il nome di MultiClusterConfigResource che hai ottenuto nel passaggio precedente.

      Il comando restituisce un output simile al seguente:

       ​​Spec:
       Asns:
         Peer:  65505
         Self:  65506 # GDCE ASN
       Tunnels:
         Ike Key:
           Name:       MCC_CONFIG_NAME-0
           Namespace:  kube-system
         Peer:
           Bgp IP:      169.254.208.73 # Cloud Router BGP IP
           Private IP:  34.157.98.148
           Public IP:   34.157.98.148
         Self:
           Bgp IP:      169.254.208.74 # GDCE BGP IP
           Private IP:  10.100.29.49
           Public IP:   208.117.254.68
       ```
      
  3. Nella console Google Cloud , recupera il nome, la regione e il nome del progettoGoogle Cloud per il tunnel VPN danneggiato. Ad esempio:

    VPN_TUNNEL=VPNTunnel1
    REGION=US-East1
    VPC_PROJECT_ID=VPC-Project-1
    
  4. Elimina la sessione BGP danneggiata dalla configurazione del router Cloud.

  5. Crea una nuova interfaccia del router Cloud:

    gcloud compute routers add-interface --interface-name=INTERFACE_NAME \
       --vpn-tunnel=TUNNEL_NAME \ 
       --ip-address=ROUTER_BGP_IP \
       --project=VPC_PROJECT_ID \
       --region=REGION \
       --mask-length=30
    

    Sostituisci quanto segue:

    • INTERFACE_NAME: un nome descrittivo che identifica in modo univoco questa interfaccia.
    • TUNNEL_NAME: il nome del tunnel VPN ottenuto nel passaggio precedente.
    • ROUTER_BGP_IP: l'indirizzo IP BGP del router Cloud che hai ottenuto in precedenza in questa procedura.
    • VPC_PROJECT_ID: l'ID del progettoGoogle Cloud VPC di destinazione.
    • REGION: la regione Google Cloud in cui è stato creato il progetto VPC di destinazione Google Cloud .
  6. Crea il peer BGP:

    gcloud compute routers add-bgp-peer --interface=INTERFACE_NAME \
       --peer-name=TUNNEL_NAME \
       --region REGION \
       --project=VPC_PROJECT_ID \
       --peer-ip-address=GDCE_BGP_IP \
       --peer-asn=GDCE_BGP_ASN \
       --advertised-route-priority=100 \
       --advertisement-mode=DEFAULT
    

    Sostituisci quanto segue:

    • INTERFACE_NAME: il nome dell'interfaccia creata nel passaggio precedente.
    • TUNNEL_NAME: il nome del tunnel VPN che hai utilizzato per creare l'interfaccia nel passaggio precedente.
    • REGION: la regione Google Cloud in cui viene creato il progetto VPC di destinazione Google Cloud .
    • VPC_PROJECT_ID: l'ID del progettoGoogle Cloud VPC di destinazione.
    • GDCE_BGP_IP: l'indirizzo IP BGP peer di Distributed Cloud che hai ottenuto in precedenza in questa procedura.
    • GDCE_BGP_ASN: l'ASN BGP peer di Distributed Cloud che hai ottenuto in precedenza in questa procedura.

A questo punto, la sessione BGP è di nuovo attiva e operativa.

Macchine virtuali bloccate nello stato Pending

Un workload della macchina virtuale può bloccarsi nello stato Pending e non essere pianificato su un nodo se si verifica uno dei seguenti scenari:

  • Distributed Cloud connesso non può allocare le risorse richieste, come tempo CPU, memoria o spazio su disco, alla macchina virtuale.
  • Si è verificato un errore nella configurazione della macchina virtuale.
  • Si è verificato un errore con l'archiviazione della macchina virtuale.
  • Il nodo di destinazione è compromesso.

Per risolvere il problema, segui questi passaggi:

  1. Ottieni le credenziali del cluster come descritto in Ottenere le credenziali per un cluster.

  2. Ottieni informazioni sulla macchina virtuale interessata:

    kubectl describe virtualmachine VM_NAME -n NAMESPACE
    

    Sostituisci quanto segue:

    • VM_NAME: il nome della macchina virtuale di destinazione.
    • NAMESPACE: lo spazio dei nomi della macchina virtuale di destinazione.

    Il comando restituisce un output simile al seguente:

    Status:
    ...
    State:                    Pending
    ...
    Events:
    Type     Reason                  Age   From                       Message
    ----     ------                  ----  ----                       -------
    Normal   SuccessfulCreate        15m   virtualmachine-controller  Created virtual machine my-stuck-vm
    Warning  DiskProvisioningFailed  14m   virtualmachine-controller  Failed to provision disk: DataVolume my-stuck-vm-data-disk not ready
    Warning  PVCNotBound             14m   virtualmachine-controller  PersistentVolumeClaim my-stuck-vm-data-disk is in phase Pending
    Warning  VMINotCreated           10m   virtualmachine-controller  VirtualMachineInstance cannot be created: dependencies not ready
    

    L'output del comando contiene messaggi che potrebbero indicare vincoli delle risorse, errori di pianificazione, guasti di archiviazione e altri problemi.

  3. Esamina l'output per determinare le cause dell'errore di pianificazione, come spiegato nelle sezioni successive.

Risorse insufficienti

Potresti visualizzare un messaggio che indica risorse insufficienti, ad esempio CPU, memoria o spazio su disco. Ad esempio:

5/8 nodes are available: 3 Insufficient memory, 3 Insufficient CPU.

Per risolvere il problema, controlla le risorse allocate alle macchine virtuali interessate e ad altri carichi di lavoro pianificati sul nodo, poi procedi nel seguente modo a seconda delle esigenze aziendali:

  • Ridimensiona altri workload pianificati sul nodo.
  • Riduci la quantità di risorse allocate alla macchina virtuale interessata.
  • Aggiungi altre macchine al cluster interessato.

Nodi con taint

Potresti visualizzare un messaggio che indica che il nodo di destinazione è compromesso. Ad esempio:

5/8 nodes are available: 3 node(s) had taint {<taint-key>:<taint-value>}, that the pod didn't tolerate.

Per risolvere il problema, procedi nel seguente modo:

  1. Utilizza il seguente comando per verificare la presenza di taint sul nodo:

    kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
    

    Il comando restituisce un output simile al seguente:

    NAME                           TAINTS
    node-name-1   [map[effect:PreferNoSchedule key:node-role.kubernetes.io/master] map[effect:PreferNoSchedule key:node-role.kubernetes.io/control-plane]]
    node-name-2   <none>
    
  2. Esegui una delle seguenti operazioni:

    • Per i taint imprevisti, rimuovili come descritto in Taint e tolleranze.
    • Per i taint previsti, aggiungi le tolleranze corrispondenti alla configurazione della macchina virtuale, come descritto in Taint e tolleranze.

Errori di archiviazione

Potresti visualizzare un messaggio che indica un errore con lo spazio di archiviazione della macchina virtuale. Ad esempio:

5/8 nodes are available: 3 node(s) had volume node affinity conflict, 3 node(s) had unbound immediate PersistentVolumeClaims.

Questo messaggio potrebbe indicare che il volume permanente corrispondente non viene montato sul nodo di destinazione.

Per risolvere il problema, procedi nel seguente modo:

  1. Utilizza il seguente comando per ottenere lo stato delle rivendicazioni di volumi permanenti (PVC) nello spazio dei nomi della macchina virtuale interessata:

    kubectl get pvc -n NAMESPACE
    

    Sostituisci NAMESPACE con il nome dello spazio dei nomi di destinazione.

    Il comando restituisce un output simile al seguente:

    NAME                                               STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS            AGE
    windows-robin-disk-0                               Bound     pvc-b1a1d264-84bf-4e58-857d-f37f629d5082   25Gi       RWX            robin-block-immediate   30h
    windows-robin-disk-1                               Bound     pvc-0130b9a8-7fed-4df0-8226-d79273792a16   25Gi       RWX            robin-block-immediate   30h
    windows-robin-vm-0-restored-windows-robin-disk-0   Pending                                                                        gce-pd-gkebackup-in     26m
    
  2. Verifica che il PVC corrispondente abbia lo stato Bound; se lo stato è Pending, il sottosistema di archiviazione non è riuscito a eseguire il provisioning del volume. In questi casi, devi risolvere i problemi relativi alla configurazione del sottosistema di archiviazione e assicurarti che sia disponibile l'StorageClass appropriato.