Masalah umum Config Sync

Halaman ini mencantumkan masalah umum untuk versi Config Sync yang didukung.

Banyak masalah yang tercantum di sini telah diperbaiki. Kolom Fixed version menunjukkan versi tempat perbaikan diperkenalkan. Untuk menerima perbaikan ini, upgrade ke versi yang tercantum atau yang lebih baru.

Jika Anda adalah bagian dari Program Developer Google, simpan halaman ini untuk menerima notifikasi saat catatan rilis yang terkait dengan halaman ini dipublikasikan. Untuk mempelajari lebih lanjut, lihat Halaman Tersimpan.

Untuk memfilter masalah umum menurut versi produk atau kategori masalah, pilih filter Anda dari menu drop-down berikut.

Pilih versi Config Sync Anda:

Pilih kategori masalah Anda:

Atau, filter masalah umum:

Kategori Versi yang diidentifikasi Versi tetap Masalah dan solusi
Metrik 1.5.0 1.21.0

Diperbaiki: Metrik yang dilaporkan untuk paket yang dihapus

Jika Anda menghapus objek RootSync atau RepoSync, tetapi tidak menghapus objek ResourceGroup dengan nama yang sama, Config Sync akan terus melaporkan metrik berikut untuk objek ResourceGroup tersebut:

  • rg_reconcile_duration_seconds
  • resource_group_total
  • resource_count
  • ready_resource_count
  • resource_ns_count
  • cluster_scoped_resource_count
  • crd_count
  • kcc_resource_count
  • pipeline_error_observed
Objek ResourceGroup hanya dihapus secara otomatis jika propagasi penghapusan diaktifkan sebelum penghapusan objek RootSync atau RepoSync.

Solusi:

Hapus objek ResourceGroup:

kubectl delete resourcegroup RESOURCE_GROUP_NAME -n config-management-system

Ganti RESOURCE_GROUP_NAME dengan nama objek ResourceGroup yang perlu dihapus. Untuk mempelajari lebih lanjut penamaan ResourceGroup, lihat Objek ResourceGroup dan Pengontrol ResourceGroup.

Kondisi komponen 1.15.0

Reconciler tidak dapat dijadwalkan

Penyelesaian Config Sync memerlukan jumlah resource yang bervariasi, bergantung pada konfigurasi RootSync atau RepoSync. Konfigurasi tertentu memerlukan lebih banyak resource daripada konfigurasi lainnya.

Jika rekonsiliasi tidak dapat dijadwalkan, hal ini mungkin karena meminta lebih banyak resource daripada yang tersedia di node Anda.

Jika Anda menggunakan cluster GKE mode standar, permintaan resource reconciler ditetapkan sangat rendah. Setelan ini dipilih dalam upaya untuk mengizinkan penjadwalan, meskipun akan menyebabkan throttling dan performa lambat, sehingga Config Sync berfungsi di cluster kecil dan node kecil. Namun, di cluster GKE Autopilot, permintaan rekonsiliasi ditetapkan lebih tinggi, untuk merepresentasikan penggunaan secara lebih realistis saat menyinkronkan.

Solusi:

GKE Autopilot atau GKE Standard dengan penyediaan otomatis node yang diaktifkan akan dapat melihat jumlah resource yang diminta dan membuat node berukuran sesuai untuk memungkinkan penjadwalan. Namun, jika Anda mengonfigurasi ukuran instance node atau node secara manual, Anda mungkin perlu menyesuaikan setelan tersebut untuk mengakomodasi persyaratan resource Pod rekonsiliasi.

Metrik 1.15.0

Ekspor gagal. Izin ditolak

Secara default, saat reconciler-manager mendeteksi Kredensial Default Aplikasi, otel-collector dikonfigurasi untuk mengekspor metrik ke Prometheus, Cloud Monitoring, dan Monarch.

Solusi:

otel-collector mencatat error jika Anda belum Mengonfigurasi Cloud Monitoring atau Menonaktifkan Cloud Monitoring dan Cloud Monarch.

Metrik 1.15.0

otel-collector error dengan konfigurasi kustom

