Soluciona problemas de Distributed Cloud conectado

Google supervisa y mantiene de forma remota el hardware de Google Distributed Cloud conectado. Para ello, los ingenieros de Google tienen acceso de Secure Shell (SSH) al hardware de Distributed Cloud conectado. Si Google detecta un problema, un ingeniero de Google se comunicará contigo para solucionarlo. Si identificaste un problema, comunícate de inmediato con el Atención al cliente de Google para diagnosticarlo y resolverlo.

Conectividad de máquinas de Distributed Cloud conectado

En esta sección, se describe cómo verificar la conectividad a Internet y de Google Cloud de tus máquinas conectadas a Distributed Cloud con la función Explorador de métricas de Cloud Monitoring.

En este procedimiento, se usan las siguientes métricas de Monitoring:

  • Machine Connected (/machine/connected): Indica si la máquina está conectada a Google Cloud.

  • Network Connectivity (/machine/network/connectivity): Indica si la interfaz de red principal de la máquina tiene conectividad a Internet.

Para completar los pasos de esta sección, debes cumplir con los siguientes requisitos previos:

  1. Acceso a la consola de Google Cloud y a tu proyecto de Distributed Cloud conectado Google Cloud
  2. El rol de IAM Visualizador de Monitoring, que te permite ver las métricas de Monitoring
  3. (Opcional) Es el valor de machine_id de la máquina conectada de Distributed Cloud de destino para filtrar los resultados devueltos.

Usa el Explorador de métricas para validar la conectividad de la máquina

  1. Navega al Explorador de métricas:

    1. En la consola de Google Cloud , navega a la sección Monitoring.

    2. En el árbol de navegación de la izquierda, haz clic en Explorador de métricas.

  2. Selecciona el tipo de recurso objetivo:

    1. En la página Explorador de métricas, navega a la página Consultas.

    2. Usa la barra de búsqueda para buscar el tipo de recurso Machine. También puedes usar el identificador de recurso completo edgecontainer.googleapis.com/Machine.

    3. En los resultados que se muestran, haz clic en el tipo de recurso Máquina.

  3. Valida la conexión de la máquina a Google Cloud:

    1. En la sección Métrica, busca el valor connected.

    2. Selecciona la métrica Máquina conectada. Su ruta de acceso completa es edgecontainer.googleapis.com/machine/connected.

    3. (Opcional) Filtra por el valor de machine_id objetivo con la sección Filtro.

    4. En el gráfico de tiempo que aparece, verifica que la línea En buen estado permanezca en el 100% de forma contigua. Si en algún momento este valor es del 0% o Unhealthy, la máquina perdió la conectividad con Google Cloud en el momento indicado.

  4. Valida la conectividad a Internet de la máquina:

    1. En la sección Métrica, busca el valor connectivity.

    2. Selecciona la métrica Network Connectivity. Su ruta de acceso completa es edgecontainer.googleapis.com/machine/network/connectivity.

    3. (Opcional) Filtra por el valor de machine_id objetivo con la sección Filtro.

    4. En el gráfico de tiempo que aparece, verifica que la línea En buen estado permanezca en el 100% de forma contigua. Si en algún momento este valor es 0% No saludable, significa que la máquina perdió la conectividad a Internet en el momento indicado.

Comprende los resultados de la validación

En la siguiente tabla, se explican los resultados que muestra el Explorador de métricas.

