Dokumen ini menunjukkan cara menggunakan perintah gkectl diagnose
untuk membuat snapshot diagnostik guna memecahkan masalah di cluster yang dibuat menggunakan Google Distributed Cloud (khusus software) untuk VMware saat cluster lanjutan diaktifkan.
Cluster lanjutan diaktifkan saat enableAdvancedClusters
ditetapkan ke true
di
file konfigurasi cluster admin
dan file konfigurasi cluster pengguna. Jika cluster lanjutan tidak diaktifkan, lihat Membuat snapshot diagnostik saat cluster lanjutan tidak diaktifkan.
gkectl diagnose snapshot
Perintah ini mengompresi status, konfigurasi, dan log cluster ke dalam file tar. Konfigurasi default perintah gkectl diagnose snapshot merekam informasi berikut tentang cluster Anda:
Versi Kubernetes.
Status resource Kubernetes di namespace kube-system dan gke-system: cluster, machine, node, Service, Endpoint, ConfigMap, ReplicaSet, CronJob, Pod, dan pemilik Pod tersebut, termasuk Deployment, DaemonSet, dan StatefulSet.
Status bidang kontrol.
Detail tentang setiap konfigurasi node, termasuk alamat IP, aturan iptables, titik pemasangan, sistem file, koneksi jaringan, dan proses yang sedang berjalan.
Log container dari node bidang kontrol cluster admin, saat server API Kubernetes tidak tersedia.
Log dari perintah
gkectl diagnose snapshot
.Log tugas pra-penerbangan.
Log container di namespace berdasarkan skenario.
Kredensial, termasuk untuk vSphere dan F5, dihapus sebelum file tar dibuat.
Merekam status cluster admin
Untuk merekam status cluster admin, jalankan perintah berikut:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Ganti ADMIN_CLUSTER_KUBECONFIG
dengan jalur ke
file kubeconfig cluster admin.
Output mencakup daftar file dan nama file tar, seperti yang ditunjukkan dalam contoh output berikut:
Using "system" snapshot configuration...
Creating ssh signer for "[ADMIN_CLUSTER_NAME]"...
Taking snapshots in 10 thread(s)...
gkectlLogs/gkectl-xxx.log
...
kubectlCommands/[NAMESPACE]/kubectl_get_pods
kubectlCommands/[NAMESPACE]/kubectl_get_deployments
kubectlCommands/[NAMESPACE]/kubectl_get_daemonsets
...
nodes/[ADMIN_CLUSTER_NODE]/commands/journalctl_-u_kubelet
nodes/[ADMIN_CLUSTER_NODE]/files/var/log/startup.log
...
Snapshot succeeded. Output saved in [FILENAME].tar.gz.
Untuk mengekstrak file tar ke direktori, jalankan perintah berikut:
tar -zxf TAR_FILE_NAME --directory EXTRACTION_DIRECTORY_NAME
Ganti kode berikut:
TAR_FILE_NAME
: nama file tar.EXTRACTION_DIRECTORY_NAME
: direktori tempat Anda ingin mengekstrak arsip file tar.
Untuk melihat daftar file yang dihasilkan oleh snapshot, jalankan perintah berikut:
cd EXTRACTION_DIRECTORY_NAME/EXTRACTED_SNAPSHOT_DIRECTORY ls kubectlCommands ls nodes/NODE_NAME/commands ls nodes/NODE_NAME/files
Ganti NODE_NAME
dengan nama node yang
ingin Anda lihat filenya.
Untuk melihat detail operasi tertentu, buka salah satu file.
Tentukan kunci SSH untuk cluster admin
Saat Anda mendapatkan snapshot cluster admin, gkectl
akan menemukan kunci SSH pribadi untuk cluster admin secara otomatis. Anda juga dapat menentukan kunci secara eksplisit dengan
menggunakan parameter --admin-ssh-key-path
.
Ikuti petunjuk untuk Menggunakan SSH untuk terhubung ke node cluster guna mendownload kunci SSH.
Dalam perintah gkectl diagnose snapshot
, tetapkan --admin-ssh-key-path
ke jalur kunci yang didekode:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --admin-ssh-key-path=PATH_TO_DECODED_KEY
Merekam status cluster pengguna
Untuk merekam status cluster pengguna, jalankan perintah berikut:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME
Output contoh berikut mencakup daftar file dan nama file tar:
Using "system" snapshot configuration...
Creating ssh signer for "[USER_CLUSTER_NAME]"...
Taking snapshots in 10 thread(s)...
gkectlLogs/gkectl-xxx.log
...
kubectlCommands/[NAMESPACE]/kubectl_get_pods
kubectlCommands/[NAMESPACE]/kubectl_get_deployments
kubectlCommands/[NAMESPACE]/kubectl_get_daemonsets
...
nodes/[USER_CLUSTER_NODE_IP_ADDRESS]/commands/journalctl_-u_kubelet
nodes/[USER_CLUSTER_NODE_IP_ADDRESS]/files/var/log/startup.logn
...
Snapshot succeeded. Output saved in [FILENAME].tar.gz.
Skenario snapshot
Skenario snapshot memungkinkan Anda mengontrol informasi yang disertakan dalam snapshot. Untuk menentukan skenario, gunakan tanda --scenario
. Daftar berikut
menunjukkan kemungkinan nilai:
system
(default): Mengumpulkan snapshot dengan log di namespace sistem yang didukung.all
: Mengumpulkan snapshot dengan log di semua namespace, termasuk namespace yang ditentukan pengguna.
Untuk membuat snapshot cluster admin, Anda tidak perlu menentukan skenario:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG
Untuk membuat snapshot cluster pengguna menggunakan skenario system
:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system
Untuk membuat snapshot cluster pengguna menggunakan skenario all
:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=all
Menggunakan --log-since
untuk membatasi snapshot
Anda dapat menggunakan tanda --log-since
untuk membatasi pengumpulan log ke jangka waktu
terbaru. Misalnya, Anda dapat mengumpulkan hanya log dari dua hari terakhir atau
tiga jam terakhir. Secara default, diagnose snapshot
mengumpulkan semua log.
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=CLUSTER_NAME \ --scenario=system \ --log-since=DURATION
Ganti <var>DURATION</var>
dengan nilai waktu seperti 120m
atau 48h
.
Pertimbangan berikut berlaku:
- Flag
--log-since
hanya didukung untuk logkubectl
danjournalctl
. - Flag perintah seperti
--log-since
tidak diizinkan dalam konfigurasi snapshot yang disesuaikan.
Melakukan uji coba untuk snapshot
Anda dapat menggunakan tanda --dry-run
untuk menampilkan tindakan yang akan dilakukan dan konfigurasi snapshot.
Untuk melakukan uji coba di cluster admin, masukkan perintah berikut:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=ADMIN_CLUSTER_NAME \ --dry-run
Untuk melakukan uji coba di cluster pengguna, masukkan perintah berikut:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --dry-run
Menggunakan konfigurasi snapshot
Jika kedua skenario ini (--scenario system
atau all
) tidak memenuhi kebutuhan Anda, Anda
dapat membuat snapshot yang disesuaikan dengan meneruskan file konfigurasi snapshot
menggunakan tanda --snapshot-config
:
gkectl diagnose snapshot --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --snapshot-config=SNAPSHOT_CONFIG_FILE
Buat konfigurasi snapshot
Anda dapat membuat konfigurasi snapshot untuk skenario tertentu dengan meneruskan
flag --scenario
dan --dry-run
. Misalnya, untuk melihat konfigurasi snapshot
untuk skenario default
(system
) cluster pengguna, masukkan perintah berikut:
gkectl diagnose snapshot \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --cluster-name=USER_CLUSTER_NAME \ --scenario=system --dry-run
Outputnya mirip dengan contoh berikut:
The snapshot configuration is:
numOfParallelThreads: 10
excludeWords:
- password
kubectlCommands:
- commands:
- kubectl version
- kubectl cluster-info
- kubectl top node
- kubectl top pod -A --containers
namespaces: []
- commands:
- kubectl get -o wide --ignore-not-found
- kubectl get -o yaml --ignore-not-found
- kubectl describe
namespaces:
- kube-system
...
expandResources: true
- commands:
- kubectl logs
namespaces:
- kube-system
...
kindNodeCommands: []
nodeCommands:
- nodes: []
commands:
- uptime
- df --all --inodes
- ip addr
- ip neigh
- iptables-save --counters
- mount
- ip route list table all
- top -bn1 || true
- docker info || true
...
- nodes: []
commands:
- dmesg
- systemctl status -l kubelet
- journalctl --utc -u kubelet
- journalctl --utc -u kubelet-monitor.service
...
nodeFiles:
- nodes: []
files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
...
- nodes: []
files:
- /var/log/apiserver/audit-proxy-buffer/* || true
Informasi berikut ditampilkan dalam output:
numOfParallelThreads
: Jumlah thread paralel yang digunakan untuk mengambil snapshot.excludeWords
: Daftar kata yang akan dikecualikan dari snapshot (tidak peka huruf besar/kecil). Baris yang berisi kata-kata ini akan dihapus dari hasil snapshot. "password" selalu dikecualikan, baik Anda menentukannya atau tidak.kubectlCommands
: Daftar perintah kubectl yang akan dijalankan. Hasilnya akan disimpan. Perintah dijalankan terhadap namespace yang sesuai. Untuk perintahkubectl logs
, semua Pod dan container di namespace yang sesuai akan ditambahkan secara otomatis. Ekspresi reguler didukung untuk menentukan namespace. Jika Anda tidak menentukan namespace, namespacedefault
akan diasumsikan.nodeCommands
: Daftar perintah untuk dijalankan di node yang sesuai. Hasil disimpan. Jika node tidak ditentukan, semua node di cluster target akan dipertimbangkan.nodeFiles
: Daftar file yang akan dikumpulkan dari node terkait. File disimpan. Jika node tidak ditentukan, semua node di cluster target akan dipertimbangkan.
Langkah berikutnya
Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.
Anda juga dapat melihat bagian Mendapatkan dukungan untuk mengetahui informasi selengkapnya tentang sumber dukungan, termasuk yang berikut:
- Persyaratan untuk membuka kasus dukungan.
- Alat untuk membantu Anda memecahkan masalah, seperti log dan metrik.
- Komponen yang didukung, versi, dan fitur Google Distributed Cloud untuk VMware (khusus software).