Skip to content

Instantly share code, notes, and snippets.

@pichuang
Last active February 19, 2021 02:29
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save pichuang/53aef7091245c55a91a5f0bd56fa3256 to your computer and use it in GitHub Desktop.
OCP 4.6.1 ETCD Backup Shell Script
#!/bin/bash
healthy=$(oc get etcd -o=jsonpath='{range .items[0].status.conditions[?(@.type=="EtcdMembersAvailable")]}{.message}{"\n"}')
if [ "$healthy" != "3 members are available" ]; then
echo "check to see if something is broken"
exit 1
fi
if [ ! -d ./backup ]; then mkdir ./backup; fi
backupdir=$(mktemp -dt "backup.XXXXXXXX" --tmpdir=./backup)
# get etcd's node name
etcd_node=`oc get pods -n openshift-etcd -l app=etcd -o=jsonpath='{.items[0].spec.nodeName}'`
# use ssh to remove old backup, take new backup, copy it off.
ssh -i ~/.ssh/dmz-ocp4-rsa core@$etcd_node 'sudo -E rm ./assets/backup/*'
ssh -i ~/.ssh/dmz-ocp4-rsa core@$etcd_node 'sudo -E /usr/local/bin/cluster-backup.sh ./assets/backup'
ssh -i ~/.ssh/dmz-ocp4-rsa core@$etcd_node 'sudo -E chmod 644 ./assets/backup/*'
scp -i ~/.ssh/dmz-ocp4-rsa core@$etcd_node:/home/core/assets/backup/* $backupdir
# root @ bastion.dmz.ocp4.local in ~/etcd_backup
$ ./backup.sh
17c4a1a1ba014fafa8427b777ee771b64da8583fdb7dfe4557854aaf2fb4b20a
etcdctl version: 3.4.9
API version: 3.4
found latest kube-apiserver-pod: /etc/kubernetes/static-pod-resources/kube-apiserver-pod-6
found latest kube-controller-manager-pod: /etc/kubernetes/static-pod-resources/kube-controller-manager-pod-8
found latest kube-scheduler-pod: /etc/kubernetes/static-pod-resources/kube-scheduler-pod-7
found latest etcd-pod: /etc/kubernetes/static-pod-resources/etcd-pod-3
{"level":"info","ts":1613700224.3697655,"caller":"snapshot/v3_snapshot.go:119","msg":"created temporary db file","path":"./assets/backup/snapshot_2021-02-19_020343.db.part"}
{"level":"info","ts":"2021-02-19T02:03:44.378Z","caller":"clientv3/maintenance.go:200","msg":"opened snapshot stream; downloading"}
{"level":"info","ts":1613700224.378489,"caller":"snapshot/v3_snapshot.go:127","msg":"fetching snapshot","endpoint":"https://192.168.76.1:2379"}
{"level":"info","ts":"2021-02-19T02:03:45.195Z","caller":"clientv3/maintenance.go:208","msg":"completed snapshot read; closing"}
{"level":"info","ts":1613700225.3950655,"caller":"snapshot/v3_snapshot.go:142","msg":"fetched snapshot","endpoint":"https://192.168.76.1:2379","size":"78 MB","took":1.025246878
}
{"level":"info","ts":1613700225.3956022,"caller":"snapshot/v3_snapshot.go:152","msg":"saved","path":"./assets/backup/snapshot_2021-02-19_020343.db"}
Snapshot saved at ./assets/backup/snapshot_2021-02-19_020343.db
snapshot db and kube resources are successfully saved to ./assets/backup
snapshot_2021-02-19_020343.db 100% 74MB 80.0MB/s 00:00
static_kuberesources_2021-02-19_020343.tar.gz 100% 65KB 40.1MB/s 00:00
# root @ bastion.dmz.ocp4.local in ~/etcd_backup
$
# root @ bastion.dmz.ocp4.local in ~/etcd_backup
$ ls -la ./backup/backup.SQziqAum
total 75764
drwx------. 2 root root 96 Feb 19 10:04 .
drwxr-xr-x. 3 root root 29 Feb 19 10:04 ..
-rw-r--r--. 1 root root 77508640 Feb 19 10:04 snapshot_2021-02-19_020343.db
-rw-r--r--. 1 root root 66111 Feb 19 10:04 static_kuberesources_2021-02-19_020343.tar.gz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment