Dalam beberapa situasi, Anda mungkin perlu segera menghentikan Config Sync agar tidak menyinkronkan konfigurasi dari sumber tepercaya. Salah satu skenario tersebut adalah jika seseorang meng-commit konfigurasi yang valid secara sintaksis tetapi salah ke sumber, dan Anda ingin membatasi efeknya pada cluster yang sedang berjalan saat konfigurasi dihapus atau diperbaiki.
Prasyarat
Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan izin Kubernetes RBAC berikut
dalam namespace config-management-system
pada semua
cluster tempat Anda ingin berhenti menyinkronkan:
- 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 sinkronisasi dengan cepat, dan cara melanjutkan sinkronisasi jika masalah telah diperbaiki. Guna mempelajari cara berhenti menyinkronkan untuk lebih dari satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.
Hentikan sinkronisasi
Untuk berhenti menyinkronkan satu cluster, jalankan perintah berikut, yang disediakan sebagai satu perintah untuk memudahkan Anda, tetapi juga dapat dijalankan secara terpisah:
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 yang tersisa 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. Kumpulan Deployment yang terpengaruh akan bervariasi menurut versi produk.
Semua deployment masih berada dalam cluster, tetapi tidak ada replika Operator atau proses apa pun yang bertanggung jawab untuk sinkronisasi yang tersedia, 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 berhenti menyinkronkan pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Lanjutkan sinkronisasi
Untuk melanjutkan sinkronisasi untuk satu cluster, jalankan perintah berikut:
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Perintah ini menskalakan Deployment Operator menjadi 1 replika. Operator kemudian menemukan bahwa Pod di Deployment namespace config-management-system
tidak diskalakan dengan 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 kebenaran {i>root<i}.
Kemampuan untuk berhenti menyinkronkan 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 kebenaran utama digunakan, administrator pusat adalah satu-satunya yang dapat menghentikan dan melanjutkan sinkronisasi.
Jika metode Control a source of truth with the 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 root kebenaran dan sumber kebenaran cakupan namespace. Agar Reconciler Manager tidak mengembalikan perubahan, Anda harus menghentikan Reconciler Manager terlebih dahulu dengan menjalankan perintah berikut:
kubectl -n config-management-system scale deployment config-management-operator --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator --timeout=60s \ && 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 yang tersisa tidak akan berjalan.
- Kurangi jumlah
replicas
di Deployment Operator ConfigManagement menjadi 0. - Kurangi jumlah
replicas
di Deployment Manager Reconciler menjadi 0.
Berhenti menyinkronkan dari sumber kebenaran root
Untuk menghentikan sinkronisasi cluster dari sumber kebenaran root, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Perintah ini mengurangi jumlah replicas
di Deployment root-reconciler
menjadi 0.
Jika Anda perlu berhenti menyinkronkan pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Berhenti menyinkronkan dari sumber tepercaya cakupan namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihat petunjuk yang relevan.
Metode root source of truth
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 kebenaran 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 berhenti menyinkronkan pada 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 Reconciler Manager untuk menghapus rekonsiler namespace (
ns-reconciler-NAMESPACE
) dari NAMESPACE dan menghentikan sinkronisasi.Jika Anda perlu berhenti menyinkronkan pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan webhook akses masuk memblokir penyimpangan (opsional)
Secara default, webhook akses masuk Config Sync dinonaktifkan, dan Anda dapat enable serta menonaktifkan fungsi pencegahan penyimpangan yang disediakan oleh webhook akses masuk menggunakan Google Cloud CLI atau kubectl
.
Berhenti menyinkronkan dari semua sumber tepercaya
Untuk berhenti menyinkronkan dari semua sumber tepercaya, termasuk sumber root tepercaya dan sumber cakupan 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 berada dalam cluster, tetapi tidak ada replika Reconcilers atau proses apa pun yang bertanggung jawab untuk sinkronisasi yang tersedia, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.
Lanjutkan sinkronisasi
Bagian ini menunjukkan cara melanjutkan sinkronisasi untuk sumber root tepercaya dan untuk sumber cakupan namespace.
Melanjutkan sinkronisasi dari sumber kebenaran root
Untuk melanjutkan sinkronisasi dari sumber kebenaran 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 cakupan namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihat petunjuk yang relevan.
Metode root source of truth
Jika Anda menggunakan metode Mengontrol sumber cakupan namespace di root source of truth, 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 ke 1 replika.
Metode Kubernetes API
Jika Anda menggunakan metode Mengontrol sumber cakupan 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 memicu tne Reconciler Manager untuk membuat proses rekonsiler namespace dan membuat Deployment ns-reconciler-NAMESPACE
.
Mengaktifkan dan menonaktifkan webhook akses masuk
Secara default, webhook akses masuk Config Sync dinonaktifkan, dan Anda dapat enable serta menonaktifkan fungsi pencegahan penyimpangan yang disediakan oleh webhook akses masuk menggunakan Google Cloud CLI atau kubectl
.
Lanjutkan sinkronisasi dari semua sumber tepercaya
Untuk melanjutkan sinkronisasi dari semua sumber tepercaya, jalankan perintah berikut:
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 Pengelola Rekonsiler tidak diskalakan dengan benar dan menskalakannya ke jumlah replika yang sesuai. Pada akhirnya, Reconciler Manager akan menskalakan rekonsiler root dan rekonsiler namespace ke jumlah replika yang sesuai.