k8s-部署velero去备份etcd

前期环境说明:
velero备份必须存储在对象存储里,这里用minio来做对象存储。

一 minio部署

# docker pull  minio/minio:RELEASE.2022-04-12T06-55-35Z
# mkdir -p /data/minio

#创建minio容器,如果不指定,则默认用户名与密码为 minioadmin/minioadmin,可以通过环境变量自定义,如下:
# docker run --name minio \
-p 9000:9000 \
-p 9999:9999 \
-d --restart=always \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /data/minio/data:/data \
minio/minio:RELEASE.2022-04-12T06-55-35Z server /data \
--console-address '0.0.0.0:9999'

访问http:ip:9999
admin 密码 12345678
登录成功之后,去创建一个存储桶velerodata

二 部署velero客户端

velero分为 客户端和服务端。 其中 velero服务端以pod形式运行在k8s里。

1 下载velero客户端

root@k8s-master1:/usr/local/src# wget https://github.com/vmware-tanzu/velero/releases/download/v1.8.1/velero-v1.8.1-linux-amd64.tar.gz
root@k8s-master1:/usr/local/src# tar xvf velero-v1.8.1-linux-amd64.tar.gz
root@k8s-master1:/usr/local/src# cp velero-v1.8.1-linux-amd64/velero  /usr/local/bin/
root@k8s-master1:/usr/local/src# velero  --help

2 配置velero认证环境

root@k8s-master1:~# mkdir  /data/velero -p
root@k8s-master1:/data/velero#

3认证文件:为了访问对象存储

root@k8s-master1:/data/velero# vim velero-auth.txt
[default]
aws_access_key_id = admin
aws_secret_access_key = 12345678

三 证书签发

打通velero和k8s api的通信

1 准备user-csr文件

cat  awsuser-csr.json
{
"CN": "awsuser",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}

2准备证书签发环境:

2.1 下载证书签发工具
root@k8s-master1:/data/velero# apt install golang-cfssl
https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl_1.6.1_linux_amd64
https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssljson_1.6.1_linux_amd64
https://github.com/cloudflare/cfssl/releases/download/v1.6.1/cfssl-certinfo_1.6.1_linux_amd64
root@k8s-master1:/data/velero# mv cfssl-certinfo_1.6.1_linux_amd64 cfssl-certinfo
root@k8s-master1:/data/velero# mv cfssl_1.6.1_linux_amd64 cfssl
root@k8s-master1:/data/velero# mv cfssljson_1.6.1_linux_amd64 cfssljson
root@k8s-master1:/data/velero# cp cfssl-certinfo cfssl cfssljson /usr/local/bin/
root@k8s-master1:/data/velero# chmod  a+x /usr/local/bin/cfssl*
2.2执行证书签发:给awsuser用户签发证书
root@k8s-master1:/data/velero# /usr/local/bin/cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem -ca-key=/etc/kubernetes/ssl/ca-key.pem -config=/etc/kubeasz/clusters/k8s-cluster1/ssl/ca-config.json -profile=kubernetes ./awsuser-csr.json | cfssljson -bare awsuser
2.3 验证证书
root@k8s-master1:/data/velero# ll awsuser*
-rw-r--r-- 1 root root  220 Apr 14 12:29 awsuser-csr.json
-rw------- 1 root root 1679 Apr 14 12:30 awsuser-key.pem
-rw-r--r-- 1 root root  997 Apr 14 12:30 awsuser.csr
-rw-r--r-- 1 root root 1387 Apr 14 12:30 awsuser.pem
2.4 分发证书到api-server证书路径
root@k8s-master1:/data/velero# cp awsuser-key.pem /etc/kubernetes/ssl/
root@k8s-master1:/data/velero# cp awsuser.pem /etc/kubernetes/ssl/
2.5 生成集群认证config文件:就是awsuser.kubeconfig
export KUBE_APISERVER="https://172.31.7.100:6443"
kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/ssl/ca.pem --embed-certs=true --server=${KUBE_APISERVER} --kubeconfig=./awsuser.kubeconfig
2.6设置客户端证书认证:
kubectl config set-credentials awsuser \
--client-certificate=/etc/kubernetes/ssl/awsuser.pem --client-key=/etc/kubernetes/ssl/awsuser-key.pem --embed-certs=true --kubeconfig=./awsuser.kubeconfig
2.7 设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes --user=awsuser --namespace=velero-system --kubeconfig=./awsuser.kubeconfig
2.8 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=awsuser.kubeconfig

最终awsuser.kubeconfig 这个文件创建完成。

2.9 k8s集群中创建awsuser账户

kubectl create clusterrolebinding awsuser --clusterrole=cluster-admin --user=awsuser

3.0 创建namespace

kubectl create ns velero-system

四 部署velero服务端

1 安装

velero --kubeconfig  ./awsuser.kubeconfig install --provider aws --plugins velero/velero-plugin-for-aws:v1.3.1 --bucket velerodata  --secret-file ./velero-auth.txt --use-volume-snapshots=false --namespace velero-system  --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://172.31.7.102:9000  # 对象存储的地址minio的地址

2 验证安装 查看pod和日志

root@k8s-master1:/data/velero# kubectl  describe pod velero-6755cb8697-phfsr -n velero-system

[root@k8s-master1 velero]# kubectl get pod -n velero-system
NAME                      READY   STATUS    RESTARTS   AGE
velero-6755cb8697-sw2qs   1/1     Running   0          3m12s

3备份

DATE=`date +%Y%m%d%H%M%S`
velero backup create linux66-ns-backup-${DATE} --include-namespaces linux66 --kubeconfig=./awsuser.kubeconfig --namespace velero-system
# 备份必须指定时间戳,名字不能重复。 指定namespace去备份--include-namespaces

备份完成之后,会在对象存储里多出一个目录

4 还原

velero restore create --from-backup linux66-ns-backup-20220421111145 --wait --kubeconfig=./awsuser.kubeconfig --namespace velero-system
# 注意awsuser.kubeconfig  这个文件的路径,和你备份文件的名字。

还原结束后也会多出一个restore的目录

5 卸载服务端

如果安装的时候,发现配置文件写的不对,然后卸载即可。直接删除pod和deployment是不管用的。

velero uninstall  --namespace velero-system
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值