Jika Anda mencoba mengubah atau menghapus salah satu ConfigMap default, otel-collector atau otel-collector-google-cloud, otel-collector mungkin mengalami error atau berhenti berfungsi karena tidak dapat memuat ConfigMap yang diperlukan.

Solusi:

Untuk menyesuaikan konfigurasi ekspor metrik, buat ConfigMap bernama otel-collector-custom di namespace config-management-monitoring.

Pemulihan

Config Sync berkonflik dengan dirinya sendiri

Config Sync mungkin tampak berada dalam konflik pengontrol. dengan sendirinya. Masalah ini terjadi jika Anda menetapkan nilai default untuk kolom opsional resource di repositori Git. Misalnya, menetapkan apiGroup: "" untuk subjek RoleBinding memicu hal ini karena kolom apiGroup bersifat opsional dan string kosong adalah nilai default. Nilai default kolom string, boolean, dan bilangan bulat adalah "", false, dan 0 (masing-masing).

Solusi:

Hapus kolom dari deklarasi resource.

Pemulihan

Config Sync berkonflik dengan resource Config Connector

Config Sync mungkin tampak berkonflik dengan Config Connector terkait resource, misalnya StorageBucket. Masalah ini terjadi jika Anda tidak menetapkan nilai kolom opsional resource spec.lifecycleRule.condition.withState di sumber tepercaya.

Solusi:

Anda dapat menghindari masalah ini dengan menambahkan kolom withState=ANY pada deklarasi resource. Atau, Anda dapat membatalkan lalu mendapatkan kembali resource dengan anotasi cnrm.cloud.google.com/state-into-spec: absent.

Sumber kebenaran 1.17.3 1.18.3

Diperbaiki: Kegagalan Autentikasi SSH Git dengan GitHub

git-sync v4.2.1 memiliki bug yang menghapus nama pengguna dari URL repositori saat menggunakan SSH, sehingga menyebabkan autentikasi gagal saat terhubung ke GitHub, yang mengharuskan pengguna menjadi git.

Pesan error dari git adalah: git-sync@github.com: Permission denied (publickey).\r\nfatal: Could not read from remote repository.

Solusi:

Gunakan metode autentikasi lain.

Sumber kebenaran 1.15.0 1.18.0

Diperbaiki: Kredensial autentikasi yang tidak valid secara berkala untuk Cloud Source Repositories

Config Sync dapat mengalami error secara berkala saat token autentikasi berakhir untuk Cloud Source Repositories. Masalah ini disebabkan oleh refresh token yang menunggu hingga token berakhir sebelum di-refresh.

Pada versi 1.18.0 dan yang lebih baru, token dimuat ulang pada permintaan pertama dalam waktu lima menit setelah masa berlaku token berakhir. Hal ini mencegah error kredensial autentikasi tidak valid, kecuali jika kredensial tersebut memang tidak valid.

Sumber kebenaran 1.13.0 1.20.1

Diperbaiki: Tidak dapat membuat token akses untuk sumber OCI

Jika Config Sync dikonfigurasi untuk menggunakan OCI sebagai sumber tepercaya dan melakukan autentikasi dengan Workload Identity Federation untuk GKE, Config Sync terkadang dapat mengalami error KNV2004 sementara saat mencoba melakukan autentikasi dengan container registry.

Masalah ini disebabkan oleh library oauth2 yang hanya memperbarui token autentikasi setelah masa berlaku token berakhir.

Pesan error mungkin menyertakan teks berikut: "oauth2/google: unable to generate access token" atau "ID Token issued at (xxx) is stale to sign-in."

Solusi:

Error akan teratasi dengan sendirinya saat Config Sync mencoba mengambil dari sumber tepercaya pada waktu berikutnya.

Jika Config Sync mengalami error beberapa kali, percobaan ulang akan menjadi kurang sering. Untuk memaksa Config Sync mencoba lagi lebih cepat, hapus Pod reconciler. Tindakan ini menyebabkan Config Sync membuat ulang Pod rekonsiliasi dan segera mengambil dari sumber tepercaya:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Ganti RECONCILER_NAME dengan nama rekonsiliasi objek RootSync atau RepoSync.
Sumber kebenaran 1.19.0 1.20.0

