Velero对k8s集群服务备份迁移

350 阅读1分钟

1. 前置:

1.1 思路:

针对单个namespace进行应用备份,保存到后端对象存储服务中。供可连接该对象存储的velero服务进行服务恢复

1.2 准备:

1. k8s集群
2. velero服务二进制包:
    2.1 包地址:
    
    2.2 本地配置minio密钥:
    
    cat credentials-velero
    aws_access_key_id = minio 
    aws_secret_access_key = minio123 
    
    3. 拷贝二进制velero工具:
    cp velero /usr/bin/

3. 部署minio服务镜像
4. 部署velero服务镜像

2. 部署:

2.1 部署minio:

    # 没有pvc请先创建
    kubectl apply -f examples/minio/pvc.yaml
    kubectl apply -f examples/minio/00-minio-deployment.yaml

2.2 部署velero服务:

  # 集群内通过svc连接minio,集群外连接换成nodeport:s3Url=http://192.168.1.155:19000
  velero install \
     --image images.houchangzao.com/devops/velero:v1.3.2 \
     --namespace velero \
     --provider aws \
     --plugins images.houchangzao.com/devops/velero-plugin-for-aws:v1.0.0 \
     --bucket velero \
     --secret-file ./credentials-velero \
     --use-volume-snapshots=false \
     --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://minio.velero.svc:9000

2.3 查询服务状态:

    1. kubectl get po -n velero
    2. kubectl get svc -n velero

image.png

image.png

3. 备份:

# 除了某个(些)namespace
    velero backup create all-namespace-bak --exclude-namespaces kube-system,velero
# 备份某个namespace
    velero backup create nginx-backup --include-namespaces nginx-example

4. 恢复:

    velero restore create --from-backup nginx-backup --wait
    velero restore create --from-backup all-namespace-bak --wait

5. 其他辅助命令:

# 对备份的操作
velero backup *
# 如创建,查询,详情
velero restore create
velero restore get
velero restore describe xxx
# 对恢复的操作
velero restore *

6. 卸载velero:

kubectl delete ns velero 
kubectl delete clusterrolebinding velero 
kubectl delete crds -l component=velero