Memecahkan masalah Distributed Cloud terhubung

Google memantau dan memelihara hardware Google Distributed Cloud terhubung dari jarak jauh. Untuk tujuan ini, engineer Google memiliki akses Secure Shell (SSH) ke hardware Distributed Cloud yang terhubung. Jika Google mendeteksi masalah, seorang engineer Google akan menghubungi Anda untuk memecahkan dan menyelesaikannya. Jika Anda telah mengidentifikasi masalah sendiri, segera hubungi Dukungan Google untuk mendiagnosis dan menyelesaikannya.

Konektivitas mesin Distributed Cloud terhubung

Bagian ini menjelaskan cara memeriksa konektivitas internet dan Google Cloud untuk mesin yang terhubung ke Distributed Cloud menggunakan fitur Metrics Explorer di Cloud Monitoring.

Prosedur ini menggunakan metrik Pemantauan berikut:

  • Mesin Terhubung (/machine/connected): menunjukkan apakah mesin terhubung ke Google Cloud.

  • Network Connectivity (/machine/network/connectivity): menunjukkan apakah antarmuka jaringan utama mesin memiliki konektivitas internet.

Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memenuhi prasyarat berikut:

  1. Akses ke konsol Google Cloud dan project yang terhubung ke Distributed Cloud Google Cloud Anda.
  2. Peran IAM Monitoring Viewer, yang memungkinkan Anda melihat metrik Monitoring.
  3. (Opsional) Nilai machine_id dari target mesin yang terhubung ke Distributed Cloud untuk memfilter hasil yang ditampilkan.

Menggunakan Metrics Explorer untuk memvalidasi konektivitas mesin

  1. Buka Metrics Explorer:

    1. Di konsol Google Cloud , buka bagian Monitoring.

    2. Di hierarki navigasi sebelah kiri, klik Metrics Explorer.

  2. Pilih jenis resource target:

    1. Di halaman Metrics Explorer, buka halaman Queries.

    2. Gunakan kotak penelusuran untuk menelusuri jenis resource Machine. Anda juga dapat menggunakan ID resource lengkap edgecontainer.googleapis.com/Machine.

    3. Di hasil yang ditampilkan, klik jenis resource Machine.

  3. Validasi koneksi komputer ke Google Cloud:

    1. Di bagian Metrik, telusuri nilai connected.

    2. Pilih metrik Mesin Terhubung. Jalur lengkapnya adalah edgecontainer.googleapis.com/machine/connected.

    3. (Opsional) Filter menurut nilai target machine_id menggunakan bagian Filter.

    4. Pada diagram waktu yang muncul, pastikan garis Healthy tetap 100% secara berurutan. Jika pada titik mana pun nilai ini adalah 0% atau Tidak Sehat, berarti mesin telah kehilangan konektivitas dengan Google Cloud pada waktu yang ditunjukkan.

  4. Validasi konektivitas internet mesin:

    1. Di bagian Metrik, telusuri nilai connectivity.

    2. Pilih metrik Network Connectivity. Jalur lengkapnya adalah edgecontainer.googleapis.com/machine/network/connectivity.

    3. (Opsional) Filter menurut nilai target machine_id menggunakan bagian Filter.

    4. Pada diagram waktu yang muncul, pastikan garis Healthy tetap 100% secara berurutan. Jika pada suatu saat nilai ini adalah 0% Tidak Sehat, berarti mesin kehilangan konektivitas internet pada waktu yang ditunjukkan.

Memahami hasil validasi

Tabel berikut menjelaskan hasil yang ditampilkan oleh Metrics Explorer.

