Pemecahan masalah pendaftaran node


Dokumen ini menjelaskan cara menyelesaikan masalah yang dialami saat menambahkan node ke cluster Google Kubernetes Engine (GKE) Standard. Beberapa skenario tempat terjadinya masalah ini mencakup pembuatan cluster dan pembuatan node pool, serta selama peristiwa peningkatan skala.

Untuk menyelesaikan masalah terkait cluster GKE Autopilot, silakan melihat Pemecahan masalah cluster Autopilot.

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.

Tentang pendaftaran node

Node adalah instance VM Compute Engine yang dibuat GKE untuk Anda. Ketika ditambahkan ke cluster GKE, node baru harus didaftarkan dengan panel kontrol cluster. Proses ini, yang disebut pendaftaran node atau bootstrap node, terjadi saat node dibuat.

Saat pendaftaran node terjadi

Pendaftaran node terjadi setiap kali node dibuat, termasuk skenario berikut:

Proses pendaftaran node mengikuti langkah-langkah berikut:

  1. Jumlah node yang ditetapkan untuk node pool direplikasi ke grup instance terkelola (MIG).
  2. MIG membuat jumlah instance VM yang diperlukan.
  3. Untuk setiap instance VM yang dibuat:

    1. Instance VM akan di-booting.
    2. Instance VM mengonfigurasi dan menginstal paket yang diperlukan untuk dijalankan sebagai node Kubernetes.
    3. Kubelet yang sekarang berjalan pada instance VM berkomunikasi dengan server API panel kontrol untuk mendaftar sebagai node.

Pesan error pendaftaran node

Saat GKE mencoba menambahkan node ke cluster Anda, error berikut akan muncul di Konsol Google Cloud jika pendaftaran node gagal:

  All cluster resources were brought up, but: only 0 nodes out of * have
  registered; this is likely due to the Nodes failing to start correctly; try
  re-creating the cluster or contact support if that doesn't work.

Pesan error ini menunjukkan bahwa node tidak berhasil mendaftar ke cluster. Bagian berikut menjelaskan beberapa kemungkinan penyebab error ini.

Prasyarat untuk keberhasilan pendaftaran node

Keberhasilan pendaftaran node ke cluster GKE bergantung pada beberapa faktor seperti berikut:

  • Konektivitas jaringan.
  • Ketersediaan resource.
  • Izin akun layanan.

Prasyarat untuk pembuatan instance

Saat GKE membuat node untuk cluster Anda, langkah pertamanya adalah membuat instance VM Compute Engine baru.

Pembuatan instance mungkin gagal karena salah satu alasan berikut:

Pembuatan instance yang gagal berarti bahwa selama rentang waktu ketika GKE mencoba membuat instance untuk mendaftar sebagai node GKE, ada log pembuatan instance yang hilang karena instance tidak pernah dibuat. Untuk memeriksa log yang hilang, silakan melihat petunjuk untuk menemukan instance yang gagal melakukan pendaftaran node.

Izin akun layanan

Node GKE memiliki akun layanan IAM yang terkait dengannya. Secara default, akun layanan ini adalah akun layanan default Compute Engine. Sebaiknya lakukan hardening cluster menggunakan akun layanan IAM kustom yang memiliki izin minimum yang diperlukan.

Akun layanan ini harus memiliki izin yang benar agar instance VM dapat diinisialisasi sebagai node GKE. Jika Anda menghapus akun layanan, menonaktifkannya, atau tidak memberikan izin yang benar, pendaftaran node mungkin akan gagal.

Prasyarat untuk koneksi jaringan ke Google API dan layanan Google

Instance VM mendownload paket untuk dipersiapkan agar dijalankan sebagai node GKE, dan waktu tunggu koneksi dapat berarti bahwa cluster Anda belum memenuhi persyaratan jejaring yang diperlukan untuk terhubung ke Google API dan layanan Google, seperti storage.googleapis.com. Jika tidak dapat terhubung ke layanan ini, instance tidak dapat mendownload distribusi Kubernetes dan menyelesaikan proses pendaftaran node.

Bergantung pada koneksi jaringan Anda, mengizinkan koneksi ini dapat berarti mengonfigurasi Akses Google Pribadi, atau memiliki aturan firewall dan rute dalam jaringan Virtual Private Cloud (VPC) cluster Anda yang mengizinkan koneksi.

Prasyarat untuk koneksi jaringan dengan panel kontrol

Konektivitas antara panel kontrol dan node sangat penting untuk pendaftaran node dan fungsi reguler. Komunikasi ini diizinkan secara default. Pastikan bahwa saat menerapkan aturan firewall VPC, komunikasi antara node dan panel kontrol masih diizinkan.

