Dalam beberapa situasi, Anda mungkin perlu menghentikan Config Sync dengan cepat agar tidak menyinkronkan konfigurasi dari sumber tepercaya. Salah satu skenarionya adalah jika seseorang melakukan konfigurasi yang valid secara sintaksis tetapi salah ke sumber, dan Anda ingin membatasi efeknya pada cluster yang sedang berjalan saat konfigurasi dihapus atau diperbaiki.
Halaman ini ditujukan bagi administrator dan Operator IT yang mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud
Untuk cluster di Config Sync versi 1.20.0 dan yang lebih baru, atau cluster apa pun dengan upgrade otomatis diaktifkan, operator ConfigManagement
tidak berjalan di cluster Anda.
Anda tidak perlu menghentikan sinkronisasi secara manual dengan mengikuti langkah-langkah di halaman ini. Sebagai gantinya, Anda dapat menggunakan
kolom gcloud CLI
spec.configSync.stopSyncing
dengan menetapkan true
dalam file konfigurasi Config Sync. Kemudian, untuk melanjutkan sinkronisasi, tetapkan kolom ke
false
.
Jika Anda menginstal Config Sync secara manual menggunakan kubectl
, Anda tidak dapat menggunakan kolom
stopSyncing
. Dalam hal ini, Anda dapat mengikuti langkah-langkah di halaman ini untuk menghentikan sinkronisasi secara manual. Langkah-langkah manual berbeda-beda, bergantung pada versi Config Sync yang diinstal di cluster Anda.
Prasyarat
Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan izin RBAC Kubernetes berikut di namespace config-management-system
pada semua cluster tempat Anda ingin menghentikan sinkronisasi:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya
Bagian ini ditujukan untuk satu sumber tepercaya dan menunjukkan cara menghentikan penyelarasan dengan cepat, dan cara melanjutkan sinkronisasi saat masalah telah diperbaiki. Untuk mempelajari cara menghentikan sinkronisasi untuk lebih dari satu sumber tepercaya, lihat bagian menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.
Hentikan sinkronisasi
Untuk menghentikan sinkronisasi satu cluster, jalankan perintah berikut:
1.20.0 atau yang lebih baru
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
Perintah ini mengurangi jumlah replicas
semua Deployment yang berjalan di namespace config-management-system
menjadi 0. Set tepat Deployments yang terpengaruh bervariasi menurut versi produk.
1.19.2 atau yang lebih lama
kubectl scale -n config-management-system deployment config-management-operator --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator \ && kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
Perintah tersebut melakukan hal berikut secara berurutan. Jika perintah gagal, perintah lainnya tidak akan berjalan.
- Kurangi jumlah
replicas
di Deployment Operator ConfigManagement menjadi 0. - Kurangi jumlah
replicas
semua Deployment yang berjalan di namespaceconfig-management-system
menjadi 0. Set tepat Deployments yang terpengaruh bervariasi menurut versi produk.
Semua deployment masih ada di cluster, tetapi tidak ada replika proses yang bertanggung jawab untuk menyinkronkan, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.
Untuk memverifikasi bahwa semua proses telah dihentikan, gunakan perintah berikut dan verifikasi bahwa semua Deployment memiliki nol replika:
kubectl get -n config-management-system deployment
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Melanjutkan sinkronisasi
Untuk melanjutkan sinkronisasi satu cluster, jalankan perintah berikut:
1.20.0 atau yang lebih baru
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Perintah ini menskalakan Deployment Reconciler Manager menjadi 1 replika. Kemudian,
Pengelola Penyesuai akan melihat bahwa Pod di
Deployment namespace config-management-system
diskalakan secara tidak benar dan
menskalakannya ke jumlah replika yang sesuai.
1.19.2 atau yang lebih lama
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Perintah ini menskalakan Deployment Operator menjadi 1 replika. Kemudian, Operator menyadari bahwa Pod di Deployment namespace config-management-system
diskalakan secara tidak benar dan menskalakannya ke jumlah replika yang sesuai.
Jika Anda perlu melanjutkan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya
Bagian ini ditujukan untuk lebih dari satu sumber tepercaya dan menunjukkan cara menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya untuk sementara. Untuk mempelajari cara menghentikan sinkronisasi untuk satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya.
Hanya administrator pusat yang dapat menghentikan sinkronisasi di sumber tepercaya utama.
Kemampuan untuk menghentikan sinkronisasi di lebih dari satu sumber tepercaya bergantung pada metode konfigurasi yang digunakan saat Anda menyiapkan sinkronisasi dari lebih dari satu sumber tepercaya:
Jika metode Mengontrol sumber dalam sumber tepercaya utama digunakan, hanya administrator pusat yang dapat menghentikan dan melanjutkan sinkronisasi.
Jika metode Mengontrol sumber tepercaya dengan Kubernetes API digunakan, operator aplikasi dapat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya cakupan namespace yang mereka kerjakan.
Hentikan sinkronisasi
Bagian berikut menunjukkan cara menghentikan sinkronisasi untuk sumber kebenaran root dan sumber kebenaran yang tercakup dalam namespace. Untuk menghentikan Pengelola Penyesuai agar tidak mengembalikan perubahan, Anda harus menghentikan Pengelola Penyesuai terlebih dahulu dengan menjalankan perintah berikut:
1.20.0 atau yang lebih baru
kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
Perintah ini mengurangi jumlah replicas
di Deployment Reconciler Manager menjadi 0.
1.19.2 atau yang lebih lama
kubectl scale -n config-management-system deployment config-management-operator --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator \ && kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
Perintah tersebut melakukan hal berikut secara berurutan. Jika perintah gagal, perintah lainnya tidak akan berjalan.
- Kurangi jumlah
replicas
di Deployment Operator ConfigManagement menjadi 0. - Kurangi jumlah
replicas
di Deployment Reconciler Manager menjadi 0.
Menghentikan sinkronisasi dari sumber tepercaya root
Untuk menghentikan sinkronisasi cluster dari sumber tepercaya root, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Perintah ini mengurangi jumlah replicas
dalam root-reconciler
Deployment
menjadi 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Berhenti menyinkronkan dari sumber tepercaya cakupan namespace
Pilih tab Metode sumber tepercaya utama atau Metode Kubernetes API untuk melihat petunjuk yang relevan.
Metode sumber kebenaran utama
Jika metode Control namespace sources of truth in the root source of truth digunakan, administrator pusat dapat menjalankan perintah berikut untuk menghentikan sinkronisasi cluster dari sumber tepercaya namespace:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Perintah ini mengurangi jumlah replika di Deployment
ns-reconciler-NAMESPACE
menjadi 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Metode Kubernetes API
Jika metode Mengontrol sumber cakupan namespace dengan Kubernetes API digunakan, operator aplikasi dapat menghentikan sinkronisasi cluster dengan menjalankan perintah berikut:
Ambil konfigurasi
RepoSync
dan simpan untuk digunakan nanti saat Anda ingin melanjutkan sinkronisasi:kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
Ganti
NAMESPACE
dengan namespace objek RepoSync Anda.Hapus konfigurasi
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Perintah ini memicu Pengelola Penyesuai untuk menghapus penyesuai namespace (
ns-reconciler-NAMESPACE
) dari NAMESPACE dan menghentikan sinkronisasi.Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan webhook penerimaan agar tidak memblokir penyimpangan (opsional)
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan dan
menonaktifkan fungsi pencegahan
penyimpangan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl
.
Berhenti menyinkronkan dari semua sumber tepercaya
Untuk menghentikan sinkronisasi dari semua sumber tepercaya, termasuk sumber tepercaya root dan sumber yang tercakup dalam namespace, jalankan perintah berikut:
kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler
Perintah ini mengurangi jumlah replicas
semua Pod Reconciler yang berjalan di namespace
config-management-system
menjadi 0, dan menunggu hingga semua Pod Reconciler dihapus.
Semua Deployment Reconciler masih ada di cluster, tetapi tidak ada replika Reconciler atau proses apa pun yang bertanggung jawab untuk menyinkronkan yang tersedia, sehingga konfigurasi tidak disinkronkan dari sumber kebenaran.
Melanjutkan sinkronisasi
Bagian ini menunjukkan cara melanjutkan sinkronisasi untuk sumber kebenaran root dan untuk sumber yang tercakup dalam namespace.
Melanjutkan sinkronisasi dari sumber tepercaya root
Untuk melanjutkan sinkronisasi dari sumber tepercaya root, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Perintah ini menskalakan Deployment root-reconciler
menjadi 1 replika.
Melanjutkan sinkronisasi dari sumber yang tercakup dalam namespace
Pilih tab Metode sumber tepercaya utama atau Metode Kubernetes API untuk melihat petunjuk yang relevan.
Metode sumber kebenaran utama
Jika Anda menggunakan metode Mengontrol sumber yang tercakup dalam namespace di sumber tepercaya utama, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
Perintah ini menskalakan Deployment ns-reconciler-NAMESPACE menjadi 1 replika.
Metode Kubernetes API
Jika Anda menggunakan metode Mengontrol sumber yang tercakup dalam namespace dengan Kubernetes API, operator aplikasi dapat melanjutkan sinkronisasi dengan menerapkan kembali
repo-sync.yaml
yang berisi konfigurasi RepoSync
:
kubectl apply -f repo-sync.yaml
Perintah ini akan memicu Pengelola Penyesuai untuk membuat proses penyesuai namespace dan membuat Deployment ns-reconciler-NAMESPACE
.
Mengaktifkan dan menonaktifkan webhook penerimaan
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan dan
menonaktifkan fungsi pencegahan
penyimpangan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl
.
Melanjutkan sinkronisasi dari semua sumber tepercaya
1.20.0 atau yang lebih baru
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Perintah ini menskalakan Deployment Reconciler Manager menjadi 1 replika. Kemudian, Pengelola Penyesuai akan menskalakan penyesuai root dan penyesuai namespace ke jumlah replika yang sesuai.
1.19.2 atau yang lebih lama
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Perintah ini menskalakan Deployment Operator menjadi 1 replika. Operator kemudian menyadari bahwa Deployment Reconciler Manager diskalakan secara tidak benar dan menskalakannya ke jumlah replika yang sesuai. Pada akhirnya, Pengelola Rekonsiliasi akan menskalakan rekonsiliasi root dan rekonsiliasi namespace ke jumlah replika yang sesuai.