Jika mengalami masalah dengan salah satu cluster, Anda bisa mendapatkan bantuan dari Cloud Customer Care. Layanan Pelanggan mungkin meminta Anda mengambil 'snapshot' cluster, yang dapat mereka gunakan untuk mendiagnosis masalah. Snapshot mengambil file konfigurasi cluster dan node, serta memaketkan informasi tersebut ke dalam satu file tar.
Dokumen ini menjelaskan cara membuat snapshot default atau snapshot cluster yang lebih disesuaikan. Panduan ini juga menjelaskan cara membuat snapshot saat cluster mengalami error tertentu.
Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.
Snapshot default
Bagian berikut menjelaskan apa yang ada dalam snapshot standar dan cara membuatnya. Untuk informasi tentang snapshot yang disesuaikan, lihat bagian tentang snapshot yang disesuaikan.
Informasi apa yang terdapat dalam snapshot default?
Snapshot cluster adalah file tar dari file konfigurasi dan log tentang cluster. Secara khusus, konfigurasi default perintah ini menangkap informasi berikut tentang cluster Anda:
Versi Kubernetes.
Status resource Kubernetes di namespace kube-system dan gke-system: cluster, mesin, node, Layanan, Endpoint, ConfigMap, ReplicaSet, CronJob, Pod, dan pemilik Pod tersebut, termasuk Deployment, DaemonSet, dan StatefulSet.
Detail tentang setiap konfigurasi node termasuk alamat IP, aturan iptables, titik pemasangan, sistem file, koneksi jaringan, dan proses yang berjalan.
Informasi tentang Runtime VM di GDC serta VM dan resource terkait VM yang berjalan di cluster Anda. Untuk mengetahui informasi selengkapnya tentang apa yang dikumpulkan secara default dan cara membuat snapshot khusus VM, lihat Informasi VM dalam snapshot dalam dokumen ini.
Log dari perintah
bmctl check cluster --snapshot
.
Informasi kredensial cluster tidak disertakan dalam snapshot default. Jika Cloud Customer Care meminta informasi tersebut, lihat Mengambil informasi cluster.
Untuk daftar lengkap informasi yang dikumpulkan saat Anda menjalankan perintah snapshot, lihat bagian berikut tentang file konfigurasi secara mendetail. File konfigurasi ini menunjukkan perintah yang dijalankan saat mengambil snapshot default.
Membuat snapshot default
Perintah bmctl check cluster
mengambil snapshot cluster. Anda dapat menggunakan
perintah ini untuk melakukan salah satu tindakan berikut:
- Buat snapshot dan upload snapshot tersebut secara otomatis ke bucket Cloud Storage.
- Buat snapshot cluster dan simpan file snapshot di komputer lokal tempat Anda menjalankan perintah.
Metode #1: membuat snapshot default dan menguploadnya secara otomatis ke bucket Cloud Storage
Untuk membuat dan mengupload snapshot ke bucket Cloud Storage, lakukan hal berikut:
Siapkan API dan akun layanan seperti yang dijelaskan dalam Mengonfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Langkah ini hanya perlu dilakukan 1 kali.
Jalankan perintah
bmctl
berikut untuk membuat dan mengupload snapshot secara otomatis ke bucket Cloud Storage:bmctl check cluster --snapshot --cluster=CLUSTER_NAME \ --admin-kubeconfig=ADMIN_KUBECONFIG \ --service-account-key-file SA_KEY_FILE
Ganti entri berikut dengan informasi khusus untuk lingkungan cluster Anda:
CLUSTER_NAME
: nama cluster yang ingin Anda ambil snapshot-nya.ADMIN_KUBECONFIG
: jalur ke file kubeconfig cluster admin.SA_KEY_FILE
: jalur ke file kunci JSON yang didownload untuk akun layanan yang dibuat di langkah sebelumnya. Jika Anda tidak menggunakan flag--service-account-key-file
, perintah akan menggunakan kredensial yang terkait dengan variabel lingkunganGOOGLE_APPLICATION_CREDENTIALS
. Menentukan kredensial akun layanan dengan flag secara eksplisit akan diprioritaskan.
Perintah ini membuat file tar snapshot dan menyimpannya secara lokal. Jika akun layanan disiapkan dengan benar, perintah ini juga akan mengupload file tar snapshot ke bucket di Cloud Storage. Perintah ini menelusuri project Anda untuk menemukan bucket penyimpanan yang namanya diawali dengan "
anthos-snapshot-
". Jika bucket tersebut ada, perintah akan mengupload snapshot ke bucket tersebut. Jika perintah tersebut tidak menemukan bucket dengan nama yang cocok, perintah tersebut akan membuat bucket baru dengan namaanthos-snapshot-UUID
, denganUUID
adalah ID unik universal 32 digit.Bagikan akses dengan Cloud Customer Care seperti yang dijelaskan dalam artikel Mengizinkan Cloud Customer Care melihat snapshot cluster yang Anda upload.
Metode #2: membuat snapshot default hanya di komputer lokal
Gunakan flag --local
untuk memastikan snapshot cluster Anda hanya disimpan secara lokal. Anda dapat mengambil status cluster yang dibuat dengan perintah
berikut:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--admin-kubeconfig=ADMIN_KUBECONFIG --local
Ganti kode berikut:
CLUSTER_NAME
: nama cluster target.ADMIN_KUBECONFIG
: jalur ke file kubeconfig cluster admin.
Perintah ini menghasilkan file tar ke komputer lokal Anda. Nama file tar ini
berbentuk
snapshot-CLUSTER_NAME-TIMESTAMP.tar.gz
,
dengan TIMESTAMP
menunjukkan tanggal dan waktu file
dibuat. File tar ini menyertakan informasi debug yang relevan tentang komponen dan mesin sistem
cluster.
Saat Anda menjalankan perintah ini, informasi tentang Pod akan dikumpulkan dari
namespace berikut: gke-system
, gke-connect
, capi-system
,
capi-webhook-system
, cert-manager
, dan capi-kubeadm-bootstrap-system
Namun, Anda dapat memperluas cakupan informasi diagnostik yang dikumpulkan dengan menggunakan flag --snapshot-scenario all
. Flag ini meningkatkan cakupan
snapshot diagnostik untuk menyertakan semua Pod dalam cluster:
bmctl check cluster --snapshot --snapshot-scenario all \
--cluster=CLUSTER_NAME \
--kubeconfig=KUBECONFIG_PATH \
--local
Skenario snapshot
Perintah bmctl check cluster --snapshot
mendukung dua skenario. Untuk menentukan
skenario, gunakan flag --scenario
. Daftar berikut menunjukkan kemungkinan
nilai:
system
: Mengumpulkan snapshot komponen sistem, termasuk log-nya.all
: Mengumpulkan snapshot semua pod, termasuk log-nya.
Anda dapat menggunakan kedua skenario tersebut dengan cluster admin atau cluster pengguna. Contoh berikut membuat snapshot cluster admin menggunakan
skenario system
:
bmctl check cluster --snapshot --snapshot-scenario system \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Contoh berikut membuat snapshot cluster pengguna menggunakan skenario all
:
bmctl check cluster --snapshot --snapshot-scenario all \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Melakukan uji coba untuk snapshot
Saat Anda menggunakan flag --snapshot-dry-run
, perintah tidak akan membuat snapshot.
Sebagai gantinya, perintah ini menunjukkan tindakan yang akan dilakukan perintah snapshot dan menghasilkan file konfigurasi snapshot. Untuk mengetahui informasi tentang file konfigurasi
snapshot, lihat Cara membuat snapshot yang disesuaikan.
Untuk melakukan snapshot uji coba di cluster admin, masukkan perintah berikut:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=ADMIN_CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Untuk melakukan snapshot uji coba di cluster pengguna, masukkan perintah berikut:
bmctl check cluster --snapshot --snapshot-dry-run \ --cluster=USER_CLUSTER_NAME \ --kubeconfig=USER_KUBECONFIG_PATH
Mendapatkan log dari periode tertentu
Anda dapat menggunakan flag --since
untuk mengambil log dari jangka waktu yang
sangat Anda minati. Dengan cara ini, Anda dapat membuat snapshot logging yang lebih kecil dan lebih
terfokus yang telah terjadi dalam beberapa detik, menit, atau jam terakhir.
Misalnya, perintah bmctl
berikut membuat snapshot logging yang telah terjadi dalam tiga jam terakhir:
bmctl check cluster --snapshot --since=3h \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Menentukan direktori tempat snapshot disimpan untuk sementara
Anda dapat menggunakan flag --snapshot-temp-output-dir
untuk menentukan direktori tempat snapshot disimpan untuk sementara:
bmctl check cluster --snapshot --snapshot-temp-output-dir=TEMP_OUTPUT_DIR \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Jika Anda tidak menentukan direktori, snapshot akan disimpan di direktori /tmp
untuk sementara. Menggunakan opsi --snapshot-temp-output-dir
adalah ide yang bagus jika
ruang terbatas di direktori /tmp
default, misalnya.
Menyembunyikan logging konsol
Anda dapat menggunakan flag --quiet
untuk menyembunyikan pesan log agar tidak muncul di konsol selama snapshot dijalankan. Sebagai gantinya, log konsol disimpan dalam
file 'bmctl_diagnose_snapshot.log' sebagai bagian dari snapshot.
Jalankan perintah berikut untuk menyembunyikan pesan log agar tidak muncul di konsol:
bmctl check cluster --snapshot --quiet \ --cluster=CLUSTER_NAME \ --kubeconfig=ADMIN_KUBECONFIG_PATH
Snapshot yang disesuaikan
Anda mungkin ingin membuat snapshot cluster yang disesuaikan karena alasan berikut:
- Untuk menyertakan informasi selengkapnya tentang cluster Anda daripada yang disediakan dalam ringkasan default.
- Untuk mengecualikan beberapa informasi yang ada dalam snapshot default.
Membuat snapshot yang disesuaikan
Membuat snapshot yang disesuaikan memerlukan penggunaan file konfigurasi snapshot. Langkah-langkah berikut menjelaskan cara membuat file konfigurasi, mengubahnya, dan menggunakannya untuk membuat snapshot cluster yang disesuaikan:
Buat file konfigurasi snapshot dengan menjalankan perintah berikut di cluster Anda dan menulis output ke file:
bmctl check cluster \ --snapshot --snapshot-dry-run --cluster CLUSTER_NAME \ --kubeconfig KUBECONFIG_PATH
Tentukan jenis informasi yang ingin Anda tampilkan dalam snapshot yang disesuaikan. Untuk melakukannya, ubah file konfigurasi snapshot yang Anda buat di langkah 1. Misalnya, jika Anda ingin snapshot berisi informasi tambahan, seperti berapa lama node tertentu telah berjalan, tambahkan perintah Linux
uptime
ke bagian yang relevan dalam file konfigurasi.Cuplikan file konfigurasi berikut menunjukkan cara membuat perintah snapshot memberikan informasi
uptime
tentang node10.200.0.3
. Informasi ini tidak muncul dalam snapshot standar.... nodeCommands: - nodes: - 10.200.0.3 commands: - uptime ...
Setelah Anda mengubah file konfigurasi untuk menentukan jenis snapshot yang Anda inginkan, buat snapshot yang disesuaikan dengan menjalankan perintah berikut:
bmctl check cluster --snapshot --snapshot-config SNAPSHOT_CONFIG_FILE \ --cluster CLUSTER_NAME--kubeconfig KUBECONFIG_PATH
Tanda
--snapshot-config
mengarahkan perintahbmctl
untuk menggunakan konten file konfigurasi snapshot guna menentukan informasi yang muncul dalam snapshot.
File konfigurasi secara mendetail
Contoh file konfigurasi snapshot berikut menunjukkan perintah dan file standar yang digunakan untuk membuat snapshot, tetapi Anda dapat menambahkan lebih banyak perintah dan file jika informasi diagnostik tambahan diperlukan:
numOfParallelThreads: 10
excludeWords:
- password
nodeCommands:
- nodes:
- 10.200.0.3
- 10.200.0.4
commands:
- uptime
- df --all --inodes
- ip addr
- ip neigh
- iptables-save --counters
- mount
- ip route list table all
- top -bn1 || true
- docker info || true
- docker ps -a || true
- crictl ps -a || true
- docker ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo docker logs || true
- docker ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo docker logs || true
- crictl ps -a | grep anthos-baremetal-haproxy | cut -d ' ' -f1 | head -n 1 | xargs
sudo crictl logs || true
- crictl ps -a | grep anthos-baremetal-keepalived | cut -d ' ' -f1 | head -n 1 |
xargs sudo crictl logs || true
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
- dmesg
- systemctl status -l docker || true
- journalctl --utc -u docker
- journalctl --utc -u docker-monitor.service
- systemctl status -l kubelet
- journalctl --utc -u kubelet
- journalctl --utc -u kubelet-monitor.service
- journalctl --utc --boot --dmesg
- journalctl --utc -u node-problem-detector
- systemctl status -l containerd || true
- journalctl --utc -u containerd
- systemctl status -l docker.haproxy || true
- journalctl --utc -u docker.haproxy
- systemctl status -l docker.keepalived || true
- journalctl --utc -u docker.keepalived
- systemctl status -l container.haproxy || true
- journalctl --utc -u container.haproxy
- systemctl status -l container.keepalived || true
- journalctl --utc -u container.keepalived
nodeFiles:
- nodes:
- 10.200.0.3
- 10.200.0.4
files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /proc/sys/net/ipv4/conf/all/rp_filter
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service || true
- /etc/systemd/system/containerd.service || true
- /etc/docker/daemon.json || true
- /etc/containerd/config.toml || true
- /etc/systemd/system/container.keepalived.service || true
- /etc/systemd/system/container.haproxy.service || true
- /etc/systemd/system/docker.keepalived.service || true
- /etc/systemd/system/docker.haproxy.service || true
nodeSSHKey: ~/.ssh/id_rsa # path to your ssh key file
Entri berikut dalam file konfigurasi Anda mungkin berbeda dengan entri yang muncul dalam file konfigurasi contoh sebelumnya:
- Alamat IP node di bagian
nodeCommands
dannodeFiles
- Jalur ke
nodeSSHKey
cluster Anda
Kolom dalam file konfigurasi
File konfigurasi snapshot dalam format YAML. File konfigurasi mencakup kolom berikut:
numOfParallelThreads
: rutinitas snapshot biasanya menjalankan banyak perintah. Beberapa thread paralel membantu rutinitas dijalankan lebih cepat. Sebaiknya tetapkannumOfParallelThreads
ke10
seperti yang ditunjukkan dalam file konfigurasi contoh sebelumnya. Jika pembuatan snapshot Anda memerlukan waktu terlalu lama, tingkatkan nilai ini.excludeWords
: snapshot berisi data dalam jumlah besar untuk node cluster Anda. GunakanexcludeWords
untuk mengurangi risiko keamanan saat Anda membagikan snapshot. Misalnya, kecualikanpassword
sehingga string sandi yang sesuai tidak dapat diidentifikasi.nodeCommands
: bagian ini menentukan informasi berikut:nodes
: daftar alamat IP untuk node cluster tempat Anda ingin mengumpulkan informasi. Untuk membuat snapshot saat cluster admin tidak dapat dijangkau, tentukan setidaknya satu alamat IP node.commands
: daftar perintah (dan argumen) yang akan dijalankan di setiap node. Output setiap perintah disertakan dalam snapshot.
nodeFiles
: bagian ini menentukan informasi berikut:nodes
: daftar alamat IP node cluster tempat Anda ingin mengumpulkan file. Untuk membuat snapshot saat cluster admin tidak dapat dijangkau, tentukan setidaknya satu alamat IP node.files
: daftar file yang akan diambil dari setiap node. Jika file yang ditentukan ditemukan di node, file tersebut akan disertakan dalam snapshot.
nodeSSHKey
: jalur ke file kunci SSH Anda. Jika cluster admin tidak dapat dijangkau, kolom ini wajib diisi.
Membuat snapshot saat Anda mengalami error tertentu
Langkah atau parameter perintah tambahan mungkin diperlukan agar berhasil membuat snapshot saat peristiwa tertentu terjadi, seperti upgrade yang terhenti.
Membuat snapshot default selama penginstalan atau upgrade terhenti
Saat menginstal atau mengupgrade cluster admin, campuran, atau mandiri, bmctl
terkadang dapat berhenti berfungsi pada titik saat output berikut dapat dilihat:
- Menunggu kubeconfig cluster siap.
- Menunggu cluster siap.
- Menunggu kumpulan node siap.
- Menunggu upgrade selesai.
Jika mengalami penghentian penginstalan atau upgrade, Anda dapat mengambil snapshot cluster menggunakan cluster bootstrap, seperti yang ditunjukkan dalam contoh berikut:
bmctl check cluster --snapshot --cluster=CLUSTER_NAME \
--kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Membuat snapshot yang disesuaikan selama penginstalan atau upgrade terhenti
Langkah-langkah berikut menunjukkan cara membuat snapshot cluster yang disesuaikan saat penginstalan atau upgrade terhenti:
Ambil file konfigurasi snapshot cluster dari arsip Anda.
Ubah file konfigurasi snapshot sehingga snapshot berisi informasi yang Anda inginkan.
Buat snapshot yang disesuaikan dengan menjalankan perintah berikut:
bmctl check cluster --snapshot --snapshot-config=SNAPSHOT_CONFIG_FILE \ --cluster=CLUSTER_NAME --kubeconfig=WORKSPACE_DIR/.kindkubeconfig
Membuat snapshot yang disesuaikan saat cluster admin tidak dapat dijangkau
Jika cluster admin tidak dapat dijangkau, Anda dapat mengambil snapshot cluster yang disesuaikan dengan menjalankan perintah berikut:
bmctl check cluster --snapshot --cluster CLUSTER_NAME
--node-ssh-key SSH_KEY_FILE
--nodes NODE_1_IP_ADDRESS, NODE_2_IP_ADDRESS, ...
Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan cluster Anda:
CLUSTER_NAME
: nama cluster yang ingin Anda ambil snapshot-nya.SSH_KEY_FILE
: jalur ke file kunci SSH node.NODE_x_IP_ADDRESS
: alamat IP node cluster yang informasinya Anda inginkan.
Atau, Anda dapat mencantumkan alamat IP node di baris terpisah:
bmctl check cluster
--snapshot --cluster CLUSTER_NAME \
--node-ssh-key SSH_KEY_FILE \
--nodes NODE_1_IP_ADDRESS \
--nodes NODE_2_IP_ADDRESS
...
Informasi VM dalam snapshot
Jika menggunakan Runtime VM di GDC untuk membuat dan mengelola virtual machine (VM) di Google Distributed Cloud, Anda dapat mengumpulkan informasi diagnostik yang relevan dalam snapshot. Snapshot adalah resource penting untuk mendiagnosis dan memecahkan masalah pada VM Anda.
Data yang dikumpulkan secara default
Saat Anda membuat snapshot default, snapshot tersebut akan berisi
informasi tentang Runtime VM di GDC dan resource terkait.
Runtime VM di GDC dipaketkan dengan Google Distributed Cloud dan resource kustom VMRuntime
tersedia di cluster Anda yang menjalankan workload.
Meskipun Anda belum
mengaktifkan Runtime VM di GDC,
snapshot masih berisi deskripsi YAML resource kustom VMRuntime
.
Jika Anda telah mengaktifkan Runtime VM di GDC, snapshot akan berisi status dan informasi konfigurasi untuk resource terkait VM (jika objek ada) di cluster Anda. Resource terkait VM mencakup objek Kubernetes, seperti Pod, Deployment, DaemonSet, dan ConfigMap.
Objek dalam namespace vm-system
Informasi status dan konfigurasi untuk objek berikut terletak di
kubectlCommands/vm-system
dalam snapshot yang dihasilkan:
KubeVirt
VirtualMachineType
VMHighAvailabilityPolicy
Objek di namespace lain
Saat membuat VM (VirtualMachine
), Anda dapat menentukan namespace. Jika Anda
tidak menentukan namespace, VM akan mendapatkan namespace default
. Objek
lainnya di bagian ini, seperti VirtualMachineInstance
, semuanya terikat dengan
namespace untuk VM yang sesuai.
Informasi status dan konfigurasi untuk objek berikut terletak di
kubectlCommands/VM_NAMESPACE
dalam snapshot yang dihasilkan. Jika Anda tidak menetapkan namespace tertentu untuk VM, informasi tersebut berada di kubectlCommands/default
:
VirtualMachine
VirtualMachineInstance
VirtualMachineDisk
GuestEnvironmentData
VirtualMachineAccessRequest
VirtualMachinePasswordResetRequest
Objek yang tidak memiliki namespace
Objek berikut tidak memiliki namespace, sehingga informasi terkaitnya
berada langsung di kubectlCommands
dalam snapshot yang dihasilkan:
VMRuntime
DataVolume
CDI
GPUAllocation
Menggunakan file konfigurasi snapshot untuk mengambil detail VM saja
Jika mendiagnosis masalah untuk VM secara khusus, Anda dapat menggunakan file konfigurasi snapshot untuk membatasi informasi yang dikumpulkan hanya ke detail terkait VM dan menyesuaikan informasi VM yang dikumpulkan.
File konfigurasi snapshot berikut mengilustrasikan cara membuat snapshot khusus VM. Anda dapat menyertakan perintah tambahan untuk mengumpulkan lebih banyak informasi untuk snapshot.
---
kubectlCommands:
- commands:
- kubectl get vm -o wide
- kubectl get vmi -o wide
- kubectl get gvm -o wide
- kubectl get vm -o yaml
- kubectl get vmi -o yaml
- kubectl get gvm -o yaml
- kubectl describe vm
- kubectl describe vmi
- kubectl describe gvm
namespaces:
- .*
- commands:
- kubectl get virtualmachinetype -o wide
- kubectl get virtualmachinedisk -o wide
- kubectl get virtualmachinetype -o yaml
- kubectl get virtualmachinedisk -o yaml
- kubectl describe virtualmachinetype
- kubectl describe virtualmachinedisk
namespaces:
- vm-system
Untuk informasi selengkapnya tentang cara menggunakan file konfigurasi snapshot, lihat Snapshot yang disesuaikan dalam dokumen ini.
Langkah selanjutnya
Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.