Menghentikan dan melanjutkan sinkronisasi konfigurasi

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.

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

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

  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 objek RepoSync Anda.

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

Langkah berikutnya