Mendiagnosis masalah cluster

Alat gkectl memiliki dua perintah untuk memecahkan masalah cluster: gkectl diagnose cluster dan gkectl diagnose snapshot. Perintah tersebut berfungsi dengan cluster admin dan pengguna. Dokumen ini menunjukkan cara menggunakan perintah gkectl diagnose untuk mendiagnosis masalah di cluster Anda.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan perintah gkectl diagnose snapshot untuk membuat snapshot yang dapat membantu Layanan Pelanggan Cloud mendiagnosis masalah, lihat Membuat snapshot untuk mendiagnosis cluster.

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.

gkectl diagnose cluster

Perintah ini menjalankan health check pada cluster Anda dan melaporkan error. Perintah ini menjalankan health check pada komponen berikut:

  • vCenter
    • Kredensial
    • DRS
    • Kelompok anti-afinitas
    • Jaringan
    • Versi
    • Pusat data
    • Datastore
    • ResourcePool
    • Folder
    • Jaringan
  • Load balancer (F5, Jungkat-jungkit, atau Manual)
  • Cluster pengguna dan kumpulan node
  • Objek cluster
  • Kesiapan server konnektivitas cluster pengguna
  • Objek mesin dan node cluster yang sesuai
  • Pod di namespace kube-system dan gke-system
  • Bidang kontrol
  • Volume persisten vSphere dalam cluster
  • Sinyal vCPU cluster pengguna dan admin (CPU virtual) dan sinyal pertentangan memori
  • Cluster pengguna dan admin ESXi Alarm Penggunaan CPU Host dan Penggunaan Memori yang telah dikonfigurasi sebelumnya.
  • Waktu (TOD)
  • Kebijakan jaringan node untuk cluster dengan Dataplane V2 diaktifkan
  • Tingkat kesiapan agen node Dataplane V2 secara keseluruhan

Mendiagnosis cluster admin

Untuk mendiagnosis cluster admin, tentukan jalur ke cluster admin Anda:

gkectl diagnose cluster --kubeconfig=ADMIN_CLUSTER_KUBECONFIG

Ganti ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster admin Anda.

Contoh output berikut ditampilkan dari perintah gkectl diagnose cluster:

Preparing for the diagnose tool...
Diagnosing the cluster......DONE

- Validation Category: Admin Cluster Connectivity
Checking VMs TOD (availability)...SUCCESS
Checking Konnectivity Server (readiness)...SUCCESS

- Validation Category: Admin Cluster F5 BIG-IP
Checking f5 (credentials, partition)...SUCCESS

- Validation Category: Admin Cluster VCenter
Checking Credentials...SUCCESS
Checking DRS enabled...SUCCESS
Checking Hosts for AntiAffinityGroups...SUCCESS
Checking Version...SUCCESS
Checking Datacenter...SUCCESS
Checking Datastore...SUCCESS
Checking Resource pool...SUCCESS
Checking Folder...SUCCESS
Checking Network...SUCCESS

- Validation Category: Admin Cluster
Checking cluster object...SUCCESS
Checking machine deployment...SUCCESS
Checking machineset...SUCCESS
Checking machine objects...SUCCESS
Checking kube-system pods...SUCCESS
Checking anthos-identity-service pods...SUCCESS
Checking storage...SUCCESS
Checking resource...SUCCESS
Checking virtual machine resource contention...SUCCESS
Checking host resource contention...SUCCESS
All validation results were SUCCESS.
Cluster is healthy!

Jika ada masalah dengan alamat IP virtual (VIP) di cluster target, gunakan tanda --config untuk memberikan file konfigurasi cluster admin guna memberikan informasi proses debug lainnya.

gkectl diagnose cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config CLUSTER_CONFIG

Ganti CLUSTER_CONFIG dengan jalur file konfigurasi admin atau pengguna.

Contoh output berikut menunjukkan bahwa perintah gkectl diagnose cluster kini dapat terhubung dengan benar ke cluster dan memeriksa masalah:

Failed to access the api server via LB VIP "...": ...
Try to use the admin master IP instead of problematic VIP...
Reading config with version "[CONFIG_VERSION]"
Finding the admin master VM...
Fetching the VMs in the resource pool "[RESOURCE_POOL_NAME]"...
Found the "[ADMIN_MASTER_VM_NAME]" is the admin master VM.
Diagnosing admin|user cluster "[TARGET_CLUSTER_NAME]"...
...

Mendiagnosis cluster pengguna

Untuk mendiagnosis cluster pengguna, Anda harus menentukan nama cluster pengguna. Jika Anda perlu mendapatkan nama cluster pengguna, jalankan perintah berikut:

kubectl get cluster --kubeconfig=USER_CLUSTER_KUBECONFIG

Ganti USER_CLUSTER_KUBECONFIG dengan jalur file kubeconfig cluster pengguna.

Tentukan nama cluster pengguna beserta file konfigurasi sebagai berikut:

gkectl diagnose cluster --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
    --cluster-name=USER_CLUSTER_NAME

Ganti USER_CLUSTER_NAME dengan nama cluster pengguna.

Contoh output berikut ditampilkan dari perintah gkectl diagnose cluster:

Preparing for the diagnose tool...
Diagnosing the cluster......DONE

Diagnose result is saved successfully in <DIAGNOSE_REPORT_JSON_FILE>

- Validation Category: User Cluster Connectivity
Checking Node Network Policy...SUCCESS
Checking VMs TOD (availability)...SUCCESS
Checking Dataplane-V2...Success