Untuk informasi selengkapnya, silakan melihat Mengizinkan konektivitas panel kontrol.

Menggunakan Pemeriksa Pendaftaran Node untuk pemecahan masalah pendaftaran node

Utilitas Pemeriksa Pendaftaran Node berjalan pada instance yang baru dibuat dan memeriksa apakah instance telah berhasil menyelesaikan langkah-langkah pendaftaran node.

Jika pendaftaran node gagal, aplikasi utilitas akan membuat laporan ringkasan tempat Anda dapat melihat prasyarat yang tidak terpenuhi berdasarkan tahapan dalam proses pendaftaran tempat kegagalan terjadi.

Gunakan petunjuk di bagian selanjutnya untuk menemukan instance yang gagal melakukan pendaftaran node dan gunakan ringkasan Pemeriksa Pendaftaran Node untuk mengetahui penyebab kegagalannya.

Menemukan instance yang gagal melakukan pendaftaran node

Jika satu atau beberapa instance gagal didaftarkan sebagai node dengan panel kontrol cluster GKE, Anda dapat melihat jumlah instance yang gagal dari pesan error yang ditampilkan dalam halaman Detail Cluster Konsol Google Cloud. Jika beberapa instance gagal didaftarkan sekaligus, hal ini mungkin disebabkan oleh alasan mendasar yang sama. Oleh karena itu, Anda dapat menggunakan salah satu instance yang gagal untuk menyelidiki penyebab semua instance gagal.

Namun, karena instance tidak terdaftar sebagai node GKE, Anda harus menggunakan petunjuk berikut untuk menemukan nama VM Compute Engine dasar yang gagal terdaftar.

  1. Di Konsol Google Cloud, buka halaman Logs Explorer:

    Buka Logs Explorer

  2. Gunakan filter log berikut untuk menemukan log pembuatan instance VM:

    resource.type="gce_instance"
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
    protoPayload.requestMetadata.callerSuppliedUserAgent="GCE Managed Instance Group for GKE"
    protoPayload.response.status="RUNNING"
    

    Ganti PROJECT_ID dengan project ID untuk cluster Anda.

  3. Gunakan histogram di bawah filter log untuk mempersempit rentang waktu ke saat pembuatan node dilakukan.

  4. Klik salah satu log yang muncul di bagian Hasil kueri, lalu klik Luaskan kolom bertingkat untuk menampilkan detail lebih lanjut.

  5. Temukan kolom protoPayload.resourceName. Bagian akhir dari jalur yang tercantum di sana adalah nama instance. Nama instance mengikuti format yang dimulai dengan nama cluster dan nama node pool, misalnya:

    gke-cluster-1-default-pool-b0ac62d3-9g1v adalah instance untuk node pool default-pool di gke-cluster-1.

  6. Di Konsol Google Cloud, buka halaman Instance VM Compute Engine.

    Buka instance VM

    Temukan nama instance VM menggunakan filter. Klik untuk mengetahui detail selengkapnya.

Pemecahan masalah instance dengan Pemeriksa Pendaftaran Node

Setelah menemukan nama instance yang gagal mendaftar, Anda dapat menyelidiki penyebab kegagalannya menggunakan Pemeriksa Pendaftaran Node.

Di tab Detail instance VM, di bagian Log, klik Port serial 1 (konsol).

Output untuk instance yang baru dibuat meliputi hal berikut, yang menunjukkan bahwa Pemeriksa Pendaftaran Node telah dimulai:

** Starting Node Registration Checker **
** Loading variables from kube-env **
** Sleeping for 7m to allow registration to complete  **

Jika pendaftaran node berhasil, output akan menyertakan pesan berikut:

** Node ready and registered. **
** Completed running Node Registration Checker **

Jika Anda tidak melihat pesan ini, pendaftaran node gagal dan Pemeriksa Pendaftaran Node membuat laporan yang merangkum penyebab gagalnya pendaftaran. Cari pesan tambahan berikut untuk melihat ringkasannya:

** Here is a summary of the checks performed: **

Di bawah pesan ini, cari tabel yang mirip dengan yang berikut:

------------------------------
Service    DNS      Reachable
------------------------------
LOGGING    true     true
GCR        true     true
GCS        true     true
Master     N/A      false
------------------------------

Jika LOGGING, GCR, atau GCS tercantum sebagai tidak dapat dijangkau, periksa Izin akun layanan untuk pendaftaran node dan Koneksi jaringan ke Google API dan layanan untuk pendaftaran node.

Jika Master tercantum sebagai tidak dapat dijangkau, periksa prasyarat untuk Koneksi jaringan dengan panel kontrol untuk pendaftaran node.

Setelah Anda menyelesaikan semua masalah yang mencegah keberhasilan pendaftaran node, lihat Menyelesaikan pendaftaran node setelah memperbaiki akar masalah.

