Menyelidiki status cluster dengan kubectl


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 perintah kubectl auth can-i. Misalnya, untuk melihat apakah Anda memiliki izin untuk menjalankan kubectl get nodes, jalankan perintah kubectl auth can-i get nodes.

    Jika Anda memiliki izin yang diperlukan, perintah akan menampilkan yes; jika tidak, perintah akan menampilkan no.

    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:

  1. 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.

  2. 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 kolom Namespace dari output perintah kubectl 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. Bagian Events 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