Tetap: File kunci Git yang masih ada

Jika Anda melihat error yang serupa dengan berikut dari penampung git-sync, berarti pemanggilan git sebelumnya mungkin gagal dan meninggalkan file kunci yang masih ada di penampung:

    KNV2004: error in the git-sync container: ... fatal: Unable to create '/repo/source/.git/shallow.lock': File exists. ...
    

Solusi:

Untuk mengatasi masalah ini, mulai ulang Pod rekonsiliasi yang terpengaruh untuk memberinya volume sementara baru:

    kubectl delete pod -n config-management-system RECONCILER_NAME
    
Ganti RECONCILER_NAME dengan nama rekonsiliasi objek RootSync atau RepoSync.
Menyinkronkan 1.7.0 1.21.0

Diperbaiki: Anotasi mutasi yang diabaikan tidak dipatuhi

Bug di rekonsiliator Config Sync menyebabkan Config Sync menerapkan perubahan dari konfigurasi yang dideklarasikan meskipun ada anotasi client.lifecycle.config.k8s.io/mutation. Hal ini dapat menyebabkan status objek di cluster ditimpa.

Solusi:

Anda dapat berhenti mengelola objek terkelola dengan menambahkan anotasi configmanagement.gke.io/managed: disabled. Namun, menonaktifkan pengelolaan akan mencegah Config Sync membuat ulang objek jika objek tersebut dihapus dari cluster. Hal ini juga mencegah penerapan update lebih lanjut di sumber tepercaya.

Menyinkronkan 1.5.0 1.20.1

Diperbaiki: Error penemuan API dapat menyebabkan objek terkelola ditandai secara keliru sebagai Not Found

Jika backend Layanan API tidak responsif, hal ini dapat menyebabkan error penemuan API. Jika hal ini terjadi saat ResourceGroup Controller sedang dimulai, setelah diupdate atau dijadwalkan ulang, cache resource akan gagal diinisialisasi, sehingga semua objek terkelola dilaporkan sebagai Not Found dalam status ResourceGroup.

Masalah ini sering terjadi saat metrics-server tidak dalam kondisi baik.

Solusi:

Mulai ulang Pod resource-group-controller setelah metrics-server kembali responsif:

    kubectl delete pod -n resource-group-system RESOURCE_GROUP_CONTROLLER_NAME
    
Ganti RESOURCE_GROUP_CONTROLLER_NAME dengan nama ResourceGroup Controller, yang sama dengan nama RootSync atau RepoSync untuk paket tersebut.
Menyinkronkan 1.15.0

Jumlah permintaan PATCH yang tidak efektif dalam log audit sangat tinggi

Perbaikan Config Sync menggunakan Uji coba untuk mendeteksi penyimpangan. Hal ini dapat menyebabkan permintaan PATCH muncul di log audit, meskipun PATCH tidak dipertahankan, karena log audit tidak membedakan antara uji coba dan permintaan normal.

Solusi:

Karena log audit tidak dapat membedakan antara permintaan uji coba dan non-uji coba, Anda dapat mengabaikan permintaan PATCH.
Registry pribadi 1.19.0

Config Sync tidak menggunakan registry pribadi untuk Deployment rekonsiliasi

Config Sync harus mengganti image untuk semua Deployment saat registry pribadi dikonfigurasi. Namun, Config Sync tidak menggantikan registri image untuk image di Deployment rekonsiliasi.

Solusi:

Solusi untuk masalah ini adalah mengonfigurasi mirror image registry di containerd.

Menyinkronkan 1.17.0 1.18.3

Diperbaiki: Reconciler Config Sync mengalami loop error

Di Config Sync versi 1.17.0 atau yang lebih baru, Anda mungkin mengalami masalah saat rekonsiliator gagal membuat konfigurasi REST di beberapa penyedia Kubernetes.

Contoh berikut menunjukkan kemungkinan tampilan masalah ini dalam log rekonsiliasi:

