Memecahkan masalah error sistem di Backup for GKE

Halaman ini menjelaskan error terkait sistem yang mungkin Anda alami saat menggunakan Pencadangan untuk GKE, hal-hal yang perlu dipertimbangkan saat mencadangkan resource, dan langkah-langkah untuk memecahkan masalah.

Error 100010108: Gagal mencadangkan PersistentVolumeClaim - Tidak ada CMEK Rencana Pencadangan untuk disk terenkripsi

Error 100010108 terjadi saat membuat cadangan volume dengan cakupan regional, dan CMEK Paket Cadangan diwajibkan karena cluster GKE mereferensikan disk terenkripsi.

Memahami Error

Saat membuat cadangan volume dengan cakupan regional, CMEK Rencana Pencadangan diwajibkan jika cluster GKE mereferensikan disk terenkripsi. Ini adalah persyaratan ketat untuk pencadangan volume yang tercakup secara regional; jika disk sumber dienkripsi, snapshot untuk disk tersebut hanya dapat dilakukan jika CMEK Rencana Cadangan disediakan. Jika Paket Cadangan Anda tidak memiliki konfigurasi CMEK ini, pembuatan snapshot akan gagal, dan Anda akan melihat pesan error yang mirip dengan berikut ini:

failed to create snapshot as disk "pvc-1" is encrypted with CMEK "projects/proj1/locations/us-east1/keyRings/keyring1/cryptoKeys/key1/cryptoKeyVersions/1", but no Backup Plan CMEK is provided. Please add CMEK to the Backup Plan.

Langkah-Langkah Pemecahan Masalah

  1. Identifikasi konfigurasi CMEK yang tidak ada: Pesan error mengonfirmasi bahwa PVC yang dicadangkan dienkripsi, tetapi konfigurasi Paket Pencadangan tidak memiliki kunci enkripsi.
  2. Menambahkan CMEK ke Paket Pencadangan: Perbarui konfigurasi Paket Pencadangan Anda untuk menyertakan Kunci Enkripsi yang Dikelola Pelanggan (CMEK). Kunci ini akan digunakan untuk mengenkripsi data cadangan, termasuk cadangan volume yang tercakup secara regional.
  3. Pastikan izin yang tepat: Pastikan agen layanan Pencadangan untuk GKE (service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com) memiliki peran roles/cloudkms.cryptoKeyEncrypterDecrypter yang ditetapkan untuk CMEK yang baru ditambahkan.
  4. Uji Ulang Operasi Pencadangan: Setelah Rencana Pencadangan diperbarui dengan CMEK dan izin diberikan, coba lagi operasi pencadangan.

Error 100020102: CustomResourceDefinition - memiliki skema yang tidak valid - Versi API v1beta1 tidak didukung

Error 100020102 terjadi saat upaya untuk mencadangkan CustomResourceDefinition yang awalnya diterapkan sebagai versi apiextensions.k8s.io/v1beta1 gagal karena tidak memiliki skema struktural yang diperlukan dalam versi apiextensions.k8s.io/v1 API. Error ini menghasilkan pesan error berikut: CustomResourceDefinition - has an invalid schema. The resource was originally applied as v1beta1, which has been removed from Kubernetes 1.22+.

Error ini terjadi karena versi apiextensions.k8s.io/v1beta1 API dihapus di Google Kubernetes Engine versi 1.22. Untuk mengetahui informasi selengkapnya tentang penghapusan API untuk GKE versi 1.22, lihat Penghapusan API untuk GKE v1.22.

Perilaku operasi pencadangan dalam mode tidak diizinkan

Dalam mode tidak permisif, atau dalam rencana pencadangan yang ketat, operasi pencadangan akan gagal jika menemukan resource yang tidak dapat dicadangkan, seperti CustomResourceDefinition yang dibuat dengan v1beta1 API. Error ini terjadi karena resource tidak memiliki skema struktural yang diperlukan oleh v1 API. Keberadaan CustomResourceDefinition ini dianggap sebagai error kritis karena mungkin tidak dipulihkan dengan benar ke cluster yang lebih baru.