Jika langkah-langkah sebelumnya tidak memberi tahu Anda alasan kegagalan pendaftaran node, lihat Mengumpulkan informasi untuk penyelidikan lebih lanjut.

Pemecahan masalah pendaftaran node tanpa Pemeriksa Pendaftaran Node

Gunakan langkah-langkah ini hanya sebagai upaya terakhir jika Anda telah memeriksa Prasyarat untuk keberhasilan pendaftaran node dan mencoba Pemeriksa Pendaftaran Node.

Setelah Anda menyelesaikan semua masalah yang mencegah keberhasilan pendaftaran node, selesaikan pendaftaran node setelah memperbaiki akar masalah.

Jika tidak ada langkah penyelidikan di halaman ini yang memberi tahu Anda alasan kegagalan pendaftaran node, silakan melihat Mengumpulkan informasi untuk penyelidikan lebih lanjut.

Memeriksa izin akun layanan untuk pendaftaran node

Akun layanan yang digunakan node Anda harus memiliki izin prasyarat untuk pendaftaran node. Gunakan petunjuk berikut untuk memeriksa apakah Anda telah memenuhi prasyarat ini:

  1. Menemukan instance yang gagal melakukan pendaftaran node.

  2. Di tab Detail instance VM, di bagian Pengelolaan API dan identitas, cari nama akun layanan pada kolom Akun layanan. Jika node menggunakan akun layanan default Compute Engine, namanya akan mengikuti format PROJECT_NUMBER-compute@developer.gserviceaccount.com. Akun layanan ini harus memiliki izin minimum yang diperlukan.

  3. Periksa indikator pendaftaran yang berhasil di output konsol serial. Di tab Detail instance VM, di bagian Log, klik Port serial 1 (konsol).

    Jika instance menggunakan akun layanan dengan izin yang benar, outputnya akan mencakup hal berikut:

    • Started Download and install k8s binaries and configurations
    • Started Docker Application Container Engine.
    • Started Configure kubernetes node.
    • Reached target Kubernetes.

    Pesan-pesan ini akan ditemukan di berbagai tempat dalam output ini. Pesan-pesan ini juga mungkin memiliki stempel waktu atau artefak lain yang mengganggunya, seperti ini: Starting [0;1;39mConfigure kubernetes node. Jika Anda melihat semua pesan ini, prasyarat akun layanan telah terpenuhi.

    Jika Anda tidak melihat pesan ini, akun layanan yang ditetapkan ke instance VM mungkin dihapus, dinonaktifkan, atau tidak memiliki izin yang benar.

Memeriksa koneksi jaringan ke Google API dan layanan Google untuk pendaftaran node

Memeriksa koneksi dengan akses SSH

Jika memiliki akses SSH ke instance VM di project, Anda juga dapat memeriksa apakah instance VM memiliki koneksi jaringan ke Google API dan layanan Google.

  1. Menemukan instance yang gagal melakukan pendaftaran node.

  2. Di tab Detail instance VM, klik SSH.

  3. Setelah Anda terhubung ke command line untuk instance VM, jalankan perintah berikut untuk memeriksa koneksi ke Google API dan layanan Google:

    curl -m 5 -v https://storage.googleapis.com/generate_204
    

    Jika koneksi berhasil, output-nya akan mirip dengan berikut ini:

    *   Trying 142.250.148.128:443...
    * Connected to storage.googleapis.com (142.250.148.128) port 443 (#0)
    
    ...
    
    < HTTP/1.1 204 No Content
    < Content-Length: 0
    < Cross-Origin-Resource-Policy: cross-origin
    < Date: Wed, 04 Jan 2023 00:58:41 GMT
    <
    * Connection #0 to host storage.googleapis.com left intact
    

    Jika koneksi tidak berhasil, output-nya akan mirip dengan berikut ini:

    *   Trying 142.250.148.128:443...
    * Connection timed out after 5000 milliseconds
    * Closing connection 0
    curl: (28) Connection timed out after 5000 milliseconds
    

    Jika waktu koneksi habis dan alamat IP yang ditampilkan berada dalam rentang alamat IP 199.36.153.0/24, pastikan bahwa cluster Anda telah memenuhi persyaratan jejaring untuk terhubung ke Google API dan layanan Google. Jika waktu koneksi habis dan alamat IP yang ditampilkan tidak berada dalam rentang alamat IP yang disebutkan, periksa apakah adaaturan firewall yang memblokir traffic keluar atau rute yang salah dikonfigurasi di jaringan VPC cluster Anda.

    Biarkan koneksi SSH ke instance VM tetap terbuka dan lanjutkan ke bagian berikutnya.

Memeriksa koneksi tanpa akses SSH menggunakan Uji Konektivitas

Jika Anda tidak memiliki akses SSH ke instance VM, gunakan Uji Konektivitas untuk memeriksa apakah instance VM memiliki koneksi ke Google API dan layanan Google.

  1. Menemukan instance yang gagal melakukan pendaftaran node.

  2. Buat dan Jalankan Uji Konektivitas dengan instance VM sebagai Sumber dan storage.googleapis.com TCP/443 sebagai Tujuan.

    Gunakan hasil pengujian untuk memeriksa konfigurasi jaringan cluster Anda.

Memeriksa koneksi jaringan dengan panel kontrol untuk pendaftaran node

Jika memiliki akses SSH ke instance VM di project, Anda dapat memeriksa apakah instance VM memiliki koneksi jaringan ke panel kontrol cluster.

  1. Menemukan instance yang gagal melakukan pendaftaran node.

  2. Di tab Detail instance VM, klik SSH.

  3. Setelah Anda terhubung ke command line untuk instance VM, simpan endpoint panel kontrol cluster sebagai variabel lingkungan:

    source <(sudo grep KUBERNETES_MASTER_NAME /home/kubernetes/kube-env)
    
  4. Kirim permintaan GET ke endpoint panel kontrol:

    curl -k -m 5  https://${KUBERNETES_MASTER_NAME}/version
    

    Jika output-nya mirip dengan berikut ini, maka instance VM dapat terhubung ke panel kontrol:

    {
    "major": "1",
    "minor": "24",
    "gitVersion": "v1.24.7-gke.900",
    "gitCommit": "e35c4457f66187eff006dda6d2c0fe12144ef2ec",
    "gitTreeState": "clean",
    "buildDate": "2022-10-26T09:25:34Z",
    "goVersion": "go1.18.7b7",
    "compiler": "gc",
    "platform": "linux/amd64"
    }
    

    Jika output-nya mirip dengan berikut ini, maka instance VM tidak dapat terhubung ke panel kontrol:

    curl: (28) Connection timed out after 5000 milliseconds
    

Jika instance VM tidak dapat terhubung ke panel kontrol, silakan melihat bagian tentang mengizinkan konektivitas panel kontrol dalam praktik terbaik jejaring GKE.

Menyelesaikan pendaftaran node setelah memperbaiki akar masalah

Setelah menyelesaikan masalah yang memblokir pendaftaran node, apa yang harus Anda lakukan selanjutnya bergantung pada konteks kegagalan:

  • Jika pendaftaran node gagal saat pembuatan cluster, hapus cluster, lalu coba lagi.
  • Jika pendaftaran node gagal selama penskalaan dengan autoscaler cluster, tunggu instance VM mencoba dan mendaftar lagi.
  • Jika pendaftaran node gagal saat pembuatan node pool:
    • Jika instance VM dibuat, tunggu hingga instance VM mencoba dan mendaftar lagi.
    • Jika instance VM tidak dibuat, hapus node pool, lalu coba lagi.
  • Jika pendaftaran node gagal saat mengubah ukuran cluster, jalankan kembali perintah untuk meningkatkan ukuran cluster.
  • Jika pendaftaran node gagal di luar cakupan operasi, seperti selama operasi perbaikan, tunggu instance VM mencoba dan mendaftar lagi.

Mengumpulkan informasi untuk penyelidikan lebih lanjut

Jika tidak dapat menyelesaikan masalah pendaftaran node, Anda dapat mengumpulkan informasi tambahan untuk membantu penyelidikan Cloud Customer Care dengan petunjuk berikut. Langkah-langkah ini memerlukan akses SSH ke instance VM dalam project Anda dan menggunakan aplikasi utilitas sosreport, yang disertakan dalam image COS.

  1. Menemukan instance yang gagal melakukan pendaftaran node.

  2. Kumpulkan informasi proses debug menggunakan sosreport.

    Atau, jika node Anda tidak mendownload aplikasi utilitas sosreport dan aplikasi tersebut tidak dapat diinstal, kumpulkan informasi proses debug secara manual dengan menjalankan perintah berikut:

    sudo journalctl -u cloud-init-local
    sudo journalctl -u cloud-init
    sudo journalctl -u cloud-final
    sudo journalctl -u cloud-config
    systemctl status kubelet
    journalctl -u kubelet
    systemctl status kube-node-installation.service
    systemctl status kube-node-configuration.service
    journalctl -u kube-node-installation.service --no-pager
    journalctl -u kube-node-configuration.service --no-pager
    journalctl -u kubelet.service --no-pager
    
  3. Masukkan informasi ini ke dalam file zip dan sertakan saat mengirimkan kasus dukungan ke Cloud Customer Care.

Langkah selanjutnya

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.