EN: Read in English
Dunia K9: Pentadbir Kluster
Sandaran dan pemulihan etcd
Anda akan belajar: fotokopi buku pesanan dengan etcdctl, dan pulihkan objek yang hilang dengan etcdutl.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Kubernetes 1.37 pada 1 Nov 2026
Masalahnya
Pukul 2 pagi, seseorang padam Deployment shop. YAML-nya tak pernah disimpan dalam Git. Apa yang masih boleh pulihkannya?
Pilih satu jawapan.
Tengok
kind-dev namespace defaultetcd snapshot (salinan buku pesanan) (etcd snapshot): Fotokopi buku pesanan (etcd) pada satu saat. Simpan di luar kluster, di tempat selamat. ialah fotokopi buku pesanan. etcdctl minta salinan itu daripada etcd yang sedang berjalan. Simpan salinan itu di luar kluster.
Cuba
Bina arahan simpan. Setiap kepingan tunjuk maksudnya.
Ketik kepingan ikut turutan yang betul.
Petunjuk
Alat, lokasi, tiga flag sijil, kemudian snapshot save dan failnya.Tengok
kind-dev namespace defaultPerangkap sebenar: tanpa flag sijil, etcdctl cetak satu baris dan tunggu selamanya. Tekan Ctrl+C. Kemudian tambah --cacert, --cert dan --key.
Cuba
Giliran anda. Buka node pejabat, simpan snapshot, kemudian semak.
kind-dev namespace defaultdev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBuka- shop·9448k
- shop·q725x
dev-worker2Buka- shop·ddlcm
etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /opt/backup.db
etcdutl --write-out=table snapshot status /opt/backup.dbTeka
Pada etcd 3.7, anda taip etcdctl snapshot status /opt/backup.db. Apa berlaku?
Pilih satu jawapan.
Cuba
Shop dipadam selepas snapshot diambil. etcdutl: Alat untuk fail etcd: ia semak dan pulihkan snapshot. etcdctl pula bercakap dengan etcd yang sedang berjalan. pulihkan salinan ke folder baharu yang kosong. Kemudian tunjukkan etcd ke situ. Bahaya: objek yang lebih baharu hilang.
kind-dev namespace defaultdev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBukaTiada dulang di sini.
dev-worker2BukaTiada dulang di sini.
etcdutl --data-dir /var/lib/etcd-restore snapshot restore /opt/backup.db
sed -i 's#/var/lib/etcd$#/var/lib/etcd-restore#' /etc/kubernetes/manifests/etcd.yamlSemak
Susun langkah pemulihan ikut urutan.
Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.
- Tunggu: etcd mula semula, kemudian API menjawab
- kubectl get deployments
- etcdutl snapshot status: salinan itu sihat?
- Tunjukkan etcd.yaml ke folder baharu
- etcdutl --data-dir <folder baharu> snapshot restore
Anda berjaya!
Kini anda boleh sandarkan etcd dan pulihkan objek yang hilang.
Nak tahu lebih (pilihan)
Node kind tiada etcdctl. Di sana, jalankannya dalam pod etcd. Hanya /var/lib/etcd dan sijil dikongsi dengan node itu.
kind-dev namespace defaultMisi sebenar
kubectl -n kube-system exec etcd-<cluster>-control-plane -- etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /var/lib/etcd/backup.dbdocker cp <cluster>-control-plane:/var/lib/etcd/backup.db ./backup.db
0 daripada 2 langkah siap · Tanda anda disimpan.
English
At 2 a.m. someone deleted the shop’s Deployment. Its YAML was never saved in Git. What could still bring it back?
An etcd snapshot is a photocopy of the order book. etcdctl asks the running etcd for it. Keep the copy off the cluster.
Build the save command. Each piece shows what it means.
Trap: without certificate flags, etcdctl prints one line, then waits forever. Press Ctrl+C. Then add --cacert, --cert and --key.
Your turn. Open the office node, save a snapshot, then check it.
etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key snapshot save /opt/backup.db
etcdutl --write-out=table snapshot status /opt/backup.db
On etcd 3.7, you type etcdctl snapshot status /opt/backup.db. What happens?
The shop was deleted after the snapshot. etcdutl restores the copy into a new, empty folder. Then point etcd there. Danger: newer objects are lost.
etcdutl --data-dir /var/lib/etcd-restore snapshot restore /opt/backup.db
sed -i 's#/var/lib/etcd$#/var/lib/etcd-restore#' /etc/kubernetes/manifests/etcd.yaml
Put a restore in order.
You can now back up etcd and restore a lost object.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Kubernetes: operating etcd clusters (backup and restore) · etcd 3.7: disaster recovery
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?