Untuk mengatasi error ini, gunakan petunjuk berikut:

  1. Identifikasi CustomResourceDefinition yang bermasalah dengan menjalankan perintah kubectl get crd:

    kubectl get crd CRD_NAME
    

    Ganti CRD_NAME dengan nama CustomResourceDefinition dari pesan error Anda.

  2. Dalam output YAML, konfirmasi apakah CustomResourceDefinition dikonversi dengan benar dari vbeta1 API ke v1 API dengan menemukan kondisi berikut:

    1. spec.versions: temukan kondisi spec.versions dengan melihat setiap versi yang tercantum di kolom spec.versions. Jika salah satu spec.versions tidak memiliki kolom schema.openAIV3Schema, CustomResourceDefinition tidak memiliki skema struktural yang ditentukan untuk versi tersebut.

    2. status.conditions: temukan kondisi status.conditions dengan menemukan kondisi type:NonStructuralSchema. Jika status status.conditions adalah true, hal ini secara eksplisit mengonfirmasi bahwa skema tidak terstruktur.

  3. Upgrade CustomResourceDefinition ke versi API v1 menggunakan langkah-langkah berikut:

    1. Edit CustomResourceDefinition yang ada agar kompatibel dengan standar v1 dengan menambahkan skema struktural yang menentukan setiap kolom dan jenisnya dalam resource kustom. Untuk mengetahui informasi selengkapnya tentang cara menambahkan skema struktural, lihat Menentukan skema struktural.

    2. Terapkan manifes v1 yang kompatibel ke cluster Anda.

  4. Jika upgrade berhasil, coba lagi operasi pencadangan. Jika tidak, gunakan salah satu metode berikut untuk mengatasi masalah:

    • Hapus CustomResourceDefinition dengan menjalankan perintah kubectl delete crd jika CustomResourceDefinition tidak digunakan di cluster.

      kubectl delete crd CRD_NAME
      

      Ganti CRD_NAME dengan nama CustomResourceDefinitionyang ingin Anda hapus.

    • Aktifkan mode permisif pada rencana cadangan, yang memungkinkan Pencadangan untuk GKE melewati resource—termasuk CustomResourceDefinitions dalam versi API v1beta1—dan melanjutkan operasi pencadangan lainnya. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan mode permisif, lihat Mengaktifkan mode permisif pada rencana pencadangan.

  5. Coba lagi operasi pencadangan. Jika operasi terus gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Error 100020103: Gagal mengkueri resource API

Error 100020103 terjadi saat Cadangan untuk GKE gagal menemukan layanan API Kubernetes kustom atau gabungan sebelum mencadangkan, sehingga menghasilkan pesan error yang menyatakan Failed to query API resources. Please check if any API service is unavailable by using 'kubectl get apiservice'. Hal ini terjadi jika layanan API gabungan salah dikonfigurasi atau jika layanan dan pod pendukungnya tidak berfungsi dengan baik atau tidak dapat dijangkau. Dalam mode non-permisif, atau dalam rencana pencadangan yang ketat, Pencadangan untuk GKE akan menghentikan operasi pencadangan jika menemukan APIService yang tidak tersedia untuk menghindari pengambilan status cluster yang tidak lengkap atau tidak konsisten.

