Reset node dan hapus cluster

Saat GKE pada cluster Bare Metal sedang dalam proses penginstalan, biner dan layanan yang disistem akan diinstal pada node yang menghosting cluster tersebut, dan layanan akan mulai memproses port pada node.

Namun, jika penginstalan cluster gagal, semua biner dan layanan ini harus dihapus. Dengan kata lain, node perlu direset atau dihapus total untuk menyiapkannya guna mencoba menginstal cluster lagi. Jika node tidak direset dengan cara ini, upaya berikutnya untuk menginstal cluster pada node tersebut akan gagal.

Halaman ini menjelaskan cara membersihkan operasi node tertentu dan cara menghapus cluster.

Memilih metode penghapusan

Metode yang Anda gunakan untuk menghapus cluster bergantung pada:

  • Jenis cluster.
  • Jika Anda hanya ingin membersihkan node tertentu dan bukan menghapus seluruh cluster.
  • Cara cluster dibuat.

GKE di Bare Metal menyediakan metode penghapusan berikut:

  • Konsol Google Cloud atau Google Cloud CLI:

    • Gunakan konsol atau gcloud CLI untuk menghapus cluster pengguna yang dikelola oleh GKE On-Prem API. Cluster pengguna dikelola oleh GKE On-Prem API jika salah satu kondisi berikut terpenuhi:

  • bmctl:

    • Gunakan bmctl reset nodes untuk mereset node tertentu.
    • Gunakan bmctl reset untuk menghapus jenis cluster berikut:

      • Cluster admin, hybrid, dan mandiri (disebut sebagai cluster yang dikelola sendiri). Hal ini termasuk cluster admin yang dikelola oleh GKE On-Prem API.
      • Cluster pengguna yang tidak dikelola oleh GKE On-Prem API.

    Jika Anda menggunakan bmctl untuk mereset node atau menghapus cluster, perintah ini mengharapkan file konfigurasi cluster berada di direktori kerja saat ini. Secara default, jalurnya seperti berikut:

    bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

    Jika menggunakan flag --workspace-dir untuk menentukan direktori yang berbeda selama pembuatan cluster, Anda harus menggunakan flag tersebut untuk menentukan direktori kerja selama reset cluster.

  • kubectl:

    • Gunakan kubectl delete cluster untuk menghapus hanya cluster pengguna yang tidak dikelola oleh cluster GKE On-Prem API. Jangan menjalankan perintah pada jenis cluster lainnya.
    • Perhatikan bahwa jika menggunakan kubectl delete cluster, Anda juga harus menghapus namespace tempat cluster berada setelah menghapus cluster.

Setelah menghapus cluster, Anda dapat menginstal ulang cluster tersebut setelah melakukan perubahan konfigurasi yang diperlukan.

Hapus cluster yang dikelola sendiri

Untuk menghapus admin, cluster hybrid, atau cluster mandiri, jalankan perintah berikut:

bmctl reset --cluster CLUSTER_NAME

Dalam perintah, ganti CLUSTER_NAME dengan nama cluster yang ingin Anda reset.

Output dari perintah bmctl cluster reset terlihat mirip dengan contoh ini:

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

Selain menghapus cluster, perintah ini menghapus keanggotaan cluster dari fleet.

Untuk cluster admin yang dikelola oleh GKE On-Prem API, Anda juga perlu menghapus resource API di Google Cloud. Jika tidak, cluster akan ditampilkan di halaman Cluster GKE di Google Cloud Console. Gunakan perintah berikut untuk menghapus resource GKE On-Prem API untuk cluster admin:

gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --ignore-errors

Ganti kode berikut:

  • FLEET_HOST_PROJECT_ID: Project ID fleet tempat cluster admin menjadi anggota.

  • REGION: Region Google Cloud tempat GKE On-Prem API menyimpan metadata cluster.

Tanda --ignore-errors memastikan bahwa pembatalan pendaftaran resource cluster admin bare metal berhasil meskipun terjadi error selama pembatalan pendaftaran.

Setelah penghapusan cluster selesai, Anda dapat membuat cluster baru. Untuk mengetahui detailnya, lihat Ringkasan pembuatan cluster.

Hapus cluster pengguna

