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 - CMEK Paket Cadangan tidak ada 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 Paket Cadangan diwajibkan jika cluster GKE mereferensikan disk terenkripsi. Ini adalah persyaratan ketat untuk cadangan volume dengan cakupan regional; jika disk sumber dienkripsi, snapshot untuk disk tersebut hanya dapat dilakukan jika CMEK Paket 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
- Mengidentifikasi konfigurasi CMEK yang tidak ada: Pesan error mengonfirmasi bahwa PVC yang dicadangkan dienkripsi, tetapi konfigurasi Paket Cadangan tidak memiliki kunci enkripsi.
- Menambahkan CMEK ke Paket Cadangan: Perbarui konfigurasi Paket Cadangan Anda untuk menyertakan Kunci Enkripsi yang Dikelola Pelanggan (CMEK). Kunci ini akan digunakan untuk mengenkripsi data cadangan, termasuk cadangan volume dengan cakupan regional.
- Memastikan izin yang tepat: Pastikan agen layanan Pencadangan untuk GKE (
service-PROJECT_NUMBER@gcp-sa-gkebackup.s3ns-system.iam.gserviceaccount.com) memiliki peranroles/cloudkms.cryptoKeyEncrypterDecrypteryang ditetapkan untuk CMEK yang baru ditambahkan. - Menguji Ulang Operasi Pencadangan: Setelah Paket Cadangan diperbarui dengan CMEK dan izin diberikan, coba lagi operasi pencadangan.
Error 100020102: Mode permisif ketat - Gagal mencadangkan CRD - Versi API v1beta1 tidak didukung
Error 100020102 terjadi saat upaya mencadangkan CustomResourceDefinition
yang awalnya diterapkan sebagai versi apiextensions.k8s.io/v1beta1 gagal karena tidak
memiliki skema struktural yang diperlukan dalam versi API apiextensions.k8s.io/v1. Error ini menghasilkan pesan error berikut: Strict permissive mode - Failed to backup CRD - Unsupported v1beta1 API Version.
Error ini terjadi karena versi API apiextensions.k8s.io/v1 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 non-permisif
Dalam mode non-permisif, atau dalam paket cadangan ketat, operasi pencadangan akan gagal jika menemukan resource yang tidak dapat dicadangkan, seperti CustomResourceDefinition yang dibuat dengan API v1beta1. Error ini terjadi karena resource tidak memiliki skema struktural yang diperlukan oleh API v1. 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:
Identifikasi
CustomResourceDefinitionyang bermasalah dengan menjalankan perintahkubectl get crd:kubectl get crd CRD_NAMEGanti
CRD_NAMEdengan namaCustomResourceDefinitiondari pesan error Anda.Dalam output YAML, konfirmasi apakah
CustomResourceDefinitiondikonversi dengan benar dari APIvbeta1ke APIv1dengan menemukan kondisi berikut:spec.versions: temukan kondisispec.versionsdengan melihat setiap versi yang tercantum di kolomspec.versions. Jika salah satuspec.versionstidak memiliki kolomschema.openAIV3Schema,CustomResourceDefinitiontidak memiliki skema struktural yang ditentukan untuk versi tersebut.status.conditions: temukan kondisistatus.conditionsdengan menemukan kondisitype:NonStructuralSchema. Jikastatus.conditions'sstatusadalahtrue, hal ini secara eksplisit mengonfirmasi bahwa skema tersebut tidak struktural.
Upgrade
CustomResourceDefinitionke versi APIv1menggunakan langkah-langkah berikut:Edit
CustomResourceDefinitionyang ada agar kompatibel dengan standarv1dengan 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.Terapkan manifes
v1yang kompatibel ke cluster Anda.
Jika upgrade berhasil, coba lagi operasi pencadangan. Jika tidak, gunakan salah satu metode berikut untuk mengatasi masalah ini:
Hapus
CustomResourceDefinitiondengan menjalankan perintahkubectl delete crdjikaCustomResourceDefinitiontidak digunakan di cluster.kubectl delete crd CRD_NAMEGanti
CRD_NAMEdengan namaCustomResourceDefinitionyang ingin Anda hapus.Aktifkan mode permisif pada paket cadangan, yang memungkinkan Pencadangan untuk GKE melewati resource—termasuk
CustomResourceDefinitionsdalam versi APIv1beta1—dan melanjutkan operasi pencadangan lainnya. Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan mode permisif, lihat Mengaktifkan mode permisif pada paket cadangan.
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 melakukan operasi pencadangan gagal karena namespace yang ditentukan dalam cakupan cadangan tidak dapat ditemukan dalam cluster. Agen Pencadangan untuk GKE tidak dapat menemukan satu atau beberapa namespace yang tercantum secara eksplisit di kolom selectedNamespaces konfigurasi BackupPlan. Pencadangan untuk GKE mengharuskan semua namespace yang ditentukan ada di cluster pada saat operasi pencadangan dimulai. Kegagalan menemukan namespace akan menghasilkan pesan error berikut:
Namespace [NAMESPACE_NAME] is not found.
Untuk mengatasi masalah ini, gunakan petunjuk berikut:
Pastikan namespace telah dimasukkan dengan benar dengan memeriksa daftar
selectedNamespacesdalam konfigurasiBackupPlanAnda.Konfirmasi bahwa namespace yang dilaporkan dalam pesan error ada dengan menjalankan perintah
kubectl get namespace:kubectl get namespace NAMESPACE_NAMEGanti
NAMESPACE_NAMEdengan 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.Koreksi
BackupPlan. Jika namespace salah dieja, perbaruiBackupPlandengan nama namespace yang benar. Jika namespace benar-benar tidak ada lagi dan tidak perlu dicadangkan, hapus dari daftarselectedNamespacesdalam konfigurasiBackupPlan.Coba lagi operasi pencadangan setelah melakukan koreksi yang diperlukan pada
BackupPlandan memulai pencadangan baru.
Jika operasi terus gagal, hubungi Cloud Customer Care untuk mendapatkan bantuan lebih lanjut.