Status mesin Diagnosis Resolusi
Sehat
Nilai metrik "Machine Connected" adalah 1
Nilai metrik "Network Connectivity" adalah 1
Operasi normal. Tidak ada.
Terputus
Nilai metrik "Machine Connected" adalah 0
Nilai metrik "Network Connectivity" adalah 1
Komputer memiliki konektivitas internet, tetapi tidak dapat terhubung ke Google Cloud. Periksa [aturan firewall](distributed-cloud/connected/1.11.0/docs/requirements#connected_management_and_monitoring_traffic) untuk layanan Google dan endpoint API. Pastikan agen yang terhubung Distributed Cloud berjalan di mesin.
Terisolasi
Nilai metrik "Machine Connected" adalah 0
Nilai metrik "Network Connectivity" adalah 0
Mesin tidak memiliki konektivitas internet. Periksa kabel daya dan jaringan, konfigurasi jaringan lokal, status LED mesin. Verifikasi konfigurasi VLAN dan perutean Anda.
Terputus-putus
Nilai metrik "Machine Connected" berganti-ganti antara 0 dan 1
Nilai metrik "Network Connectivity" berganti-ganti antara 0 dan 1
Koneksi jaringan tidak stabil, kehilangan paket, atau latensi berlebihan. Periksa jaringan lokal Anda untuk mengetahui apakah ada kemacetan dan hardware yang rusak.

Jika Anda melihat nilai 0 yang berkelanjutan untuk salah satu metrik, ikuti langkah-langkah pemecahan masalah yang dijelaskan dalam tabel untuk mengatasinya. Jika masalah berlanjut, hubungi Dukungan Google dengan menyertakan nilai machine_id komputer yang terpengaruh dan stempel waktu gangguan.

Sesi BGP yang rusak di resource Cloud Router yang digunakan oleh koneksi VPN

Koneksi Distributed Cloud VPN mengandalkan sesi BGP yang dibuat dan dikelola oleh resource Cloud Router yang sesuai untuk mengiklankan rute antara cluster yang terhubung ke Distributed Cloud dan Google Cloud. Jika Anda mengubah konfigurasi resource Cloud Router yang terkait dengan koneksi VPN Distributed Cloud, koneksi tersebut dapat berhenti berfungsi.

Untuk memulihkan konfigurasi sesi BGP yang rusak di Cloud Router yang terpengaruh, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud , dapatkan nama sesi BGP yang rusak. Contoh:

    INTERFACE=anthos-mcc-34987234
    
  2. Dapatkan alamat IP BGP peer dan BGP Cloud Router untuk sesi BGP yang rusak, serta ASN peer yang digunakan oleh koneksi Distributed Cloud VPN yang terpengaruh. Contoh:

    GDCE_BGP_IP=168.254.208.74
    CLOUD_ROUTER_BGP_IP=168.254.208.73
    PEER_ASN=65506
    

    Jika Anda menghapus sesi BGP, dapatkan informasi ini dari cluster yang terhubung Distributed Cloud:

    1. Dapatkan kredensial cluster:

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

      Ganti kode berikut:

      • CLUSTER_ID: nama cluster target.
      • REGION: region Google Cloud tempat cluster target dibuat.
      • PROJECT_ID: ID project Google Cloud target.
    2. Dapatkan konfigurasi resource MultiClusterConnectivityConfig:

      kubectl get multiclusterconnectivityconfig -A
      

      Perintah ini akan menampilkan output yang mirip dengan berikut ini:

       NAMESPACE     NAME                   LOCAL ASN              PEER ASN
       kube-system   MultiClusterConfig1    65505                   65506
       ```
      
    3. Dapatkan alamat IP BGP peer, alamat IP Cloud Router, dan ASN sesi BGP:

      kubectl describe multiclusterconnectivityconfig -n kube-system MCC_CONFIG_NAME   
      

      Ganti MCC_CONFIG_NAME dengan nama MultiClusterConfigResource yang Anda dapatkan di langkah sebelumnya.

      Perintah ini akan menampilkan output yang mirip dengan berikut ini:

       ​​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. Di konsol Google Cloud , dapatkan nama, region, dan nama projectGoogle Cloud untuk tunnel VPN yang rusak. Contoh:

    VPN_TUNNEL=VPNTunnel1
    REGION=US-East1
    VPC_PROJECT_ID=VPC-Project-1
    
  4. Hapus sesi BGP yang rusak dari konfigurasi Cloud Router.

  5. Buat antarmuka Cloud Router baru:

    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
    

    Ganti kode berikut:

    • INTERFACE_NAME: nama deskriptif yang secara unik mengidentifikasi antarmuka ini.
    • TUNNEL_NAME: nama tunnel VPN yang Anda dapatkan di langkah sebelumnya.
    • ROUTER_BGP_IP: alamat IP BGP Cloud Router yang Anda peroleh sebelumnya dalam prosedur ini.
    • VPC_PROJECT_ID: ID project VPC Google Cloud target.
    • REGION: Google Cloud region tempat project VPC target Google Cloud dibuat.
  6. Buat 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
    

    Ganti kode berikut:

    • INTERFACE_NAME: nama antarmuka yang Anda buat di langkah sebelumnya.
    • TUNNEL_NAME: nama tunnel VPN yang Anda gunakan untuk membuat antarmuka di langkah sebelumnya.
    • REGION: Google Cloud region tempat project VPC target Google Cloud dibuat.
    • VPC_PROJECT_ID: ID project VPC Google Cloud target.
    • GDCE_BGP_IP: alamat IP BGP peer Distributed Cloud yang Anda peroleh sebelumnya dalam prosedur ini.
    • GDCE_BGP_ASN: ASN BGP peer Distributed Cloud yang Anda dapatkan sebelumnya dalam prosedur ini.

Pada tahap ini, sesi BGP sudah aktif dan beroperasi kembali.

Mesin virtual macet dalam status Pending

Beban kerja mesin virtual dapat terhenti dalam status Pending dan gagal dijadwalkan pada node jika salah satu hal berikut terjadi:

  • Distributed Cloud yang terhubung tidak dapat mengalokasikan resource yang diminta, seperti waktu CPU, memori, atau ruang disk, ke virtual machine.
  • Ada kesalahan dalam konfigurasi virtual machine.
  • Ada kesalahan pada penyimpanan mesin virtual.
  • Node target tercemar.

Untuk mengatasi masalah ini, lakukan langkah berikut:

  1. Dapatkan kredensial cluster seperti yang dijelaskan dalam Mendapatkan kredensial untuk cluster.

  2. Dapatkan informasi tentang mesin virtual yang terpengaruh:

    kubectl describe virtualmachine VM_NAME -n NAMESPACE
    

    Ganti kode berikut:

    • VM_NAME: Nama mesin virtual target.
    • NAMESPACE: Namespace mesin virtual target.

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    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
    

    Output perintah berisi pesan yang mungkin menunjukkan batasan resource, kegagalan penjadwalan, kesalahan penyimpanan, dan masalah lainnya.

  3. Periksa output untuk menentukan penyebab kegagalan penjadwalan seperti yang dijelaskan di bagian berikutnya.

Resource tidak cukup

Anda mungkin melihat pesan yang menunjukkan resource yang tidak mencukupi, seperti CPU, memori, atau ruang disk. Contoh:

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

Untuk mengatasi masalah ini, periksa resource yang dialokasikan ke virtual machine yang terpengaruh dan beban kerja lain yang dijadwalkan di node, lalu lakukan hal berikut bergantung pada kebutuhan bisnis Anda:

  • Menurunkan skala workload lain yang dijadwalkan di node,
  • Kurangi jumlah resource yang dialokasikan ke virtual machine yang terpengaruh,
  • Tambahkan lebih banyak mesin ke cluster yang terpengaruh.

Node yang tercemar

Anda mungkin melihat pesan yang menunjukkan bahwa node target tercemar. Contoh:

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

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Gunakan perintah berikut untuk memeriksa taint pada node:

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

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    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. Lakukan salah satu hal berikut:

    • Untuk taint yang tidak terduga, hapus taint tersebut seperti yang dijelaskan dalam Taint dan Toleransi.
    • Untuk taint yang diharapkan, tambahkan toleransi yang sesuai ke konfigurasi virtual machine, seperti yang dijelaskan dalam Taint dan Toleransi.

Kesalahan penyimpanan

Anda mungkin melihat pesan yang menunjukkan adanya kesalahan pada penyimpanan mesin virtual. Contoh:

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

Pesan ini mungkin menunjukkan bahwa volume persisten yang sesuai gagal di-mount di node target.

Untuk mengatasi masalah ini, lakukan langkah-langkah berikut:

  1. Gunakan perintah berikut untuk mendapatkan status klaim volume persisten (PVC) di namespace virtual machine yang terpengaruh:

    kubectl get pvc -n NAMESPACE
    

    Ganti NAMESPACE dengan nama namespace target.

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    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. Verifikasi bahwa PVC yang sesuai memiliki status Bound; jika statusnya Pending, berarti subsistem penyimpanan gagal menyediakan volume. Dalam kasus tersebut, Anda harus memecahkan masalah konfigurasi subsistem penyimpanan dan memastikan StorageClass yang sesuai tersedia.