Jika cluster pengguna dikelola oleh GKE On-Prem API, hapus cluster menggunakan konsol atau gcloud CLI. Jika tidak, gunakan bmctl atau kubectl untuk menghapus cluster.

bmctl

Anda dapat menggunakan bmctl untuk menghapus cluster pengguna yang dibuat dengan bmctl atau kubectl, dan yang tidak terdaftar di GKE On-Prem API.

Jalankan perintah berikut untuk menghapus cluster pengguna dengan bmctl:

bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan Anda:

  • USER_CLUSTER_NAME: nama cluster pengguna yang akan Anda hapus.

  • ADMIN_KUBECONFIG_PATH: jalur ke file kubeconfig cluster admin yang terkait. bmctl mendukung penggunaan --kubeconfig sebagai alias untuk tanda --admin-kubeconfig.

Output dari perintah bmctl cluster reset terlihat mirip dengan contoh ini:

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

kubectl

Anda dapat menggunakan kubectl untuk menghapus cluster pengguna yang dibuat dengan bmctl atau kubectl, dan yang tidak terdaftar di GKE On-Prem API. Agar dapat menggunakan kubectl untuk menghapus cluster pengguna, Anda harus menghapus objek cluster terlebih dahulu, lalu namespace-nya. Jika tidak, tugas untuk mereset mesin tidak dapat dibuat, dan proses penghapusan mungkin akan terhenti tanpa batas waktu.

Untuk menghapus cluster pengguna dengan kubectl:

  1. Jalankan perintah berikut untuk menghapus objek cluster:

    kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH

    Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan Anda:

    • USER_CLUSTER_NAME: nama cluster pengguna yang akan Anda hapus.

    • USER_CLUSTER_NAMESPACE: namespace untuk cluster. Secara default, namespace cluster untuk GKE di Bare Metal adalah nama cluster yang diawali dengan cluster-. Misalnya, jika Anda menamai cluster Anda test, namespace akan memiliki nama seperti cluster-test.

    • ADMIN_KUBECONFIG_PATH: jalur ke file kubeconfig cluster admin yang terkait.

  2. Setelah cluster berhasil dihapus, jalankan perintah berikut untuk menghapus namespace:

    kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH

Konsol

Jika cluster pengguna dikelola oleh GKE On-Prem API, lakukan langkah-langkah berikut untuk menghapus cluster:

  1. Di konsol, buka halaman ringkasan cluster Google Kubernetes Engine.

    Buka cluster GKE

  2. Pilih project Google Cloud tempat cluster pengguna berada.

  3. Di daftar cluster, klik cluster yang ingin dihapus.

  4. Dalam daftar cluster, cari cluster yang ingin dihapus. Jika Type adalah external, hal ini menunjukkan bahwa cluster dibuat menggunakan bmctl dan tidak didaftarkan di GKE On-Prem API. Dalam hal ini, ikuti langkah-langkah di tab bmctl atau kubectl untuk menghapus cluster.

    Jika ikon di kolom Status menunjukkan masalah, ikuti langkah-langkah di tab gcloud CLI untuk menghapus cluster. Anda harus menambahkan flag --ignore-errors ke perintah delete.

  5. Klik nama cluster yang ingin dihapus.

  6. Di panel Details, di dekat bagian atas jendela, klik Delete.

  7. Saat diminta untuk mengonfirmasi, masukkan nama cluster dan klik Hapus.

gcloud CLI