Estado de la máquina Diagnóstico Solución
En buen estado
El valor de la métrica "Máquina conectada" es 1
El valor de la métrica "Conectividad de red" es 1
Operación normal. Ninguno
Desconectado
El valor de la métrica "Máquina conectada" es 0
El valor de la métrica "Conectividad de red" es 1
La máquina tiene conectividad a Internet, pero no se puede conectar a Google Cloud. Verifica tus [reglas de firewall](distributed-cloud/connected/1.11.0/docs/requirements#connected_management_and_monitoring_traffic) para los servicios de Google y los extremos de la API. Verifica que los agentes conectados de Distributed Cloud se estén ejecutando en la máquina.
Aislado
El valor de la métrica "Máquina conectada" es 0
El valor de la métrica "Conectividad de red" es 0
La máquina no tiene conexión a Internet. Revisa los cables de alimentación y de red, la configuración de la red local y el estado de la luz LED de la máquina. Verifica la configuración de VLAN y de enrutamiento.
Intermitente
El valor de la métrica "Máquina conectada" alterna entre 0 y 1
El valor de la métrica "Conectividad de red" alterna entre 0 y 1
Conexión de red inestable, pérdida de paquetes o latencia excesiva Verifica si hay congestión y hardware defectuoso en tu red local.

Si observas valores sostenidos de 0 para cualquiera de las métricas, sigue los pasos para solucionar problemas que se describen en la tabla para resolverlos. Si el problema persiste, comunícate con Atención al cliente de Google y proporciona el valor de machine_id de la máquina afectada y la marca de tiempo de la interrupción.

Sesiones de BGP dañadas en los recursos de Cloud Router que usan las conexiones VPN

Las conexiones de VPN de Distributed Cloud dependen de las sesiones de BGP establecidas y administradas por sus recursos de Cloud Router correspondientes para anunciar rutas entre el clúster conectado de Distributed Cloud y Google Cloud. Si modificas la configuración de un recurso de Cloud Router asociado a una conexión de VPN de Distributed Cloud, es posible que esa conexión deje de funcionar.

Para recuperar la configuración dañada de la sesión de BGP en el Cloud Router afectado, completa los siguientes pasos:

  1. En la consola de Google Cloud , obtén el nombre de la sesión de BGP dañada. Por ejemplo:

    INTERFACE=anthos-mcc-34987234
    
  2. Obtén las direcciones IP de BGP del par y de Cloud Router para la sesión de BGP dañada, así como el ASN del par que usa la conexión de VPN de Distributed Cloud afectada. Por ejemplo:

    GDCE_BGP_IP=168.254.208.74
    CLOUD_ROUTER_BGP_IP=168.254.208.73
    PEER_ASN=65506
    

    Si borraste la sesión de BGP, obtén esta información del clúster conectado de Distributed Cloud:

    1. Obtén las credenciales del clúster:

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

      Reemplaza lo siguiente:

      • CLUSTER_ID: Es el nombre del clúster de destino.
      • REGION: Es la Google Cloud región en la que se crea el clúster de destino.
      • PROJECT_ID: Es el ID del proyecto Google Cloud de destino.
    2. Obtén la configuración del recurso MultiClusterConnectivityConfig:

      kubectl get multiclusterconnectivityconfig -A
      

      El comando muestra un resultado similar al siguiente:

       NAMESPACE     NAME                   LOCAL ASN              PEER ASN
       kube-system   MultiClusterConfig1    65505                   65506
       ```
      
    3. Obtén la dirección IP de BGP del par, la dirección IP de Cloud Router y el ASN de la sesión de BGP:

      kubectl describe multiclusterconnectivityconfig -n kube-system MCC_CONFIG_NAME   
      

      Reemplaza MCC_CONFIG_NAME por el nombre del MultiClusterConfigResource que obtuviste en el paso anterior.

      El comando muestra un resultado similar al siguiente:

       ​​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. En la consola de Google Cloud , obtén el nombre, la región y el nombre del proyectoGoogle Cloud del túnel VPN dañado. Por ejemplo:

    VPN_TUNNEL=VPNTunnel1
    REGION=US-East1
    VPC_PROJECT_ID=VPC-Project-1
    
  4. Borra la sesión de BGP dañada de la configuración del Cloud Router.

  5. Crea una interfaz de Cloud Router nueva:

    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
    

    Reemplaza lo siguiente:

    • INTERFACE_NAME: Es un nombre descriptivo que identifica de forma única esta interfaz.
    • TUNNEL_NAME: Es el nombre del túnel VPN que obtuviste en el paso anterior.
    • ROUTER_BGP_IP: Es la dirección IP de BGP del Cloud Router que obtuviste anteriormente en este procedimiento.
    • VPC_PROJECT_ID: Es el ID del proyecto deGoogle Cloud VPC de destino.
    • REGION: Es la Google Cloud región en la que se creó el proyecto Google Cloud de la VPC de destino.
  6. Crea el par de 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
    

    Reemplaza lo siguiente:

    • INTERFACE_NAME: El nombre de la interfaz que creaste en el paso anterior.
    • TUNNEL_NAME: Es el nombre del túnel de VPN que usaste para crear la interfaz en el paso anterior.
    • REGION: Es la Google Cloud región en la que se crea el proyecto Google Cloud de la VPC de destino.
    • VPC_PROJECT_ID: Es el ID del proyecto deGoogle Cloud VPC de destino.
    • GDCE_BGP_IP: Es la dirección IP de BGP del par de Distributed Cloud que obtuviste antes en este procedimiento.
    • GDCE_BGP_ASN: Es el ASN de BGP del par de Distributed Cloud que obtuviste anteriormente en este procedimiento.

En este punto, la sesión de BGP se restablece y está en funcionamiento.

Máquinas virtuales atascadas en el estado Pending

Una carga de trabajo de máquina virtual puede quedar atascada en el estado Pending y no programarse en un nodo si sucede una de las siguientes situaciones:

  • Distributed Cloud Connected no puede asignar los recursos solicitados, como tiempo de CPU, memoria o espacio en disco, a la máquina virtual.
  • Hay una falla en la configuración de la máquina virtual.
  • Hay una falla en el almacenamiento de la máquina virtual.
  • El nodo de destino está contaminado.

Para solucionar este problema, haz lo siguiente:

  1. Obtén credenciales del clúster como se describe en Cómo obtener credenciales para un clúster.

  2. Obtén información sobre la máquina virtual afectada:

    kubectl describe virtualmachine VM_NAME -n NAMESPACE
    

    Reemplaza lo siguiente:

    • VM_NAME: Es el nombre de la máquina virtual de destino.
    • NAMESPACE: Es el espacio de nombres de la máquina virtual de destino.

    El comando muestra un resultado similar al siguiente:

    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
    

    El resultado del comando contiene mensajes que pueden indicar limitaciones de recursos, fallas de programación, errores de almacenamiento y otros problemas.

  3. Examina el resultado para determinar las causas del error de programación, como se explica en las siguientes secciones.

Recursos insuficientes

Es posible que veas un mensaje que indica que no hay recursos suficientes, como CPU, memoria o espacio en disco. Por ejemplo:

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

Para solucionar este problema, verifica los recursos asignados a las máquinas virtuales afectadas y a otras cargas de trabajo programadas en el nodo. Luego, haz lo siguiente según tus necesidades comerciales:

  • Reducir la escala de otras cargas de trabajo programadas en el nodo
  • Reducir la cantidad de recursos asignados a la máquina virtual afectada
  • Agrega más máquinas al clúster afectado.

Nodos con taint

Es posible que veas un mensaje que indica que el nodo de destino está dañado. Por ejemplo:

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

Para solucionar este problema, haz lo siguiente:

  1. Usa el siguiente comando para verificar si hay taints en el nodo:

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

    El comando muestra un resultado similar al siguiente:

    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. Realiza una de las siguientes acciones:

    • En el caso de los taints inesperados, quítalos como se describe en Taints y tolerancias.
    • Para los taints esperados, agrega las tolerancias correspondientes a la configuración de la máquina virtual, como se describe en Taints y tolerancias.

Fallas de almacenamiento

Es posible que veas un mensaje que indica una falla en el almacenamiento de la máquina virtual. Por ejemplo:

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

Este mensaje puede indicar que el volumen persistente correspondiente no se puede activar en el nodo de destino.

Para solucionar este problema, haz lo siguiente:

  1. Usa el siguiente comando para obtener el estado de los reclamos de volúmenes persistentes (PVC) en el espacio de nombres de la máquina virtual afectada:

    kubectl get pvc -n NAMESPACE
    

    Reemplaza NAMESPACE por el nombre del espacio de nombres de destino.

    El comando muestra un resultado similar al siguiente:

    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 que el PVC correspondiente tenga el estado Bound. Si el estado es Pending, significa que el subsistema de almacenamiento no pudo aprovisionar el volumen. En esos casos, debes solucionar problemas relacionados con la configuración del subsistema de almacenamiento y asegurarte de que el StorageClass adecuado esté disponible.