排查 Distributed Cloud connected 问题

Google 会远程监控和维护 Google Distributed Cloud Connected 硬件。为此,Google 工程师拥有对 Distributed Cloud Connected 硬件的 Secure Shell (SSH) 访问权限。如果 Google 检测到问题,Google 工程师会与您联系,以便排查和解决问题。如果您自行发现了问题,请立即与 Google 支持团队联系,以便诊断和解决问题。

网络连接丢失

如果 Distributed Cloud connected 硬件与Google Cloud 的连接中断,并且在 120 秒内一直处于断开状态,Distributed Cloud connected 控制平面会将受影响的 Pod 标记为“未就绪”,并启动 Pod 驱逐。

为缓解此问题,您必须规划 Distributed Cloud connected 配置,并根据所选的可用性级别设计工作负载。如需了解详情,请参阅可用性最佳实践

VPN 连接使用的 Cloud Router 资源中的 BGP 会话损坏

分布式 Cloud VPN 连接依赖于由其对应的 Cloud Router 资源建立和管理的 BGP 会话,以在分布式 Cloud 连接的集群与 Google Cloud之间通告路由。如果您修改与分布式 Cloud VPN 连接关联的 Cloud Router 资源配置,该连接可能会停止运行。

如需恢复受影响的 Cloud Router 中的损坏 BGP 会话配置,请完成以下步骤:

  1. 在 Google Cloud 控制台中,获取损坏的 BGP 会话的名称。例如:

    INTERFACE=anthos-mcc-34987234
    
  2. 获取损坏的 BGP 会话的对等 BGP 和 Cloud Router BGP IP 地址,以及受影响的 Distributed Cloud VPN 连接使用的对等 ASN。例如:

    GDCE_BGP_IP=168.254.208.74
    CLOUD_ROUTER_BGP_IP=168.254.208.73
    PEER_ASN=65506
    

    如果您删除了 BGP 会话,请改为从分布式云连接集群获取此信息:

    1. 获取集群凭据:

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

      替换以下内容:

      • CLUSTER_ID:目标集群的名称。
      • REGION:目标集群所在的 Google Cloud 区域。
      • PROJECT_ID:目标 Google Cloud 项目的 ID。
    2. 获取 MultiClusterConnectivityConfig 资源的配置:

      kubectl get multiclusterconnectivityconfig -A
      

      该命令会返回类似于以下内容的输出:

       NAMESPACE     NAME                   LOCAL ASN              PEER ASN
       kube-system   MultiClusterConfig1    65505                   65506
       ```
      
    3. 获取对等 BGP IP 地址、Cloud Router IP 地址和 BGP 会话 ASN:

      kubectl describe multiclusterconnectivityconfig -n kube-system MCC_CONFIG_NAME   
      

      MCC_CONFIG_NAME 替换为您在上一步中获得的 MultiClusterConfigResource 的名称。

      该命令会返回类似于以下内容的输出:

       ​​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. 在 Google Cloud 控制台中,获取损坏的 VPN 隧道的名称、区域和Google Cloud 项目名称。例如:

    VPN_TUNNEL=VPNTunnel1
    REGION=US-East1
    VPC_PROJECT_ID=VPC-Project-1
    
  4. 从 Cloud Router 配置中删除损坏的 BGP 会话。

  5. 创建新的 Cloud Router 接口:

    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
    

    替换以下内容:

    • INTERFACE_NAME:唯一标识此接口的描述性名称。
    • TUNNEL_NAME:您在上一步中获得的 VPN 隧道的名称。
    • ROUTER_BGP_IP:您在本流程中之前获得的 Cloud Router 路由器的 BGP IP 地址。
    • VPC_PROJECT_ID:目标 VPCGoogle Cloud 项目的 ID。
    • REGION:已创建目标 VPC Google Cloud 项目的 Google Cloud 区域。
  6. 创建 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
    

    替换以下内容:

    • INTERFACE_NAME:您在上一步中创建的接口的名称。
    • TUNNEL_NAME:您在上一步中用于创建接口的 VPN 隧道的名称。
    • REGION:创建目标 VPC Google Cloud 项目的 Google Cloud 区域。
    • VPC_PROJECT_ID:目标 VPCGoogle Cloud 项目的 ID。
    • GDCE_BGP_IP:您在此过程前面部分中获得的 Distributed Cloud 对等方 BGP IP 地址。
    • GDCE_BGP_ASN:您在此过程前面部分中获得的 Distributed Cloud 对等 BGP ASN。

此时,BGP 会话已恢复并正常运行。

节点卡在 Ready,SchedulingDisabled 状态

应用或删除 NodeSystemConfigUpdateSriovNetworkNodePolicy 资源时,目标节点可能会重新启动。当节点重启时,其状态会更改为 NotReadyScheduling Disabled。如果节点保持 Ready,SchedulingDisabled 状态超过 30 分钟,请执行以下操作:

  1. 检查相应 NodeSystemConfigUpdateSriovNetworkNodePolicy 资源的配置和状态。如果 SriovNetworkNodePolicy 资源不存在,则表示节点不支持 SR-IOV。

  2. 如果资源状态为 Succeeded,请使用以下命令在节点上启用调度:

    kubectl uncordon NODE_NAME.
    

    NODE_NAME 替换为目标节点的名称。

  3. 如果问题仍然存在,请与 Google 支持团队联系。