Halaman ini menjelaskan kode error Config Sync dan tindakan yang direkomendasikan untuk menangani error ini.
Pesan error Config Sync terdiri dari ID error dalam format KNV1234
dengan 1234 adalah angka unik, diikuti dengan deskripsi masalah dan
saran cara memperbaikinya. K diwarisi dari konvensi Kubernetes,
aturan dengan awalan N khusus untuk nomos, V khusus untuk
error yang dapat dideteksi dalam status awal repositori dan cluster. Kode
untuk error yang dapat dideteksi dalam status awal repositori dan cluster
berbentuk KNV1XXX. Kode untuk error yang hanya dapat dideteksi saat runtime berbentuk KNV2XXX.
Tabel error KNV
| Kode error | Deskripsi | Tindakan yang disarankan |
|---|---|---|
|
ID InternalError diubah menjadi |
T/A |
|
Tidak digunakan lagi di Config Sync 1.3. |
T/A |
|
Tidak digunakan lagi di Config Sync 1.3. |
T/A |
|
Saat menggunakan struktur repositori hierarkis, direktori yang berisi konfigurasi namespace tidak boleh berisi subdirektori apa pun. Direktori tanpa konfigurasi namespace adalah direktori namespace abstrak dan memiliki direktori yang diwarisi darinya. Oleh karena itu, direktori namespace abstrak harus memiliki subdirektori. Direktori yang berisi konfigurasi namespace adalah direktori namespace dan tidak dapat diwarisi, sehingga tidak boleh memiliki subdirektori. |
Hapus konfigurasi namespace dari direktori induk, atau pindahkan subdirektori ke tempat lain. |
|
Objek cakupan cluster tidak boleh mendeklarasikan anotasi
|
Hapus |
|
Satu-satunya setelan yang valid untuk anotasi pengelolaan adalah
|
Pastikan anotasi pengelolaan adalah
Untuk mengetahui informasi selengkapnya, lihat Mengelola objek. |
|
Objek yang dideklarasikan di repositori tidak dapat diuraikan. |
Validasi format YAML Anda. Misalnya, Anda dapat menggunakan
perintah
Jika |
|
Saat menggunakan repositori tidak terstruktur, konfigurasi tidak boleh dideklarasikan di direktori namespace abstrak. |
Pindahkan konfigurasi yang tercantum dalam pesan error ke direktori namespace. Untuk mengetahui informasi selengkapnya, lihat Menggunakan repositori tidak terstruktur. |
|
Saat menggunakan struktur repositori hierarkis, konfigurasi harus mendeklarasikan namespace yang cocok dengan direktori namespace yang memuatnya atau menghapus kolom. |
Perbarui kolom namespace yang diidentifikasi dalam pesan error. Untuk mengetahui informasi selengkapnya, lihat Struktur repositori hierarkis. |
|
Konfigurasi tidak boleh mendeklarasikan anotasi yang tidak didukung yang dimulai dengan |
Pastikan Anda menggunakan salah satu anotasi yang didukung berikut:
|
|
Konfigurasi tidak boleh memiliki label dengan kunci yang diawali dengan
|
Perbarui label yang diidentifikasi dalam pesan error. Misalnya, jika
Anda mencoba mendeklarasikan label bernama |
|
Tidak digunakan lagi di Config Sync 1.3. |
T/A |
|
Konfigurasi merujuk ke ClusterSelector atau NamespaceSelector yang tidak ada. Sebelum Anda dapat menggunakan pemilih dalam anotasi untuk konfigurasi, pemilih harus ada. |
Buat pemilih yang tidak ada, atau, jika pemilih dihapus, hapus semua konfigurasi yang merujuk padanya. |
|
Konfigurasi ClusterSelector dan NamespaceSelector menggunakan sintaksis yang benar, tetapi ditemukan error sintaksis. |
Pastikan Anda menentukan konfigurasi menggunakan skema data yang sesuai: |
|
Tidak digunakan lagi di Config Sync 1.3.2. | T/A |
|
Saat menggunakan struktur repositori hierarkis, konfigurasi untuk ConfigManagement Operator
harus ada di direktori |
Tentukan setidaknya konfigurasi minimal untuk Operator ConfigManagement. Untuk mengetahui informasi selengkapnya, lihat Struktur repositori hierarkis. |
|
Tidak digunakan lagi di Config Sync 1.3. | T/A |
|
Saat menggunakan struktur repositori hierarkis, namespace tidak boleh dideklarasikan secara langsung
di direktori |
Buat subdirektori untuk konfigurasi namespace yang tercantum dalam pesan error. Untuk mengetahui informasi selengkapnya, lihat Struktur repositori hierarkis. |
|
Saat menggunakan struktur repositori hierarkis, konfigurasi namespace mendeklarasikan
metadata.name, dan nilainya harus cocok dengan nama direktori namespace.
|
Perbaiki metadata.name namespace atau direktorinya. |
|
Tidak ada CustomResourceDefinition yang ditentukan untuk resource di cluster. |
Buat CustomResourceDefinition untuk resource yang dirujuk dalam pesan error. Jenis resource yang bukan objek Kubernetes bawaan harus memiliki CustomResourceDefinition. |
|
Saat Anda menggunakan repositori hierarkis, konfigurasi Jenis ini tidak dapat dideklarasikan di
direktori |
Pindahkan resource yang dirujuk dalam pesan error dari direktori |
|
Kolom |
Jika format repositori Anda kompatibel dengan versi yang didukung, perbarui kolom
|
|
Nama direktori harus memiliki kurang dari 64 karakter, terdiri dari karakter alfanumerik huruf kecil atau '-', dan harus diawali dan diakhiri dengan karakter alfanumerik. |
Ganti nama atau hapus direktori yang salah nama. |
|
Konfigurasi dengan Jenis yang sama harus memiliki nama unik di namespace yang sama dan namespace abstrak induknya. |
Ganti nama atau hapus konfigurasi yang dirujuk dalam pesan error sehingga semuanya memiliki nama unik. |
|
Beberapa resource namespace tidak dapat berada dalam direktori yang sama. |
Hapus konfigurasi duplikat sehingga hanya ada satu resource namespace. |
|
Semua konfigurasi harus mendeklarasikan |
Tambahkan kolom |
|
Jenis |
Hapus konfigurasi yang bermasalah, atau konversi repositori Anda untuk menggunakan
|
|
Jika Anda menggunakan repositori hierarkis, Anda hanya dapat mendeklarasikan
Jenis |
Pastikan setiap konfigurasi yang dideklarasikan di direktori |
|
Dilarang mendeklarasikan |
Jika Anda mendeklarasikan namespace
Jika Anda mendeklarasikan namespace
Jika sebelumnya Anda menyinkronkan ke repositori hierarkis dan harus mendeklarasikan namespace pengontrol bersama dengan resource apa pun, pertimbangkan beralih ke repositori tidak terstruktur untuk mendapatkan fleksibilitas yang lebih besar dalam struktur sumber Anda. |
|
|
Ubah
Jika |
|
Tidak digunakan lagi di Config Sync 1.3. | T/A |
|
Objek yang tercakup dalam namespace tidak boleh dideklarasikan di luar
direktori |
Pindahkan konfigurasi yang bermasalah agar berada di direktori yang sah. Untuk mengetahui informasi selengkapnya tentang objek cakupan namespace, lihat Objek cakupan namespace. |
|
Objek cakupan cluster tidak boleh dideklarasikan di luar direktori |
Pindahkan konfigurasi yang bermasalah agar berada di direktori yang sah. Untuk mengetahui informasi selengkapnya tentang objek cakupan cluster, lihat Objek cakupan cluster. |
|
Tidak digunakan lagi di Config Sync 1.3. | T/A |
|
Jenis Resource ini tidak boleh dideklarasikan dalam |
Hapus resource yang bermasalah. Untuk membaca selengkapnya tentang |
|
Nilai ilegal untuk |
Ubah |
|
Config Sync tidak dapat mengonfigurasi objek ini. |
Hapus konfigurasi yang bermasalah dari repositori. |
|
Direktori namespace abstrak dengan konfigurasi harus memiliki setidaknya satu subdirektori namespace. |
Tambahkan direktori namespace di direktori namespace abstrak, tambahkan konfigurasi namespace ke direktori namespace abstrak, atau hapus konfigurasi di direktori namespace abstrak. |
|
Konfigurasi dengan |
Hapus kolom |
|
|
Perbarui |
|
Definisi resource kustom (CRD) tidak boleh dihapus jika Resource Kustom yang sesuai masih ada di repositori. |
Hapus CRD beserta Resource Kustom. |
|
CustomResourceDefinition memiliki nama yang tidak valid. |
Ubah nama menjadi rekomendasi di pesan error. |
|
Konfigurasi menggunakan Grup dan Jenis yang tidak digunakan lagi. |
Ubah Grup atau Jenis ke rekomendasi dalam pesan error. |
|
Resource cakupan cluster tidak boleh mendeklarasikan |
Hapus kolom metadata.namespace dari resource cakupan cluster Anda. |
|
Resource cakupan namespace harus mendeklarasikan |
Tambahkan kolom yang belum disertakan ke resource yang tercakup dalam namespace Anda. |
|
Konfigurasi berisi nilai yang tidak valid untuk anotasi. |
Ikuti petunjuk dalam pesan error untuk mengatasi error. |
|
Nilai |
Perbarui nilai
|
|
Resource dideklarasikan dalam namespace yang tidak dikelola. |
Hapus anotasi |
|
Sumber daya memiliki label ilegal. |
Hapus label ilegal yang tercantum dalam pesan error. |
|
Repositori namespace hanya dapat mendeklarasikan resource cakupan namespace di namespace tempat repositori tersebut diterapkan. |
Pastikan semua repositori namespace mendeklarasikan resource yang tercakup namespace dengan benar.
Misalnya, repositori untuk repositori namespace
Misalnya, jika konfigurasi di repositori namespace Selain memastikan bahwa resource yang tercakup dalam namespace dideklarasikan dengan benar, pastikan namespace dideklarasikan di repositori root. Hal ini diperlukan karena namespace memiliki cakupan cluster. |
|
Repositori namespace dapat mendeklarasikan paling banyak satu resource Kptfile. |
Hapus semua kecuali satu resource Kptfile. |
|
Saat mengelola objek di beberapa sumber tepercaya, konflik dapat muncul saat objek yang sama (grup yang cocok, jenis, nama, dan ruang nama) dideklarasikan di lebih dari satu sumber. Misalnya, saat objek yang sama dikelola oleh RootSync dan RepoSync, RootSync yang menang. Jika RootSync diterapkan terlebih dahulu, RepoSync akan melaporkan error status KNV1060. Jika RepoSync diterapkan terlebih dahulu, RootSync akan menggantikan objek RepoSync dan RepoSync melaporkan error status KNV1060 saat melihat update. |
Selesaikan konflik dengan memperbarui konfigurasi agar cocok dengan sumber tepercaya lainnya, atau dengan menghapus objek yang bertentangan dari salah satu sumber.
Perintah |
|
|
Ikuti petunjuk dalam pesan error untuk memperbaiki kesalahan konfigurasi. |
|
Kptfile tidak memiliki kolom inventaris yang valid. Kptfile harus memiliki kolom inventaris yang tidak kosong dengan ID dan namespace yang ditentukan. |
Tentukan nilai untuk |
|
Kptfile ditemukan di repositori Root. Kptfile hanya didukung di repositori yang memiliki cakupan namespace. |
Hapus Kptfile dari repositori Root. |
|
File |
Ikuti petunjuk dalam pesan error. Misalnya, Anda mungkin perlu menjalankan ulang
|
|
Format CustomResourceDefinition salah. |
Periksa kolom yang ditentukan oleh pesan error dan pastikan nilai kolom tersebut diformat dengan benar. |
|
Objek config hanya boleh mendeklarasikan anotasi cluster-selector. Error ini terjadi saat
anotasi lama ( |
Hapus salah satu anotasi dari kolom |
|
Rekonsiliator gagal mengenkode kolom yang dinyatakan ke dalam format yang kompatibel dengan penerapan sisi server. Hal ini dapat disebabkan oleh skema yang sudah tidak berlaku. |
Periksa kolom yang ditentukan oleh pesan error dan pastikan kolom tersebut cocok dengan skema jenis resource. |
|
Proses rendering mengalami masalah yang dapat ditindaklanjuti pengguna. |
Jika repositori Git berisi konfigurasi Kustomize, tetapi tidak ada file
Jika error disebabkan oleh kegagalan
Jika terjadi error |
|
Reconciler telah merekonsiliasi objek RootSync atau RepoSync miliknya sendiri. A Objek RootSync dapat mengelola objek RootSync dan RepoSync lainnya; Objek RepoSync dapat mengelola objek RepoSync lainnya, tetapi tidak dapat mengelola diri sendiri. |
Hapus objek RootSync atau RepoSync dari sumber tepercaya yang disinkronkan objek. |
|
Panggilan sistem tingkat OS yang mengakses resource sistem file gagal. |
Error ini kemungkinan disebabkan oleh konfigurasi YAML yang tidak valid atau penggunaan karakter khusus. Jika Anda
memiliki konfigurasi YAML yang tidak valid, Anda akan melihat pesan error yang mirip dengan berikut:
Jika nama file atau jalur Anda berisi karakter khusus, Anda mungkin melihat pesan error
yang mirip dengan |
|
Permintaan yang mengakses Server API Kubernetes gagal. |
Permintaan Kubernetes API dapat gagal karena berbagai alasan. Penyebab umumnya mencakup:
Config Sync mencoba lagi setelah sebagian besar error Server API. Beberapa masalah mungkin bersifat sementara dan dapat diselesaikan dengan sendirinya, tetapi sebagian besar masalah memerlukan intervensi pengguna untuk menyelesaikannya. Error Server API jarang disebabkan oleh Config Sync itu sendiri, tetapi jika Anda menduga bahwa error tersebut mungkin disebabkan oleh Config Sync, harap ajukan laporan bug. |
|
Panggilan sistem tingkat OS generik gagal. | |
|
Config Sync tidak dapat membaca dari sumber tepercaya. |
Beberapa masalah dapat menyebabkan error ini. Untuk memecahkan masalah koneksi ke
sumber tepercaya, lihat
Memecahkan masalah koneksi ke sumber tepercaya.
Untuk mempelajari masalah umum yang menyebabkan error |
|
Config Sync bersaing dengan pengontrol lain untuk mendapatkan resource. Pertarungan semacam itu menggunakan banyak resource dan dapat menurunkan performa Anda. | Untuk mengetahui tips tentang cara mendiagnosis dan mengatasi konflik pengontrol, lihat Memecahkan masalah konflik pengontrol. |
|
Untuk membantu mencegah penghapusan yang tidak disengaja, Config Sync tidak mengizinkan Anda menghapus semua namespace atau resource cakupan cluster dalam satu commit. |
Jika webhook penerimaan Config Sync dinonaktifkan, batalkan penerapan yang menghapus semua resource.
Jika Anda ingin menghapus seluruh set resource yang dikelola, selesaikan langkah-langkah berikut:
|
|
Resource di Server API diubah atau dihapus saat Config Sync juga mencoba mengubahnya. |
Jika jenis error ini hanya muncul saat startup atau jarang, Anda dapat mengabaikan error ini.
Jika error ini tidak bersifat sementara (berlanjut selama beberapa menit), hal ini mungkin menunjukkan masalah serius dan |
|
Ini adalah error umum yang menunjukkan bahwa Config Sync gagal menyinkronkan beberapa konfigurasi ke cluster. |
Ada beberapa masalah yang dapat menyebabkan error ini. Untuk mendapatkan tips tentang cara mengatasi masalah sinkronisasi umum, lihat Memecahkan masalah sinkronisasi. |
|
Ini adalah error umum yang menunjukkan masalah pada resource atau sekumpulan resource. |
Pesan error mencakup resource spesifik yang menyebabkan error. Selidiki sumber daya ini. |
|
Resource tertentu diperlukan untuk melanjutkan, tetapi resource tersebut tidak ditemukan. Misalnya, Operator ConfigManagement mencoba memperbarui resource, tetapi resource dihapus saat menghitung update. |
Buat atau pulihkan resource yang hilang. |
|
Error ini melaporkan bahwa lebih dari satu instance APIResource ditemukan dalam konteks
yang hanya mengizinkan satu APIResource. Misalnya, hanya boleh ada satu resource |
Hapus APIResource tambahan. |
|
Namespace reconciler tidak memiliki izin yang memadai untuk mengelola resource. |
Pastikan rekonsiliator memiliki izin yang memadai. |
|
Peringatan ini terjadi saat konfigurasi webhook Config Sync dimodifikasi secara ilegal. Konfigurasi webhook ilegal akan diabaikan. |
Hapus webhook yang dimodifikasi secara ilegal. |
|
Proses rendering mengalami masalah internal. Misalnya, Config Sync tidak dapat mengakses sistem file. |
Error ini mungkin menunjukkan bahwa Pod tidak responsif. Anda dapat memulai ulang Pod rekonsiliasi dengan menjalankan perintah berikut: # restart a root reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=root-reconciler # restart a namespace reconciler kubectl delete pod -n config-management-system -l configsync.gke.io/reconciler=ns-reconciler-NAMESPACE |
|
Error ini menunjukkan masalah sementara yang akan otomatis teratasi di lain waktu. Misalnya, jika status rendering tidak cocok dengan konfigurasi sumber, Anda mungkin melihat error ini. |
Error akan otomatis teratasi. |
|
Ada masalah dengan Config Sync itu sendiri. |
Harap ajukan laporan bug. |
|
Anda mengalami error tanpa pesan error yang terdokumentasi. |
Kami belum menulis dokumentasi khusus untuk error yang Anda alami. |
Pesan error tanpa kode KNV
Error yang dilaporkan oleh rekonsiliator Config Sync memiliki kode error KNV, tetapi error yang dilaporkan dari komponen lain tidak memiliki kode KNV. Misalnya, error izin ditolak berasal dari pengontrol fleet, yang merupakan lapisan di atas Config Sync.
Tabel berikut mencantumkan beberapa error umum tanpa awalan KNV.
| Pesan error | Tindakan yang disarankan |
|---|---|
|
|
Tidak dapat membuat pengekspor
Jika komponen di Open Telemetry Collector tidak dapat mengakses akun layanan default di namespace yang sama, Anda mungkin melihat bahwa Pod Masalah ini biasanya terjadi saat Workload Identity Federation for GKE diaktifkan di cluster. Untuk mengatasi masalah ini, ikuti petunjuk di Memantau Config Sync untuk memberikan izin penulisan metrik ke akun layanan default.
Jika error masih berlanjut setelah menyiapkan IAM, mulai ulang Pod |
server certificate verification failed. CAfile:/etc/ca-cert/cert CRLfile: none
|
Verifikasi sertifikat server gagal
Jika penampung Pesan ini menunjukkan bahwa server dikonfigurasi dengan sertifikat dari Certificate Authority (CA) kustom. Namun, CA kustom tidak dikonfigurasi dengan benar, sehingga menyebabkan penampung gagal mengambil dari server.
Untuk mengatasi masalah ini, pertama-tama, Anda dapat memverifikasi apakah kolom
Selanjutnya, jika kolom telah dikonfigurasi dan objek Secret ada,
pastikan objek Secret berisi sertifikat lengkap. Berikut adalah contoh cara mencantumkan sertifikat server: echo -n | openssl s_client -showcerts -connect HOST:PORT -servername SERVER_NAME 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' Anda dapat meminta tim administrasi jaringan Anda untuk mendapatkan sertifikat CA untuk Anda. |
Error message: "MESSAGE": "Unable to retrieve pull secret, the image pull may not succeed."
|
Tidak dapat mengambil secret pull, penarikan image mungkin tidak berhasilJika Anda menggunakan registry pribadi dengan Google Distributed Cloud, penginstalan atau upgrade Config Sync dapat terhenti. Anda akan melihat error yang mirip dengan pesan ini. Untuk mengatasi masalah ini, ikuti langkah-langkah di Mengupdate Config Sync menggunakan registry pribadi sebelum menginstal atau mengupgrade Config Sync. |
Permission 'gkehub.features.create' denied on 'projects/PROJECT_ID/locations/global/features/configmanagement'
|
Izin ditolakJika Anda menerima error yang mirip dengan contoh ini saat mencoba mengonfigurasi Config Sync, Anda mungkin tidak memiliki peran Admin GKE Hub. Untuk memastikan Anda memiliki izin yang diperlukan, pastikan Anda telah memberikan peran IAM yang diperlukan. |
Langkah berikutnya
- Lihat masalah umum.
- Baca pengantar pemecahan masalah Config Sync.
- Jika Anda memerlukan dukungan tambahan, hubungi Customer Care Cloud.