Jika cluster pengguna dikelola oleh GKE On-Prem API, lakukan langkah-langkah berikut untuk menghapus cluster di komputer yang telah menginstal gcloud CLI:

  1. Login dengan Akun Google Anda:

    gcloud auth login
    
  2. Perbarui komponen:

    gcloud components update
    
  3. Dapatkan daftar cluster untuk membantu memastikan bahwa Anda menentukan nama cluster yang benar dalam perintah delete:

    gcloud container bare-metal clusters list \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Ganti kode berikut:

    • FLEET_HOST_PROJECT_ID: ID project tempat cluster dibuat.

    • LOCATION: Lokasi Google Cloud yang terkait dengan cluster pengguna.

    Outputnya mirip dengan hal berikut ini:

    NAME                      LOCATION    VERSION         ADMIN_CLUSTER            STATE
    example-user-cluster-1a   us-west1    1.16.7          example-admin-cluster-1  RUNNING
    
  4. Jalankan perintah berikut untuk menghapus cluster:

    gcloud container bare-metal clusters delete USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --force \
      --allow-missing
    

    Ganti kode berikut:

    • USER_CLUSTER_NAME: Nama cluster pengguna yang akan dihapus.

    • FLEET_HOST_PROJECT_ID: ID project tempat cluster dibuat.

    • LOCATION: Lokasi Google Cloud yang terkait dengan cluster pengguna.

    Flag --force memungkinkan Anda menghapus cluster yang memiliki kumpulan node. Tanpa flag --force, Anda harus menghapus kumpulan node terlebih dahulu, lalu menghapus cluster.

    Flag --allow-missing adalah flag Google API standar. Jika flag ini disertakan, perintah akan menampilkan keberhasilan jika cluster tidak ditemukan.

    Jika perintah menampilkan error yang berisi teks failed connecting to the cluster's control plane, hal ini menunjukkan masalah konektivitas dengan cluster admin, Connect Agent, atau lingkungan lokal. Untuk memecahkan masalah terkait Agen Connect, lihat Mengumpulkan log Agen Connect.

    • Jika menurut Anda masalah konektivitas bersifat sementara, misalnya karena masalah jaringan, tunggu dan coba lagi perintah tersebut.

    • Jika Anda mengetahui bahwa cluster admin telah dihapus, atau jika mesin node untuk admin atau cluster pengguna telah dinonaktifkan atau dinonaktifkan, sertakan flag --ignore-errors dan coba lagi perintah tersebut.

      Anda juga perlu menyertakan --ignore-errors jika cluster dihapus menggunakan bmctl atau kubectl, yang keluar dari resource GKE On-Prem API di Google Cloud. Salah satu gejalanya adalah cluster masih ditampilkan di halaman cluster GKE di konsol dalam keadaan tidak sehat.

Untuk mengetahui informasi tentang flag lainnya, baca referensi CLI gcloud.

Mereset node cluster tertentu

Anda mungkin ingin mereset node cluster tertentu jika, misalnya, cluster admin telah dihapus, tetapi cluster pengguna yang dikelola oleh cluster admin tersebut tetap ada. Dalam hal ini, cluster pengguna secara keseluruhan tidak dapat dihapus karena cluster admin telah dihapus. Akibatnya, node cluster pengguna harus direset satu per satu.

Untuk mereset node, Anda memerlukan akun layanan dengan akses baca ke Google Container Registry (GCR). Perintah bmctl mengharapkan file kunci JSON untuk akun layanan ini sebagai argumen. Untuk mereset masing-masing node cluster, jalankan perintah berikut:

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-private-key-path SSH_KEY_PATH \
    --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
    --login-user root

Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan Anda:

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS: daftar alamat IP node yang dipisahkan koma yang ingin Anda hapus.

  • SSH_KEY_PATH: jalur ke kunci pribadi SSH. Ini adalah kunci yang akan digunakan untuk membuat koneksi SSH dengan node selama reset.

  • SERVICE_ACCOUNT_KEY_PATH: jalur ke file JSON yang berisi kunci akun layanan. Kunci ini memberi bmctl izin untuk mengambil image dari Google Container Registry. Anda dapat membuat kunci akun layanan menggunakan konsol atau gcloud CLI. Untuk mengetahui detailnya, lihat Membuat dan mengelola kunci akun layanan. Cara lain untuk membuat file kunci akun layanan adalah jika Anda menjalankan perintah create config dengan flag --create-service-accounts. Untuk mengetahui detail tentang perintah tersebut, lihat Membuat dan admin konfigurasi cluster dengan bmctl.

Detail penghapusan cluster

Selama penghapusan, pendaftaran keanggotaan fleet, pemasangan penyimpanan, dan data dari anthos-system StorageClass pada cluster akan dihapus.

Untuk semua node, antarmuka tunnel yang digunakan untuk jaringan cluster akan dihapus, dan direktori berikut akan dihapus:

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

Untuk node load balancer:

  • Layanan keepalived dan haproxy dihapus.
  • File konfigurasi untuk keepalived dan haproxy akan dihapus.