From d776c5453480e965d1615d81180eea5e8187be4f Mon Sep 17 00:00:00 2001 From: 24sama Date: Tue, 22 Nov 2022 09:48:39 +0800 Subject: [PATCH] [release-2.2] Fix etcd script to delete other files when there is no space left on device Signed-off-by: 24sama --- apis/kubekey/v1alpha2/default.go | 2 +- pkg/bootstrap/os/tasks.go | 2 ++ pkg/etcd/tasks.go | 2 +- pkg/etcd/templates/backup_script.go | 7 ++++++- pkg/etcd/templates/backup_service.go | 4 ++-- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/apis/kubekey/v1alpha2/default.go b/apis/kubekey/v1alpha2/default.go index 267a91edf..735bc17f0 100644 --- a/apis/kubekey/v1alpha2/default.go +++ b/apis/kubekey/v1alpha2/default.go @@ -73,7 +73,7 @@ const ( K8s = "k8s" Registry = "registry" DefaultEtcdBackupDir = "/var/backups/kube_etcd" - DefaultEtcdBackupPeriod = 30 + DefaultEtcdBackupPeriod = 1440 DefaultKeepBackNumber = 5 DefaultEtcdBackupScriptDir = "/usr/local/bin/kube-scripts" DefaultJoinCIDR = "100.64.0.0/16" diff --git a/pkg/bootstrap/os/tasks.go b/pkg/bootstrap/os/tasks.go index feac97e10..c93849545 100644 --- a/pkg/bootstrap/os/tasks.go +++ b/pkg/bootstrap/os/tasks.go @@ -204,6 +204,8 @@ func (r *RemoveNodeFiles) Execute(runtime connector.Runtime) error { nodeFiles := []string{ "/etc/kubernetes", "/etc/systemd/system/etcd.service", + "/etc/systemd/system/backup-etcd.service", + "/etc/systemd/system/backup-etcd.timer", "/var/log/calico", "/etc/cni", "/var/log/pods/", diff --git a/pkg/etcd/tasks.go b/pkg/etcd/tasks.go index d86028baf..ab9b75985 100644 --- a/pkg/etcd/tasks.go +++ b/pkg/etcd/tasks.go @@ -391,7 +391,7 @@ func (b *BackupETCD) Execute(runtime connector.Runtime) error { "Hostname": runtime.RemoteHost().GetName(), "Etcdendpoint": fmt.Sprintf("https://%s:2379", runtime.RemoteHost().GetInternalAddress()), "Backupdir": b.KubeConf.Cluster.Etcd.BackupDir, - "KeepbackupNumber": b.KubeConf.Cluster.Etcd.KeepBackupNumber, + "KeepbackupNumber": b.KubeConf.Cluster.Etcd.KeepBackupNumber + 1, "EtcdBackupScriptDir": b.KubeConf.Cluster.Etcd.BackupScriptDir, }, } diff --git a/pkg/etcd/templates/backup_script.go b/pkg/etcd/templates/backup_script.go index 11e889c84..7731b812b 100644 --- a/pkg/etcd/templates/backup_script.go +++ b/pkg/etcd/templates/backup_script.go @@ -26,6 +26,11 @@ import ( var EtcdBackupScript = template.Must(template.New("etcd-backup.sh").Parse( dedent.Dedent(`#!/bin/bash +set -o errexit +set -o nounset +set -o pipefail + + ETCDCTL_PATH='/usr/local/bin/etcdctl' ENDPOINTS='{{ .Etcdendpoint }}' ETCD_DATA_DIR="/var/lib/etcd" @@ -52,6 +57,6 @@ export ETCDCTL_API=3;$ETCDCTL_PATH --endpoints="$ENDPOINTS" snapshot save $BACKU sleep 3 -cd $BACKUP_DIR/../;ls -lt |awk '{if(NR > '$KEEPBACKUPNUMBER'){print "rm -rf "$9}}'|sh +cd $BACKUP_DIR/../ && ls -lt |awk '{if(NR > '$KEEPBACKUPNUMBER'){print "rm -rf "$9}}'|sh `))) diff --git a/pkg/etcd/templates/backup_service.go b/pkg/etcd/templates/backup_service.go index a62fb0720..d2b25ddb9 100644 --- a/pkg/etcd/templates/backup_service.go +++ b/pkg/etcd/templates/backup_service.go @@ -42,7 +42,7 @@ Description=Timer to backup ETCD {{- if .OnCalendarStr }} OnCalendar={{ .OnCalendarStr }} {{- else }} -OnCalendar=*-*-* *:*/30:00 +OnCalendar=*-*-* 02:00:00 {{- end }} Unit=backup-etcd.service [Install] @@ -65,7 +65,7 @@ func BackupTimeOnCalendar(period int) string { onCalendar = fmt.Sprintf("*-*-* 00/%s:%s:00", hour, minute) } } else { - onCalendar = "*-*-* 00:00:00" + onCalendar = "*-*-* 02:00:00" } return onCalendar }