Menghentikan dan melanjutkan sinkronisasi konfigurasi

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.

  1. Kurangi jumlah replicas di Deployment Operator ConfigManagement menjadi 0.
  2. Kurangi jumlah replicas dari semua Deployment yang berjalan di namespace config-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.

  1. Kurangi jumlah replicas di Deployment Operator ConfigManagement menjadi 0.
  2. 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:

  1. 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.

  2. 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.

Langkah selanjutnya