Untuk mengatasi error ini, gunakan petunjuk berikut:

  1. Identifikasi layanan API yang tidak tersedia dengan menjalankan perintah berikut:

    kubectl get apiservice
    

    Pada output, cari layanan API yang kolom AVAILABLE-nya adalah False.

  2. Periksa detail APIService yang gagal dengan menjalankan perintah berikut:

    kubectl describe apiservice APISERVICE_NAME
    

    Ganti APISERVICE_NAME dengan nama layanan API yang gagal, misalnya, v1beta1.custom.metrics.k8s.io.

    Dalam output, tinjau kolom Service di bagian spec.service dan bagian Conditions untuk mengidentifikasi Layanan pendukung, namespace-nya, dan penyebab kegagalan (seperti endpoint yang tidak ada atau port target yang tidak dapat dijangkau).

  3. Gunakan salah satu metode berikut untuk mengatasi error:

    • Pulihkan layanan pencadangan: pastikan bahwa Service pencadangan memiliki endpoint yang siap dengan menjalankan perintah berikut:

      kubectl get endpoints -n NAMESPACE SERVICE_NAME
      

      Ganti kode berikut:

      • NAMESPACE: namespace layanan pendukung.
      • SERVICE_NAME: nama layanan pendukung.

      Verifikasi bahwa Pod yang mendukung layanan ada dan dalam status Running. Selesaikan masalah Pod yang error, kegagalan pengambilan image, atau kesalahan konfigurasi kebijakan jaringan yang mencegah traffic mencapai layanan pendukung.

    • Menghapus APIService yang tidak memiliki induk: jika APIService termasuk dalam aplikasi, operator, atau alat pemantauan yang dihapus atau tidak lagi digunakan, hapus APIService yang sudah tidak berlaku:

      kubectl delete apiservice APISERVICE_NAME
      

      Ganti APISERVICE_NAME dengan nama layanan API tanpa induk.

    • Aktifkan mode permisif: jika Anda tidak dapat segera memperbaiki atau menghapus layanan API yang tidak tersedia, aktifkan mode permisif pada paket cadangan. Jika mode permisif diaktifkan, Pencadangan untuk GKE akan melanjutkan operasi pencadangan. Namun, resource yang termasuk dalam grup API yang tidak tersedia tidak akan dicadangkan. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan mode permisif, lihat Mengaktifkan mode permisif pada rencana pencadangan.

  4. Coba lagi operasi pencadangan. Jika operasi terus gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Error 100040102: Namespace tidak ditemukan

Error 100040102 terjadi saat upaya untuk melakukan operasi pencadangan gagal karena namespace yang ditentukan dalam cakupan pencadangan tidak dapat ditemukan dalam cluster. Agen Backup for GKE tidak dapat menemukan satu atau beberapa namespace yang tercantum secara eksplisit di kolom selectedNamespaces pada konfigurasi BackupPlan. Pencadangan untuk GKE mengharuskan semua namespace yang ditentukan ada di cluster pada saat operasi pencadangan dimulai. Jika gagal menemukan namespace, pesan error berikut akan muncul:

Namespace [NAMESPACE_NAME] is not found.

Untuk mengatasi masalah ini, gunakan petunjuk berikut:

  1. Pastikan namespace telah dimasukkan dengan benar dengan memeriksa daftar selectedNamespaces di konfigurasi BackupPlan Anda.

  2. Konfirmasi bahwa namespace yang dilaporkan dalam pesan error ada dengan menjalankan perintah kubectl get namespace:

    kubectl get namespace NAMESPACE_NAME
    

    Ganti NAMESPACE_NAME dengan nama namespace yang dilaporkan dalam pesan error.

    Jika namespace tidak ada, pesan akan muncul yang menyatakan bahwa namespace tidak ditemukan, misalnya, Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not found.

  3. Perbaiki BackupPlan. Jika namespace salah dieja, perbarui BackupPlan dengan nama namespace yang benar. Jika namespace benar-benar tidak ada lagi dan tidak perlu dicadangkan, hapus namespace tersebut dari daftar selectedNamespaces dalam konfigurasi BackupPlan.

  4. Coba lagi operasi pencadangan setelah melakukan koreksi yang diperlukan pada BackupPlan dan memulai pencadangan baru.

Jika operasi terus gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.

Langkah berikutnya