- Validation Category: User Cluster F5 BIG-IP
Checking f5 (credentials, partition)...SUCCESS

- Validation Category: User Cluster VCenter
Checking Credentials...SUCCESS
Checking DRS enabled...SUCCESS
Checking Hosts for AntiAffinityGroups...SUCCESS
Checking VSphere CSI Driver...SUCCESS
Checking Version...SUCCESS
Checking Datacenter...SUCCESS
Checking Datastore...SUCCESS
Checking Resource pool...SUCCESS
Checking Folder...SUCCESS
Checking Network...SUCCESS

- Validation Category: User Cluster
Checking user cluster and node pools...SUCCESS
Checking cluster object...SUCCESS
Checking machine deployment...SUCCESS
Checking machineset...SUCCESS
Checking machine objects...SUCCESS
Checking control plane pods...SUCCESS
Checking kube-system pods...SUCCESS
Checking gke-system pods...SUCCESS
Checking gke-connect pods...SUCCESS
Checeking anthos-identity-service pods...SUCCESS
Checking storage...SUCCESS
Checking resource...SUCCESS
Checking virtual machine resource contention...SUCCESS
Checking host resource contention...SUCCESS
All validation results were SUCCESS.
Cluster is healthy!

Mendiagnosis status virtual machine

Jika terjadi masalah pada pembuatan virtual machine, jalankan gkectl diagnose cluster untuk mendapatkan diagnosis status virtual machine.

Outputnya mirip dengan hal berikut ini:


- Validation Category: Cluster Healthiness
Checking cluster object...SUCCESS
Checking machine deployment...SUCCESS
Checking machineset...SUCCESS
Checking machine objects...SUCCESS
Checking machine VMs...FAILURE
    Reason: 1 machine VMs error(s).
    Unhealthy Resources:
    Machine [NODE_NAME]: The VM's UUID "420fbe5c-4c8b-705a-8a05-ec636406f60" does not match the machine object's providerID "420fbe5c-4c8b-705a-8a05-ec636406f60e".
    Debug Information:
    null
...
Exit with error:
Cluster is unhealthy!
Run gkectl diagnose cluster automatically in gkectl diagnose snapshot
Public page https://cloud.google.com/anthos/clusters/docs/on-prem/latest/diagnose#overview_diagnose_snapshot

Memecahkan masalah

Tabel berikut menguraikan beberapa kemungkinan resolusi untuk masalah saat menjalankan perintah gkectl diagnose cluster:

MasalahKemungkinan penyebabResolusi
Server Kubernetes API tidak dapat dijangkau, baik untuk cluster admin maupun untuk cluster pengguna. Memeriksa kesehatan mesin virtual pada grafik latensi memori OOB (bawaan) yang idealnya harus memiliki latensi memori sekitar nol. Pertentangan memori juga dapat meningkatkan pertentangan CPU, dan grafik kesiapan CPU mungkin mengalami lonjakan karena akan terjadi pertukaran. Meningkatkan memori fisik. Untuk opsi lainnya, lihat Saran pemecahan masalah VMware.
Waktu pembuatan Nodepool habis. Latensi baca/tulis VMDK yang tinggi. Periksa kondisi VM OOB untuk latensi baca dan tulis disk virtual. Menurut VMware, latensi total yang lebih besar dari 20 md menunjukkan adanya masalah. Lihat Solusi VMware untuk masalah performa disk.

BundleUnexpectedDiff error

Resource Kubernetes Cluster API yang dikelola oleh GKE pada paket VMware mungkin tidak sengaja dimodifikasi sehingga dapat menyebabkan kegagalan komponen sistem, atau kegagalan upgrade cluster atau update.

Di GKE pada VMware versi 1.13 dan yang lebih baru, onprem-user-cluster-controller secara berkala memeriksa status objek, dan melaporkan perbedaan yang tidak terduga dari status yang diinginkan melalui log dan peristiwa. Objek ini mencakup bidang kontrol cluster pengguna dan add-on seperti Services dan DaemonSet.

Contoh output berikut menunjukkan peristiwa perbedaan yang tidak terduga:

 Type     Reason                 Age    From                              Message
 ----     ------                 ----   ----                              -------
 Warning  BundleUnexpectedDiff   13m    onpremusercluster/ci-bundle-diff  Detected unexpected difference of user control plane objects: [ConfigMap/istio], please check onprem-user-cluster-controller logs for more details.

Contoh output berikut menunjukkan log yang dihasilkan oleh onprem-user-cluster-controller:

2022-08-06T02:54:42.701352295Z W0806 02:54:42.701252       1 update.go:206] Detected unexpected difference of user addon object(ConfigMap/istio), Diff:   map[string]string{
2022-08-06T02:54:42.701376406Z -    "mesh": (
2022-08-06T02:54:42.701381190Z -        """
2022-08-06T02:54:42.701385438Z -        defaultConfig:
2022-08-06T02:54:42.701389350Z -          discoveryAddress: istiod.gke-system.svc:15012
...
2022-08-06T02:54:42.701449954Z -        """
2022-08-06T02:54:42.701453099Z -    ),
2022-08-06T02:54:42.701456286Z -    "meshNetworks": "networks: {}",
2022-08-06T02:54:42.701459304Z +    "test-key":     "test-data",
2022-08-06T02:54:42.701462434Z   }

Peristiwa dan log tidak akan memblokir operasi cluster. Objek yang memiliki perbedaan yang tidak terduga dari status yang diinginkan akan ditimpa di upgrade cluster berikutnya.

Langkah selanjutnya

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.