Error creating rest config: failed to build rest config: reading local kubeconfig: loading REST config from "/.kube/config": stat /.kube/config: no such file or directory
Menyinkronkan 1.7.0 1.21.0

Diperbaiki: Gagal menulis inventaris yang diperbarui ke cluster

Jika Config Sync gagal memperbarui status objek ResourceGroup, Anda mungkin mengalami error sesekali di log rekonsiliasi yang mirip dengan berikut ini:

    KNV2009: task failed (action: "Inventory", name: "inventory-set-0"): failed to write updated inventory to cluster: Operation cannot be fulfilled on resourcegroups.kpt.dev "root-sync": the object has been modified; please apply your changes to the latest version and try again
    

Error ini disebabkan oleh kondisi persaingan antara rekonsiliator dan Pengontrol ResourceGroup. Pengontrol ResourceGroup dapat memperbarui status ResourceGroup sebelum rekonsiliasi dapat memperbarui spesifikasi ResourceGroup, sehingga menyebabkan error KNV2009.

Solusi:

Masalah ini tidak memiliki solusi. Error akan teratasi dengan sendirinya.

Terraform Terraform versi 5.41.0

Config Sync tidak dapat diinstal atau diupgrade menggunakan Terraform

Terraform versi 5.41.0 memperkenalkan kolom baru ke resource google_gke_hub_feature_membership: config_sync.enabled. Karena nilai default kolom ini adalah false, jika kolom ini tidak ditetapkan secara eksplisit ke true, hal ini akan menyebabkan penginstalan atau upgrade Config Sync gagal saat menggunakan Terraform versi 5.41.0 atau yang lebih baru. Anda mungkin juga melihat pesan error yang menyatakan git spec not included in configmanagement spec jika masalah ini terjadi.

Solusi:

  • Jika Anda menggunakan resource google_gke_hub_feature_membership, tetapkan config_sync.enabled ke true secara manual.
  • Jika Anda menggunakan submodul acm, sebaiknya beralihlah ke cara alternatif untuk menginstal Config Sync. Jika Anda tidak dapat beralih, upgrade ke v33.0.0.

Google Cloud console

Error data tidak ada di dasbor Config Sync di konsol Google Cloud

Anda mungkin melihat error seperti "data tidak ada" atau "kredensial cluster tidak valid" untuk cluster Config Sync di dasbor pada konsol Google Cloud . Masalah ini dapat terjadi jika Anda tidak login ke cluster GDC (VMware) atau GDC (bare metal).

Solusi:

Jika Anda melihat jenis error ini di konsol pada cluster GDC (VMware) atau GDC (bare metal), pastikan Anda login ke cluster dengan Layanan Identitas GKE atau gateway koneksi. Google Cloud

Menyinkronkan 1.21.0

Diperbaiki: Config Sync mencegah update resource yang ditinggalkan

Sebelum versi 1.21.0, objek RootSync atau RepoSync yang dihapus dapat meninggalkan beberapa label dan anotasi yang digunakan Config Sync untuk melacak objek resource ini.

Label dan anotasi ini dapat menyebabkan efek samping berikut setelah objek RootSync atau RepoSync dihapus:

  • Objek RepoSync lainnya tidak dapat mengambil kepemilikan objek yang dikelola sebelumnya.
  • Jika pencegahan penyimpangan diaktifkan, hal ini dapat menyebabkan Config Sync menolak perubahan pada resource yang tidak digunakan.

Alat command line nomos 1.17.0

CLI nomos tidak mendukung plugin autentikasi oidc

Anda mungkin melihat error seperti no Auth Provider found for name "oidc" saat menggunakan alat command line nomos. Masalah ini dapat terjadi saat Anda menggunakan plugin autentikasi oidc.

Solusi:

Tidak ada solusi. Plugin autentikasi oidc akan ditambahkan kembali dalam rilis berikutnya.

Kembali ke atas

Langkah berikutnya

  • Jika Anda tidak dapat menemukan solusi untuk masalah Anda dalam dokumentasi, lihat Mendapatkan dukungan untuk mendapatkan bantuan lebih lanjut, termasuk saran tentang topik berikut: