Dalam beberapa situasi, Anda mungkin perlu menghentikan sinkronisasi Config Sync dengan cepat konfigurasi dari sumber kebenaran Anda. Salah satu skenario tersebut adalah jika seseorang melakukan commit konfigurasi yang valid tapi salah ke sumbernya, dan Anda ingin membatasi efeknya cluster yang sedang berjalan sementara konfigurasi dihapus atau diperbaiki.
Halaman ini ditujukan untuk admin IT dan Operator yang mengelola siklus hidup infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut tentang peran dan contoh tugas yang kami rujuk dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise yang umum.
Prasyarat
Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan hal berikut
Izin RBAC Kubernetes di namespace config-management-system
di semua
cluster yang ingin Anda hentikan sinkronisasinya:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Hentikan dan lanjutkan sinkronisasi dari sumber tepercaya
Bagian ini ditujukan untuk satu sumber tepercaya dan menunjukkan cara menghentikan dengan cepat sinkronisasi, serta cara melanjutkan sinkronisasi saat masalahnya diperbaiki. Untuk mempelajari cara menghentikan sinkronisasi untuk lebih dari satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.
Hentikan sinkronisasi
Untuk berhenti menyinkronkan untuk satu cluster, jalankan perintah berikut, yang disediakan sebagai satu perintah untuk kenyamanan 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, sisa perintah perintah tidak berjalan.
- Kurangi jumlah
replicas
di Deployment Operator ConfigManagement menjadi 0. - Kurangi jumlah
replicas
dari semua Deployment yang berjalan di namespaceconfig-management-system
menjadi 0. Rangkaian Deployment yang tepat yang terpengaruh bervariasi menurut versi produk.
Semua deployment masih dalam cluster, tetapi tidak ada replika Operator atau proses apa pun yang bertanggung jawab untuk menyinkronkan sehingga konfigurasi tidak disinkronkan dari sumber yang terpercaya.
Untuk memverifikasi bahwa semua proses telah dihentikan, gunakan metode dan pastikan semua Deployment memiliki nol replika:
kubectl get -n config-management-system deployment
Jika Anda perlu berhenti menyinkronkan 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. Tujuan
Operator kemudian memperhatikan 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.
Hentikan dan lanjutkan sinkronisasi dari lebih dari satu sumber tepercaya
Bagian ini ditujukan untuk lebih dari satu sumber tepercaya dan menunjukkan cara menghentikan sementara dan melanjutkan sinkronisasi dari lebih dari satu sumber yang terpercaya. Untuk mempelajari cara menghentikan sinkronisasi untuk satu sumber yang terpercaya, lihat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya.
Hanya administrator pusat yang dapat berhenti menyinkronkan di sumber root tepercaya.
Kemampuan untuk berhenti menyinkronkan di lebih dari satu sumber tepercaya bergantung pada metode konfigurasi digunakan saat Anda menyiapkan sinkronisasi dari beberapa sumber tepercaya:
Jika metode Sumber kontrol dalam sumber tepercaya digunakan, administrator pusat adalah satu-satunya yang dapat menghentikan dan melanjutkan sinkronisasi.
Jika metode Kontrol sumber kebenaran dengan Kubernetes API digunakan, operator aplikasi dapat menghentikan dan melanjutkan sinkronisasi dari cakupan sumber-sumber kebenaran yang mereka kerjakan.
Hentikan sinkronisasi
Bagian berikut menunjukkan cara berhenti menyinkronkan untuk sumber kebenaran root dan sumber kebenaran cakupan namespace. Untuk menghentikan Pengelola Rekonsiliasi agar tidak mengembalikan ubah, Anda harus menghentikan Pengelola Rekonsiliasi 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, sisa perintah perintah tidak berjalan.
- Kurangi jumlah
replicas
di Deployment Operator ConfigManagement menjadi 0. - Kurangi jumlah
replicas
di Deployment Reconciler Manager menjadi 0.
Hentikan sinkronisasi dari sumber tepercaya
Untuk menghentikan sinkronisasi cluster dari sumber kebenaran, administrator pusat dapat jalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Perintah ini mengurangi jumlah replicas
di root-reconciler
Deployment
menjadi 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan sinkronisasi dari sumber tepercaya cakupan namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihatnya instruksi yang relevan.
Metode sumber kebenaran
Jika metode Kontrol sumber kebenaran namespace dalam sumber kebenaran utama digunakan, administrator pusat dapat menjalankan perintah berikut untuk menghentikan menyinkronkan dari sumber kebenaran namespace:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Perintah tersebut mengurangi jumlah replika di
Deployment ns-reconciler-NAMESPACE
ke 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Metode Kubernetes API
Jika 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 Anda RepoSync.Hapus konfigurasi
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Perintah ini memicu Reconciler Manager untuk menghapus namespace rekonsiliasi (
ns-reconciler-NAMESPACE
) dari NAMESPACE dan berhenti menyinkronkan.Jika Anda perlu menghentikan sinkronisasi pada beberapa cluster, jalankan perintah untuk setiap cluster.
Hentikan webhook penerimaan agar tidak memblokir penyimpangan (opsional)
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan dan
nonaktifkan penyimpangan
fungsi pencegahan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl
.
Hentikan sinkronisasi dari semua sumber tepercaya
Untuk berhenti menyinkronkan dari semua sumber kebenaran, termasuk sumber kebenaran 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 tersebut mengurangi jumlah replicas
semua Pod Rekonsiliasi yang berjalan di
config-management-system
ke 0, dan tunggu hingga semua Pod Reconciler dihapus.
Semua Deployment Rekonsiliasi masih dalam cluster, tetapi tidak ada replika Rekonsiliasi atau proses apa pun yang bertanggung jawab untuk menyinkronkan sehingga konfigurasi tidak disinkronkan dari sumber yang terpercaya.
Lanjutkan sinkronisasi
Bagian ini menunjukkan kepada Anda cara melanjutkan sinkronisasi untuk sumber kebenaran root dan untuk sumber cakupan namespace.
Lanjutkan sinkronisasi dari sumber root tepercaya
Untuk melanjutkan sinkronisasi dari sumber kebenaran, 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 dengan cakupan namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihatnya instruksi yang relevan.
Metode sumber kebenaran
Jika Anda menggunakan metode Kontrol sumber cakupan namespace di sumber kebenaran root, 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 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 Pengelola Rekonsiliasi untuk membuat rekonsiliasi namespace
proses dan buat Deployment ns-reconciler-NAMESPACE
.
Mengaktifkan dan menonaktifkan webhook penerimaan
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan dan
nonaktifkan penyimpangan
fungsi pencegahan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl
.
Lanjutkan sinkronisasi dari semua sumber kebenaran
Untuk melanjutkan sinkronisasi dari semua sumber kebenaran, jalankan perintah berikut:
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Perintah ini menskalakan Deployment Operator menjadi 1 replika. Tujuan Operator kemudian memperhatikan bahwa Deployment Reconciler Manager diskalakan dengan tidak benar dan menskalakannya ke jumlah replika yang sesuai. Pada akhirnya, Pengelola Rekonsiliasi menskalakan rekonsiliasi root dan namespace untuk jumlah replika yang sesuai.