ETCD_VER=v3.5.6
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test
curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1
cp /tmp/etcd-download-test/etcdctl /usr/local/bin/
export ETCDCTL_API=3
/usr/local/bin/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 member list
export ETCDCTL_API=3
/usr/local/bin/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 etcdbak_`date +%Y%m%d%H`.db
0 */2 * * * /usr/local/bin/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 /mnt/etcdbak/etcdbak_`date +"\%Y\%m\%d\%H"`.db
0 */3 * * * cp -r /var/lib/etcd /mnt/etcdbak/etcdbak-`date +"\%Y\%m\%d\%H"`
0 4 * * * find /mnt/etcdbak/* -name "etcdbak*" -mtime +20 |xargs rm -rf
ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot restore /root/etcdbak.db \
--name kube-38 \
--initial-cluster="kube-38=https://172.16.100.38:2380,kube-39=https://172.16.100.39:2380,kube-40=https://172.16.100.40:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://172.16.100.38:2380 \
--data-dir=/var/lib/etcd
ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot restore /root/etcdbak.db \
--name kube-39 \
--initial-cluster="kube-38=https://172.16.100.38:2380,kube-39=https://172.16.100.39:2380,kube-40=https://172.16.100.40:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://172.16.100.39:2380 \
--data-dir=/var/lib/etcd
ETCDCTL_API=3 /usr/local/bin/etcdctl snapshot restore /root/etcdbak.db \
--name kube-40 \
--initial-cluster="kube-38=https://172.16.100.38:2380,kube-39=https://172.16.100.39:2380,kube-40=https://172.16.100.40:2380" \
--initial-cluster-token=etcd-cluster \
--initial-advertise-peer-urls=https://172.16.100.40:2380 \
--data-dir=/var/lib/etcd
export NODE_IPS="172.16.100.38 172.16.100.39 172.16.100.40"
for n in ${NODE_IPS};do /usr/local/bin/etcdctl --endpoints=https://${n}:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --write-out=table endpoint status;done