Mendiagnosis penyebab utama masalah Google Kubernetes Engine (GKE) sering kali memerlukan pemeriksaan mendetail terhadap status aktif, konfigurasi, dan peristiwa resource Kubernetes Anda. Untuk mengatasi gejala tingkat permukaan, Anda memerlukan alat untuk mengirim kueri dan berinteraksi langsung dengan bidang kontrol cluster.
Gunakan halaman ini untuk mempelajari perintah kubectl
penting untuk menyelidiki status live cluster Anda. Dengan mempelajari perintah ini, Anda dapat mengumpulkan informasi mendetail langsung dari bidang kontrol Kubernetes, sehingga membantu Anda memahami mengapa masalah terjadi.
Informasi ini penting bagi admin dan operator Platform yang perlu melakukan pemeriksaan kondisi cluster secara mendalam, mengelola resource, dan memecahkan masalah infrastruktur pada tingkat perincian. Hal ini juga penting bagi developer Aplikasi untuk men-debug perilaku aplikasi, memeriksa log dan peristiwa Pod, serta memverifikasi status persis deployment mereka dalam lingkungan Kubernetes. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE umum.
Sebelum memulai
Sebelum memulai, lakukan tugas berikut:
- Instal kubectl.
Konfigurasi alat command line
kubectl
untuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials CLUSTER_NAME \ --location=LOCATION
Ganti kode berikut:
CLUSTER_NAME
: nama cluster Anda.LOCATION
: lokasi Compute Engine bidang kontrol cluster Anda. Berikan region untuk cluster regional, atau zona untuk cluster zonal.
Tinjau izin Anda. Untuk melihat apakah Anda memiliki izin yang diperlukan untuk menjalankan perintah
kubectl
, gunakan perintahkubectl auth can-i
. Misalnya, untuk melihat apakah Anda memiliki izin untuk menjalankankubectl get nodes
, jalankan perintahkubectl auth can-i get nodes
.Jika Anda memiliki izin yang diperlukan, perintah akan menampilkan
yes
; jika tidak, perintah akan menampilkanno
.Jika tidak memiliki izin untuk menjalankan perintah
kubectl
, Anda mungkin melihat pesan error yang serupa dengan berikut:Error from server (Forbidden): pods "POD_NAME" is forbidden: User "USERNAME@DOMAIN.com" cannot list resource "pods" in API group "" in the namespace "default"
Jika Anda tidak memiliki izin yang diperlukan, minta administrator cluster Anda untuk menetapkan peran yang diperlukan kepada Anda.
Mendapatkan ringkasan tentang apa yang sedang berjalan
Perintah kubectl get
membantu Anda melihat gambaran umum tentang apa yang terjadi di cluster Anda. Gunakan perintah berikut untuk melihat status dua komponen cluster yang paling
penting, yaitu node dan Pod:
Untuk memeriksa apakah node Anda berfungsi dengan baik, lihat detail tentang semua node dan statusnya:
kubectl get nodes
Outputnya mirip dengan hal berikut ini:
NAME STATUS ROLES AGE VERSION gke-cs-cluster-default-pool-8b8a777f-224a Ready <none> 4d23h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-egb2 Ready <none> 4d22h v1.32.3-gke.1785003 gke-cs-cluster-default-pool-8b8a777f-p5bn Ready <none> 4d22h v1.32.3-gke.1785003
Status selain
Ready
memerlukan penyelidikan tambahan.Untuk memeriksa apakah Pod Anda dalam kondisi baik, lihat detail tentang semua Pod dan statusnya:
kubectl get pods --all-namespaces
Outputnya mirip dengan hal berikut ini:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system netd-6nbsq 3/3 Running 0 4d23h kube-system netd-g7tpl 3/3 Running 0 4d23h
Status selain
Running
memerlukan penyelidikan tambahan. Berikut beberapa status umum yang mungkin Anda lihat:Running
: status berjalan yang sehat.Pending
: Pod menunggu untuk dijadwalkan pada node.CrashLoopBackOff
: container dalam Pod berulang kali error dalam loop karena aplikasi dimulai, keluar dengan error, dan kemudian dimulai ulang oleh Kubernetes.ImagePullBackOff
: Pod tidak dapat menarik image container.
Perintah sebelumnya hanyalah dua contoh cara Anda dapat menggunakan perintah kubectl
get
. Anda juga dapat menggunakan perintah ini untuk mempelajari lebih lanjut berbagai jenis resource Kubernetes. Untuk mengetahui daftar lengkap resource yang dapat Anda jelajahi, lihat
kubectl get
dalam dokumentasi Kubernetes.
Mempelajari lebih lanjut resource tertentu
Setelah mengidentifikasi masalah, Anda perlu mendapatkan detail selengkapnya. Contoh masalahnya adalah Pod yang tidak memiliki status Running
. Untuk mendapatkan detail selengkapnya, gunakan perintah kubectl describe
.
Misalnya, untuk mendeskripsikan Pod tertentu, jalankan perintah berikut:
kubectl describe pod POD_NAME -n NAMESPACE_NAME
Ganti kode berikut:
POD_NAME
: nama Pod yang mengalami masalah.NAMESPACE_NAME
: namespace tempat Pod berada. Jika Anda tidak yakin dengan namespace-nya, tinjau kolomNamespace
dari output perintahkubectl get pods
.
Output perintah kubectl describe
mencakup informasi mendetail tentang
resource Anda. Berikut beberapa bagian yang paling berguna untuk ditinjau saat Anda memecahkan masalah Pod:
Status
: status Pod saat ini.Conditions
: keseluruhan kondisi dan kesiapan Pod.Restart Count
: berapa kali container dalam Pod telah di-restart. Jumlah yang tinggi dapat menjadi penyebab kekhawatiran.Events
: log hal-hal penting yang telah terjadi pada Pod ini, seperti dijadwalkan ke node, menarik image container-nya, dan apakah terjadi error. BagianEvents
sering kali menjadi tempat Anda dapat menemukan petunjuk langsung mengapa Pod gagal.
Seperti perintah kubectl get
, Anda dapat menggunakan perintah kubectl describe
untuk
mempelajari lebih lanjut beberapa jenis resource. Untuk mengetahui daftar lengkap resource
yang dapat Anda jelajahi, lihat
kubectl describe
dalam dokumentasi Kubernetes.
Langkah berikutnya
Baca Melakukan analisis historis dengan Cloud Logging (halaman berikutnya dalam seri ini).
Lihat penerapan konsep ini dalam contoh skenario pemecahan masalah.
Untuk mendapatkan saran tentang cara menyelesaikan masalah tertentu, tinjau panduan pemecahan masalah GKE.
Jika Anda tidak dapat menemukan solusi untuk masalah Anda dalam dokumentasi, lihat Mendapatkan dukungan untuk mendapatkan bantuan lebih lanjut, termasuk saran tentang topik berikut:
- Membuka kasus dukungan dengan menghubungi Layanan Pelanggan Cloud.
- Mendapatkan dukungan dari komunitas dengan
mengajukan pertanyaan di StackOverflow
dan menggunakan tag
google-kubernetes-engine
untuk menelusuri masalah serupa. Anda juga dapat bergabung ke#kubernetes-engine
channel Slack untuk mendapatkan dukungan komunitas lainnya. - Membuka bug atau permintaan fitur menggunakan issue tracker publik.